TikTok Scraper API — Videos, Profiles, Comments | FetchLayer
Unofficial Third-party API
8 endpoints live

TikTok data.
Without the scraping.

Profiles & exact counts Account videos & search Hashtag feeds Video comments Transcripts — 68% of videos

One key returns profiles with exact follower counts, an account’s videos, keyword search, hashtag feeds, a video’s comments and its transcript — every video in the same typed shape.

Start building free
Free tier included No credit card No scraper maintenance

Trusted by developers shipping real products.

2,555,790 served today

POST /tiktok/user-videos
200 OK

Request

$ curl -X POST \
  https://api.fetchlayer.dev/tiktok/user-videos \
  -H "Authorization: Bearer ss-your-key" \
  -H "Content-Type: application/json" \
  -d '{"username":"@nasa","limit":35,
      "sort":"popular"}'

Response

{
  "profile": {
    "uniqueId": "nasa",
    "verified": true,
    "stats": { "followerCount": 1719888,
      "heartCount": 8962614, "videoCount": 45 }
  },
  "videos": [{
    "id": "7686148096895569165",
    "description": "Turns out you can dance in space!",
    "createdAt": "2026-09-16T15:00:41.000Z",
    "durationSeconds": 58, "isPhotoPost": false,
    "stats": { "playCount": 27600, "diggCount": 4367,
      "commentCount": 173, "shareCount": 104 },
    "roundedStats": ["playCount"],
    "music": { "title": "original sound - NASA" }
  }, …34 more],
  "hasMore": true, "pagesFetched": 1
}

Used by developers at

Individual developers or teams — not official partnerships

Built for feedback workflows

Fetch the public signal. Use it wherever your team works.

Exact counts, not rounded ones

TikTok publishes both the rounded figure on the page and the precise one. This returns the precise pair, so a follower count is 1719888 rather than 1.7M — which is the difference between tracking week-to-week movement and watching a number that never changes.

One video shape on every route

A search result, an account’s post and a hashtag entry are the same record: caption, timestamp, duration, cover, assets, play, like, comment, share, save and repost counts, author, music, hashtags, mentions, ad flag and language. Write the mapping once.

Hashtags and mentions, already separated

Every video arrives with its hashtags and the accounts it mentions as their own lists, as TikTok tags them on the post, each with its position in the caption. A tag written inside a word never turns up as a false positive, and a tag TikTok recorded is never missed.

Comments, with the commenter behind each one

Text, timestamps, like and reply counts, pinned and author flags, and the profile of whoever wrote it — so a comment list comes back as people you can segment, not strings you have to match up later.

Transcripts, with the translation for free

A video’s spoken words as full text plus segments timed to the second — and a video posted in another language usually carries an English track alongside its original, already timed, for the same one credit. TikTok does not transcribe everything: a video with no transcript comes back as a normal 200 saying so, and a photo carousel has no audio to transcribe at all.

Videos without the watermark

Every video carries a downloadUrl that delivers it as an MP4 without the TikTok watermark, with Range support so players can seek — and every cover and photo-carousel frame has one too, still working after TikTok’s own links expire.

Hashtag feeds, sized before you read them

A tag comes back with its own total view and video counts across TikTok alongside the videos posted under it — so you can tell a trend worth reading from one worth skipping before you spend a credit paging through it.

Any link, resolved for free

Hand /resolve-url a URL someone pasted and it tells you whether it is a video, an account, a hashtag, a sound or a search, plus the id, handle, tag or query it encodes. It costs nothing.

FetchLayer Research Chat

Size up a creator or a hashtag—then export it to CSV.

Prefer not to write code? Paste a handle or a hashtag into FetchLayer Research Chat, ask how the account is really performing or what a trend looks like, and get a clean table for the next campaign review.

  • ✓Ask questions in plain English
  • ✓Analyze themes, sentiment, and pain points
  • ✓Download the structured results as CSV or JSON
Analyse TikTok in Chat

No code or setup required · Uses your FetchLayer credits

TikTok research

Compare these 6 TikTok creators: exact followers, median plays per video, engagement rate, how often they post, and what share of their posts are marked as promotional. Export as CSV.

Y

I pulled each account and its 35 most recent videos. The table gives the exact follower count, median and best play count, the like, comment and share rates against plays, posting cadence, and the share of posts flagged as ads. It is ready to download.

tiktok-creator-comparison.csv

6 creators · 9 columns · ready to download

CSV

From raw feedback to action

One request is the start of the workflow.

