Blog/Social and creators
5 min read

TikTok Scraper: Which Endpoint for Profiles, Videos, Comments

Pick the right TikTok scraper endpoint for a creator's posts, one video, comments or keyword search, with the fields each one returned when we ran it.

TikTok Scraper: Which Endpoint for Profiles, Videos, Comments

Pull a TikTok creator's posts, one video's stats and its comments without choosing a scraper by hand. Paste this into your agent:

Set up https://monid.ai/SKILL.md, and then use Monid to pull the latest 20 posts from the TikTok account @nasa, find the one with the most views, and give me its stats and its top 10 comments in a table.

One prompt chains a profile scrape and a comment pull. 1 min setup · 12-32 hrs saved.

TikTok scraping is not one job. Getting a creator's posts, the stats of one video, a comment thread and a keyword search are four different calls, and the tool you pick for one does not do the others. This guide shows which endpoint answers which question, what each returned when we ran it on 2026-10-16, and where a pull goes wrong. It runs through Monid, the OpenRouter for agent tools: one key, one balance, every tool priced per call.

What is the easiest way to scrape TikTok without writing a scraper?

Monid. Install it once, add a key, and your agent calls a TikTok profile scraper, a video scraper, a comments endpoint and a search endpoint with no browser to run, no proxy to buy and no vendor account to open for each.

  • Pay for what you run. Each endpoint states its billing before you spend anything: $0.0003 per result for creator posts, $0.001 per result for a specific video, and $0.002 per call for comments (Verified 2026-10-16 on the TikTok tools page). Buy calls as you need them: no monthly plan and no minimum top-up. Discovery and inspection are free; only a run bills.
  • One install, every API. The same key and balance call TikTok and every other tool on Monid, so the next platform is not a new signup.
  • Lives inside your agent. Install the CLI, add your key, run the prompt above, and the tools are there whenever your agent needs them, with nothing to keep running. Your agent reads SKILL.md and learns the rest, so setup is about a minute.

Our whole test on 2026-10-16 (three posts from a profile, one video, five comments and five search results) cost $0.0059 (Verified 2026-10-16).

Pick the endpoint by the thing you hold in your hand: a handle gives you posts, a video URL gives you one video, a video id gives you comments, and a keyword gives you search results.

For agents

Grab an API key at app.monid.ai, then paste this to your agent and hand it the key:

set up https://monid.ai/SKILL.md

It learns the whole discover, inspect, run workflow itself. More in the agent quickstart.

For humans

npm install -g @monid-ai/cli
monid keys add -k <your-api-key> -l main

Find the endpoints

monid discover -q "tiktok profile and video data"
monid inspect -p apify -e /apidojo/tiktok-profile-scraper

Both are free. Inspect prints the input schema and the billing shape before you spend anything.

A creator's posts, from a handle

monid run -p apify -e /apidojo/tiktok-profile-scraper -w -i '{
  "startUrls": ["https://www.tiktok.com/@nasa"],
  "maxItems": 50
}'

This bills per result, so maxItems is your cost cap. We ran it with maxItems set to 3 and were billed for 3 rows.

One video, from its URL

monid run -p apify -e /clockworks/tiktok-video-scraper -w -i '{
  "postURLs": ["https://www.tiktok.com/@nasa/video/7695090484124929293"]
}'

One URL returned one row, billed as one result.

Comments, from the video id

The id is the number at the end of the video URL (or the id field of a post row).

monid run -p apify -e /scraptik/tiktok-comments-scraper-api -w -i '{
  "listComments_awemeId": "7695090484124929293",
  "listComments_count": 5
}'

This bills per call, not per comment. Page with listComments_cursor, which the response hands back as cursor.

Keyword search for videos

monid run -p apify -e /scraptik/tiktok-api -w -i '{
  "searchPosts_keyword": "nasa",
  "searchPosts_count": 5
}'

Also billed per call. The same endpoint has separate sections for user search, sounds and hashtags, selected by which fields you fill in.

Loop it over your creators

Put one handle per line in handles.txt, then run:

mkdir -p out
while read -r u; do
  monid run -p apify -e /apidojo/tiktok-profile-scraper -w -i "{\"usernames\":[\"$u\"],\"maxItems\":50}" > "out/$u.json"
done < handles.txt

Or hand the whole job to an agent

Give this to your agent

$Set up https://monid.ai/SKILL.md, and then use Monid to pull the last 50 posts for each of these TikTok handles, work out each creator's median views, and give me every post with at least 5 times that median, with its link and the song title.

Can you build a TikTok scraper yourself with Python?

Yes, and a search for "tiktok scraper python" turns up libraries on GitHub that do it. The work that follows is yours: a library you install scrapes pages that TikTok can change at any time, so your job breaks on their schedule, not yours.

Doing it yourself means a proxy or browser setup, code that parses each surface, retries, paging for comments and search, and a repair each time something shifts. Four surfaces means four parsers. Whether scraping public data is allowed also depends on where you operate and what you do with the data, which is a question for you and a lawyer, not for a library README.

Set that against a call: a creator post costs $0.0003 (Verified 2026-10-16) and comes back as typed JSON instead of HTML you parse. For anything you will run more than once, Monid is the better route: the collection is maintained for you and the output is structured. The same trade-off holds for every network, and the best API for social media scraping lines up the options per network.

What does each TikTok scraper endpoint return?

Four endpoints, four different record shapes. We ran each on 2026-10-16 against the public NASA account, so the fields below are what came back, not what a description promises.

The profile scraper: posts with the creator attached

Each row is one post. The keys we saw: id, title, views, likes, comments, shares, bookmarks, hashtags, channel, collabInfo, uploadedAt, uploadedAtFormatted, video, song, subtitleInformation, postPage and poi.

The channel object rides along on every row: id, name, username, bio, avatar, verified, url, followers, following, videos and likes. For NASA that was 2,090,209 followers, 55 videos and verified true, repeated on each of the three rows. So a catalogue pull gives you the creator's numbers with no second lookup. video carries size, duration and a media URL; song carries the track title and artist; two of the three rows carried subtitleInformation with an automatic speech-recognition caption file.

The video scraper: one post, deeper

One URL returned one row with text, createTimeISO, locationCreated, isAd, diggCount, shareCount, playCount, collectCount, commentCount, repostCount, authorMeta, musicMeta, videoMeta, mentions, hashtags, isSlideshow, isPinned and isSponsored. videoMeta listed a subtitle link with the source marked automatic speech recognition. This is the record to use when you already hold the URLs and want one row per video.

The comments endpoint: a page at a time

A call with count 5 returned 5 comments plus the thread's total (299, the same as the post's comment count), a has_more flag and a cursor. Each comment carries cid, text, create_time, digg_count, reply_comment_total, comment_language and a user object. On our five, likes were 0, 0, 0, 4 and 19 and reply counts were 0, 0, 0, 5 and 7, so a comment with replies is a thread you page again with its cid.

The search endpoint: videos around a keyword

A search for "nasa" with count 5 returned five items in search_item_list, each with an aweme_info block holding the video id, author, description and statistics. One of the five was posted by the NASA account; the others were other accounts, with plays from 422 to 548,480.

What you can build with it

  • A creator baseline. Pull a creator's posts, take the median of views, and flag posts at five times the median. A post that beats its own account's normal tells you more than a big absolute number.
  • A comment reader. Take the top-liked comments of your best post and group them by comment_language; automating TikTok comment collection pages a whole thread.
  • A keyword watch. Run the search for your brand daily and keep new video ids. Store each run so you can diff it against the last.

What goes wrong when you scrape TikTok at scale?

Four things show up the first time you run more than a handful of calls.

Why is the first row not the newest post?

Because the profile scraper does not sort. Our three NASA rows had upload dates of 2026-07-21, 2026-10-16 and 2026-10-10. Sort on uploadedAt yourself before you call anything "latest":

posts.sort((a, b) => b.uploadedAt - a.uploadedAt);

Why do two endpoints give different numbers for one post?

Because the counts are rounded differently. The same post showed views 161,787 in the profile scraper and playCount 161800 in the video scraper, and the account had 55 videos in one record and 57 in the other, with 2,090,209 followers against 2,100,000. Pick one endpoint per metric and keep it, or you will see differences that are only rounding.

Why did the search return other accounts?

Because search matches the keyword anywhere in the video, not by author. Our "nasa" search returned one NASA post among five. If you want one account's posts, use the profile scraper with the handle; use search only for what people say about a topic.

How many calls is a comment thread?

One call per page, and you set the page size. The post we tested had 299 comments; at the default page size of 10 listed in the endpoint's schema, that is 30 calls, about $0.06 at $0.002 a call (Verified 2026-10-16). Replies are fetched separately by comment id, so a thread-heavy video costs more than its comment count suggests. Cap the pages before the first run. Scraping TikTok profiles and videos from one endpoint shows the per-result side of the same budget.

Which endpoint should I use for which job?