Store the structured response, run it on a schedule, pass it to an LLM, or feed it into the system your team already uses. FetchLayer handles retrieval so you can focus on the outcome.

  1. 01

    Point at an account, term or tag

    A handle, a profile URL, a keyword or a hashtag. If all you have is a link someone pasted, run it through /resolve-url first — that is free.

  2. 02

    Read the posts

    One request returns up to 500 videos across up to 20 pages, each with its full stats block, author and music. The account’s profile comes back with its videos, so that is one call, not two.

  3. 03

    Go deeper where it matters

    Pull one video in full, or read its comments to find out what people actually said. Store what you read: counts are as at the time of the request, and there is no history to go back for.

One command. Your agent does the rest.

Use the TikTok endpoint directly from your MCP-compatible agent. Ask it to retrieve public feedback, identify patterns, and turn the result into a useful brief without writing integration glue.

Claude Code Codex

1 Run one command, then sign in

$ npx fetchlayer

◇  Agents

│  Claude Code and Codex

◇  Signed in as you@company.com

◇  Connected

│  ✓ Claude Code  ✓ Codex

It opens a sign-in page in your browser. New here? Signing in creates your free account.

2 Ask

›How is @nasa doing on TikTok, and which of their recent videos did best?

fetchlayer.tiktok_user_videos

1,719,888 followers and 8.96M total likes across 45 public videos. Their most recent post took 27,600 plays, 4,367 likes, 173 comments and 104 shares in its first hours — a like rate of about 16%. One request, one credit: the profile came back with the videos.

No key to copy and nothing to install. New accounts are free, with no credit card.

How it works
The same command connects
Cursor
VS Code
Antigravity
OpenCode
Hermes
ChatGPT, Perplexity, the Claude app and others

Use cases

What teams build with TikTok data.

Same API, endless applications. Here is what teams ship with TikTok profiles, videos and comments.

01

Creator vetting

Read a creator’s exact follower and like totals and their last fifty posts, then judge them on median plays and engagement rate rather than on the rounded number in their media kit.

influencervettingagencies
02

Trend research

Pull the top videos under a hashtag alongside the tag’s own total view count, and see which formats, sounds and accounts are actually carrying it before you brief anything.

trendscontentbriefs
03

Competitor content tracking

Watch what rival brands post, how often, and which videos outperform the rest of their feed — with captions, durations, sounds and hashtags on every post.

competitorscronreporting
04

Comment mining

Read the comments on the videos that took off and find the questions, objections and feature requests buyers repeat, straight from the people watching.

vocresearchproduct
05

Campaign measurement

Follow a branded hashtag or a set of creator posts after launch and report plays, likes, comments, shares and saves per post, with the promotional flag where TikTok sets it.

campaignsreportingbrand
06

Social listening datasets

Search a term on a schedule and build your own corpus of captions, hashtags and engagement counts — counts are point-in-time, so storing them is how you get a history at all.

datasetslisteningcron

Compare approaches

Spend time on the insight, not the collection layer.

What you needFetchLayerOfficial APIBuild it yourself
Public data with no app review✓Application requiredYou run the browsers
Exact follower and like counts✓Own account onlyYou parse them out
One record shape on every route✓Varies by endpointYou design it
Partial results explained, not silent✓n/aYou detect it
Ready for AI and MCP workflows✓Your integrationYour integration

FetchLayer provides access to publicly available data. It is not affiliated with, endorsed by, or sponsored by the platform.

Start free. Scale when ready.

Try it free, buy credits as you go, or take a monthly plan when your volume is steady.

Free

$0

30 requests

Enough to call the platforms you care about and read real responses before you pay anything.

  • Every platform and endpoint
  • REST and MCP
  • No credit card
Start free

Pay as you go

$1.99

per 1,000

Buy credits when you need them. They stay on your account until you use them.

  • Credits never expire
  • No monthly commitment
  • Same access as subscribers
  • ∞ req/min, ∞ API keys
Get API key

Monthly plan

Starter

$25

per month

15,000 requests a month, about 500 a day.

$1.67 per 1,000, $5 less than credits each month

  • ∞ req/min, ∞ API keys
Get started

1 page fetched is 1 credit

A normal call reads one page. Ask for more pages and each one is one more credit.

The same on every platform

No multiplier for harder targets, and no charge per result returned.

Nothing back, nothing billed

If a request does not return usable data, it costs 0 credits.

Not sure which volume fits?

15 minutes with the founder. Tell us the workload, we tell you what it needs.

Book a call

Guaranteed throughput on the platform you run on