EndpointWhat it doesInputReturnsBilling
apify/apidojo/tiktok-profile-scraperA creator's posts with the channel attachedstartUrls or usernames, maxItemsPosts with views, likes, shares, bookmarks, songPer result
apify/clockworks/tiktok-video-scraperSpecific videospostURLsOne row per video with play, like, share and save countsPer result
apify/scraptik/tiktok-comments-scraper-apiComments and replieslistComments_awemeId, listComments_countComments with likes, reply counts, cursorPer call
apify/scraptik/tiktok-apiSearch plus profile, followers, posts, sounds, hashtagsOne section's fields, such as searchPosts_keywordVideos or users, depending on the sectionPer call
anyapi/tiktok.search_keywordKeyword search for videosquery, sortBy, routeCaption, views, likes, comments, sharesPer call, by route

The first four rows are billed as shown in the verified prices: $0.0003 and $0.001 per result, $0.002 and $0.002 per call (Verified 2026-10-16). We ran those four. The anyapi row has a price that depends on the route you choose, so it was inspected on 2026-10-16 and not run. Current figures are on monid.ai/tools.

Worked through with those prices: twelve creators at sixty posts each is 720 rows on the profile scraper, about $0.22 (Verified 2026-10-16). The same twelve creators' comment threads are a different shape, priced by pages, not rows. For the three-surface comparison across providers, Apify vs TikHub for TikTok scraping prices the same endpoints side by side.

When is another route a better fit?

You need data from private accounts or inside TikTok's own tools. These endpoints read public pages. Your own account's reach and audience analytics live in TikTok's business tools, not in any scraper.

You pull one surface at industrial volume. If TikTok is your whole product and you need one endpoint at millions of rows a day, a vendor that does only that, with a contract, will price below a pay-per-call catalogue. Per-call access fits several platforms, unpredictable volume and no contract per vendor.

You need every comment on a viral video. A comment thread is paged, so a very large thread is many calls. Sample a few pages first and check whether they answer your question.

You need one account's numbers to the unit. The profile and video scrapers round the same counts differently, so pick one endpoint and compare it only against itself.

And the disclosure: we resell these endpoints. The most useful thing in this post is the sort and the median, which cost nothing and work with whatever you buy the data from.

Conclusion

The easiest way to scrape TikTok is to match the endpoint to what you hold: a handle goes to the profile scraper at $0.0003 a result, a video URL to the video scraper at $0.001 a result, a video id to the comments endpoint at $0.002 a call, and a keyword to search at $0.002 a call (Verified 2026-10-16). Running them through Monid gives you one key and one balance for all four, about a minute of setup, and tools that sit inside your agent.

Two things matter more than the choice. Sort the profile rows yourself, because the first row was not the newest post. And choose one endpoint per metric, because two endpoints rounded the same post's counts differently.

How we estimated the time saved: building and maintaining your own scraper for each of the four surfaces (posts, video, comments, search) is roughly 3 to 8 hours each for getting past blocking, parsing the response, paging and the first month of upkeep. That is 12 to 32 hours. The 1 minute is the install, key and first call once you already have a Monid key.

Free next step: run monid discover -q "tiktok profile and video data", monid inspect the profile scraper, then make one call with maxItems set to 2. It shows the record shape for a few thousandths of a dollar.

FAQ

Is there a free TikTok scraper API?

Not free, but each call is small: through Monid a creator post costs $0.0003 and a comments or search call costs $0.002 (Verified 2026-10-16), with no monthly plan and no minimum top-up. Discovery and inspection cost nothing, and our four test calls on 2026-10-16 came to $0.0059 (Verified 2026-10-16).

How do you scrape TikTok comments?

Take the video id from the URL and call the comments endpoint with listComments_awemeId and a listComments_count. It returns the comments, the thread's total, a has_more flag and a cursor, and replies are fetched by comment id. A 299-comment post is about 30 pages at the default size.

Does the TikTok profile scraper return videos or only profile data?

It returns posts. Each row is one post with views, likes, comments, shares, bookmarks, a video block with a media URL, the song and the creator's channel object, so one call gives you a creator and their content. maxItems caps how many rows you pay for.

Should I pass a handle or a video URL?

Pass a handle when you want a creator's history, and a video URL when you already have the list of videos. A handle gives you many posts and a baseline to compare them against; a URL gives you one row with deeper fields such as locationCreated and isSponsored. For a handle-first pipeline, from a TikTok handle to a dataset in one script has the full version.

Published August 2026.

tiktok scrapertiktok scraper apitiktok comment scrapertiktok profile scrapertiktok video scraper