A dedicated platform from $400/mo, plus $500 for each ~21 req/s. Every other platform on the same key. 99.95% uptime, 24-hour support on Slack or Telegram.

Build your plan

API reference

Every parameter, documented.

All requests are POST with a JSON body and Bearer auth header.

POST /tiktok/user-videos

The videos an account has posted, newest first by default, with the account’s profile alongside them — so listing an account’s posts does not also need a profile call. Sort by latest, popular or oldest, and page with a cursor.

username* string A handle with or without the @, or a profile URL
limit number Maximum videos, up to 500, or -1 for the maximum. Defaults to 30; at most 35 a page.
sort string 'latest' (default) | 'popular' | 'oldest'
pages / cursor number | string Pages to return in one request, up to 20, or resume from a previous nextCursor.
POST /tiktok/user-profile

One account’s profile, by username, userId or secUid: bio, avatar, verification and organization flags, creation date, bio link, and the exact follower, following, like, video and friend counts rather than the rounded figures shown on the page.

username* string A handle with or without the @, or a profile URL
POST /tiktok/search-videos

Videos matching a term, in TikTok’s own ranking for it. There is no sort order and no date filter, because TikTok offers a public caller neither — passing one is a 400 rather than a parameter that is accepted and ignored.

query* string What to search TikTok for
limit number Maximum videos, up to 500. Defaults to 30; about 12 a page.
pages / cursor number | string Page through the result list.
POST /tiktok/hashtag-videos

Videos posted under a hashtag, plus the tag itself — its id, name, description, cover and its own exact view and video counts across TikTok, which is how you size a trend before deciding how much of it to read.

hashtag* string A tag with or without the #, or a hashtag URL
limit number Maximum videos, up to 500. Defaults to 30; at most 30 a page.
pages / cursor number | string Page through the tag feed.
POST /tiktok/comments

Comments on a video with text, timestamp, like and reply counts, pinned and author flags, and each commenter’s profile. replyCount reports the true reply total even where replies holds only the handful TikTok inlines.

video* string A video URL or numeric id
limit number Maximum comments, up to 500. Defaults to 30; at most 50 a page.
pages / cursor number | string Page through the comment list.
POST /tiktok/video-detail

One video in full by id or URL, in the same shape every other route returns videos in — caption, timestamp, duration, cover, assets, engagement stats, author, music, tagged accounts and hashtags, ad, paid-partnership and shop flags — plus the region it was posted from.

video* string A video URL or numeric id. Short share links are rejected — resolve them first.
POST /tiktok/video-transcript

The transcript TikTok publishes for a video: full text plus segments with start and end times in seconds. 68% of videos measured had one, and a non-English video usually carries a free English track alongside its original.

video* string A video URL or numeric id
POST /tiktok/resolve-url

What a TikTok link points to — video, account, hashtag, sound or search — plus the id, handle, tag or query it encodes. Free.

url* string Any TikTok link

Fields marked * are required. Full API reference →

FAQ

Common questions.

How much does FetchLayer's TikTok API cost?

FetchLayer's TikTok API returns public TikTok profiles, videos, search, hashtag feeds, comments and transcripts as JSON over REST or MCP. A request is one page of results, and each request costs one credit: $1.99 per 1,000 requests pay-as-you-go, or $25 a month for 15,000, with 30 free requests and no card to start. A request that fails is not billed. The same key covers 36 other platforms, and every route is also a tool on FetchLayer's MCP server at https://mcp.fetchlayer.dev, for Claude, ChatGPT, Cursor and other MCP clients.

What is a TikTok API?

Here it means one HTTP endpoint that returns public TikTok data as clean JSON: an account’s profile and posts, one video in full, keyword search, the videos under a hashtag, a video’s comments, and the transcript TikTok publishes for a video. You send a handle, a URL, a term or a tag with a Bearer token, and get back typed records with captions, timestamps, durations, engagement counts, authors, music and hashtags. It is not TikTok’s own developer platform — there is no application to file, no review, and no OAuth. Everything returned is public on TikTok.

Do I need a TikTok account or developer approval?

No. You send your FetchLayer key and nothing else. There is no TikTok login, no app registration and no approval step. FetchLayer is not affiliated with, endorsed by, or sponsored by TikTok, and the TikTok name is used only to identify the platform the data comes from.

What does a video record contain?

The same fields on every route that returns videos, so code written against a search result works unchanged on an account’s posts or a hashtag feed: id, url, description (the caption), createdAt, durationSeconds, isPhotoPost, coverUrl, assets, stats with playCount, diggCount, commentCount, shareCount, collectCount and repostCount, roundedStats, author, music, hashtags, mentions, mentionedUsers, hashtagDetails, isAd, isPaidPartnership, isShoppable, createdRegion and language. Hashtags and mentions are TikTok’s own tags on the post rather than parsed out of the caption, so a tag written inside a word does not produce a false positive. A null counter means TikTok did not publish that figure; a real zero comes back as 0, and roundedStats names any count TikTok publishes only rounded.

Are the follower counts the rounded ones?

No. TikTok publishes both the rounded figure shown on the page and the precise one, and this returns the precise pair — a follower count comes back as 1719888 rather than 1.7M. That is the difference between being able to track week-to-week movement and not: a creator can gain thirty thousand followers without 1.7M changing at all. A video’s views, likes, comments and shares are a different matter: TikTok publishes those rounded once they reach 10,000, and roundedStats on each video says which ones are.

Can I search TikTok by date, or sort the results?

No, and the API says so rather than pretending otherwise. TikTok offers a public caller neither a date filter nor a sort order on search, so passing one returns a 400 naming the field instead of being accepted and quietly ignored — which would hand you the wrong data with no indication why. Search results come back in TikTok’s own ranking for the term. An account’s own videos can be sorted: latest, popular or oldest.

How does paging work?

limit caps the items returned and pages caps how many pages are fetched to get them, up to 20 in one request. A page holds at most 35 of an account’s videos, 30 of a hashtag’s, about 12 search results or 50 comments. When more exists, hasMore is true and nextCursor carries an opaque token to pass back unchanged; a cursor from another route, account, hashtag, search term or video is a 400. Passing -1 on limit or pages means "the maximum this service allows", which is 500 videos, 500 comments and 20 pages.

How does billing work?

One credit per page of results fetched, and every response states it as pagesFetched, so a bill is never a surprise. A single-page request costs 1 credit whatever the page holds — thirty videos or five. Asking for five pages costs five. Hashtag videos are the exception: 1 credit per page of up to 30 posts delivered, minimum 1 credit per request, and each response states its cost as credits. Parsing a URL with /resolve-url reports pagesFetched 0 and is free.

Can I get a video’s transcript, and how many videos have one?

Yes, and the honest figure is 68% — 125 of 185 videos measured across 14 languages carried a transcript. TikTok transcribes spoken audio for most videos but not all, and a photo carousel is 0% by nature because there is no audio to transcribe. What makes the route worth more than the number suggests is that the translations are free: a video posted in another language usually carries an English track alongside its original, already timed, for the same one credit. You get the full text plus segments with start and end times in seconds. A video without one is a normal 200 — transcript.available is false, tracks is empty, durationSeconds is still filled in, and a note says why — so do not retry it.

How complete are a video’s comments?

The comments themselves page normally, up to 500 in one request. Two things are worth knowing. The replies array on a comment holds only the replies TikTok shows alongside it — usually none or a handful — while replyCount reports how many exist in total, and a response where the two differ carries a note saying so. And totalCount is the figure TikTok publishes for the video, which can exceed what paging can reach. Both are stated rather than glossed over, so you can tell a complete read from a partial one.

What happens when there is nothing to return?

You get an explanation, not an empty array. Every response carries a notes array, and an empty result always comes with a note saying why: the account is private, the account has no public posts, comments are turned off for the video, the hashtag has no public videos, or the list stopped before the requested number was reached. A missing answer and an explained absence are different things, and the response distinguishes them.

How reliable is it?

Every route is monitored 24/7 and a failure alerts our team, and you are only charged for successful responses. Listing an account’s videos succeeds about 199 times in 200, and a 503 there comes only after repeated attempts — wait before retrying rather than retrying immediately.

Can my AI agent use it?

Yes. All eight routes are MCP tools on the same FetchLayer MCP server, named tiktok_user_profile, tiktok_user_videos, tiktok_video_detail, tiktok_search_videos, tiktok_hashtag_videos, tiktok_comments, tiktok_video_transcript and tiktok_resolve_url. They are distinct from the tiktok_ad_library_* tools, which cover the paid ad library rather than organic posts. Tool calls use the same key and are billed exactly like REST.

What is not available?

Account analytics — audience demographics, watch time, traffic sources — are not available from anyone for an account you do not own, because TikTok publishes none of it. There are no historical snapshots either: counts are as they stand when you ask, so tracking movement means storing what you get back and asking again.

Start pulling TikTok data today.

Get a free API key, make your first request, and put public feedback to work in your own product or research workflow.