TikTok Comments Scraper: TikTok Comment Replies
Pricing
from $0.40 / 1,000 tiktok comment results
TikTok Comments Scraper: TikTok Comment Replies
Scrape TikTok comments and comment replies (full reply threads) from any video URL. Get comment text, likes, reply counts, timestamps, mentions and commenter profiles (handle, nickname, avatar, verified). No login or cookies. Export JSON, CSV or Excel, or use the API. Pay only per result.
Pricing
from $0.40 / 1,000 tiktok comment results
Rating
0.0
(0)
Developer
Yevhenii Molodtsov
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
18 hours ago
Last modified
Categories
Share

What does TikTok Comments Scraper do?
TikTok Comments Scraper collects the comments and comment replies (full reply threads) from any public TikTok video. Paste one or more video URLs and get each comment TikTok serves as a clean row: the text, like count, reply count, timestamps, mentions, and the commenter's handle, nickname, avatar and verified badge. It is built for brand and social media teams tracking audience reactions, marketers running sentiment analysis, researchers building comment datasets, and developers who need TikTok comments in their own pipeline. No TikTok account, login or cookies are needed.
- Comments and replies: choose how many replies to fetch per comment. Each reply is its own row, linked to its parent comment by
repliesToId. - Commenter profiles: handle, nickname, user ID, secUid, avatar, profile URL and verified badge on every row.
- Creator signals: see which comments the video's creator liked or pinned.
- Fast and light: plain HTTP requests, no browser. About 1,500 comments in a minute.
- Any TikTok URL form: full video and photo URLs, plus the app's short links.
- Clear errors: a deleted, private or mistyped video produces an error row instead of disappearing silently.
- Familiar output: field names follow the most common TikTok comment dataset format, so existing integrations keep working.
- Pay per result: no monthly rental and no separate compute bill.
Use cases
- Brand and social media teams re-scrape a campaign video's comments and replies every day on a schedule, run sentiment analysis on
text, and flag complaints bydiggCount. - Product and market researchers find the top videos in a niche with TikTok Search Scraper, pass each
postPagehere, and mine the comments for questions, objections and feature requests. - Researchers build comment datasets with
commentLanguage,createTimeISOand reply threads (repliesToId) for discourse and community analysis. - Creators and community managers see which comments the creator liked or pinned (
likedByAuthor,pinnedByAuthor) and collect the most-liked questions for FAQ videos.
What data can you scrape from TikTok comments?
Every comment or reply is one dataset row with these fields:
| Field | Description |
|---|---|
cid | Comment ID (string) |
text | Comment text |
createTime / createTimeISO | When the comment was posted (Unix seconds / ISO 8601) |
diggCount | Likes on the comment |
replyCommentTotal | TikTok's reply counter (top-level comments only, null on replies) |
repliesToId | Parent comment ID on replies, null on top-level comments |
uid / uniqueId / nickName / secUid | Commenter's user ID, handle, nickname and secUid |
avatarThumbnail / profileUrl / verified | Commenter's avatar, profile URL and verified badge |
likedByAuthor / pinnedByAuthor | Whether the video's creator liked or pinned the comment |
mentions / detailedMentions | Users mentioned in the comment |
videoWebUrl / videoId | The video the comment belongs to |
submittedVideoUrl / input | The URL exactly as you entered it |
commentLanguage | Language TikTok detected for the comment |
How to scrape TikTok comments
In Apify Console
- Open the Actor in Apify Console and paste one or more TikTok video URLs into TikTok video URLs.
- Set Maximum comments per video (replies count toward it) and, if you want replies, Maximum replies per comment.
- Click Start. When the run finishes, download the results as JSON, CSV, Excel or HTML, or read them from the dataset.
Via the API
Run the Actor and get the comments back in one call:
curl -X POST "https://api.apify.com/v2/acts/xmolodtsov~tiktok-comments-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"postURLs": ["https://www.tiktok.com/@duolingo/video/7514320905909194030"], "commentsPerPost": 50}'
JavaScript, Python and MCP examples are under "Integrations, API and MCP" below. You can also schedule recurring runs and send the results to other tools with Apify integrations.
How much does it cost to scrape TikTok comments?
You pay per result: each comment, reply or error row in the dataset is one result. The price depends on your Apify subscription plan:
| Apify plan (pricing tier) | Price per 1,000 results |
|---|---|
| Free (FREE) | $1.00 |
| Starter (BRONZE) | $0.80 |
| Scale (SILVER) | $0.60 |
| Business (GOLD), PLATINUM and DIAMOND | $0.40 |
Platform usage is included in the price. This Actor uses pay-per-event pricing, so there are no extra compute or proxy charges on top of the per-result price. For example, 10,000 comments cost $8.00 on Starter and $4.00 on Business. Set a maximum charge for the run in Console or the API and the Actor stops cleanly when it reaches it, keeping everything scraped so far.
Is it free?
You can try the Actor on the Apify free plan. On the free plan it returns up to 10 results per run and allows 5 runs per calendar month. These limits are set by the developer of this Actor, not by Apify. A free-plan run that hits the cap still ends as Succeeded, with a status message explaining the limit, and the monthly run count resets on the 1st. Any paid Apify plan removes the limits.
Input
| Field | Type | Description |
|---|---|---|
postURLs | array of strings | TikTok video URLs, required. Accepts https://www.tiktok.com/@user/video/<id>, /photo/<id> posts and short links (vm.tiktok.com/…, vt.tiktok.com/…, www.tiktok.com/t/…). |
commentsPerPost | integer | Maximum rows per video, replies included. Default 100. |
maxRepliesPerComment | integer | Replies fetched for each top-level comment that has any. 0 (default) = no replies. |
proxyConfiguration | object | Apify Proxy is used by default. Change it only to route through your own proxies. |
Example input:
{"postURLs": ["https://www.tiktok.com/@duolingo/video/7514320905909194030"],"commentsPerPost": 100,"maxRepliesPerComment": 5}
Output
Results land in the run's dataset. The Overview view shows the most useful columns at a glance; this preview comes from a real run on a Duolingo video:

Each comment or reply is one dataset item. Example:
{"cid": "7514900488613020462","text": "oh my god","createTime": 1749699140,"createTimeISO": "2025-06-12T03:32:20.000Z","diggCount": 60,"replyCommentTotal": 3,"uid": "6846647293535536133","uniqueId": "ducarebeauty","repliesToId": null,"avatarThumbnail": "https://p16-common-sign.tiktokcdn-eu.com/tos-maliva-avt-0068/3aab3da1...jpg","likedByAuthor": false,"pinnedByAuthor": false,"mentions": [],"detailedMentions": [],"videoWebUrl": "https://www.tiktok.com/@duolingo/video/7514320905909194030","submittedVideoUrl": "https://www.tiktok.com/@duolingo/video/7514320905909194030","input": "https://www.tiktok.com/@duolingo/video/7514320905909194030","videoId": "7514320905909194030","nickName": "DUcare beauty","secUid": "MS4wLjABAAAAIN0eDLdy4oXJ-7MrWvp3zUCJIcBseE2Rn6uqBbl7gBLSgqY_8bpoCaMB6OKZDOJm","profileUrl": "https://www.tiktok.com/@ducarebeauty","verified": true,"commentLanguage": "en"}
A video that is deleted, private or region-blocked produces one error row instead:
{"url": "https://www.tiktok.com/@duolingo/video/7000000000000000001","input": "https://www.tiktok.com/@duolingo/video/7000000000000000001","error": "Video not found, private, region-blocked or has comments disabled","errorCode": "POST_NOT_FOUND_OR_PRIVATE"}
Guarantees and run status
When does a run fail?
A run that TikTok blocks is marked Failed instead of succeeding with an empty or partial dataset, so your retry logic can catch it. A video counts as hard-failed when TikTok refused it (HTTP 403, 429 or an API error), when it ended with an error or throttling before any comment was collected, or when replies were requested and every reply thread for it was refused. The run fails when:
- no comments were collected and at least one video hard-failed, or
- more videos hard-failed than the larger of 2 and 20% of the videos in the run.
The status message of a failed run starts with the reason code (for example blocked: 3/10 videos failed - …), so you can read it from the API. Input without a single video URL fails immediately.
These cases are your data, not a block, and never fail the run:
- deleted, private or region-blocked videos (
POST_NOT_FOUND_OR_PRIVATErow) and URLs that are not TikTok videos (INVALID_URLrow); - the same video submitted twice, for example as a full URL and a short link: it is scraped once;
- reaching your maximum charge: the run ends as Succeeded with "Stopped at your max charge after N comments";
- the free-plan caps described under "Is it free?".
Limits and tips
- Speed: about 1,500 top-level comments in a minute. Replies need one extra request per thread, so a run with replies is slower (about 900 rows in two minutes). Up to five videos are scraped in parallel.
- Depth: we found no hard ceiling. Videos with tens of thousands of comments page through fine.
- Replies count toward the limit:
commentsPerPostcounts top-level comments and replies together. Raise it if you want many replies per comment. - Order: TikTok returns comments in its own order, not by date or likes, so two capped runs on the same video can return different sets. Sort or filter the dataset afterwards.
- Error rows are billed: error rows are dataset items and cost the same as results, so double-check your URL list.
- Run summary: the
STATISTICSrecord in the run's key-value store shows each video's outcome, such asCOMPLETE,LIMIT_REACHED(hit your limit) orTHROTTLED(TikTok stopped serving pages), plus the reason of a failed run.
Integrations, API and MCP
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('xmolodtsov/tiktok-comments-scraper').call({postURLs: ['https://www.tiktok.com/@duolingo/video/7514320905909194030'],commentsPerPost: 200,maxRepliesPerComment: 3,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
import osfrom apify_client import ApifyClientclient = ApifyClient(token=os.environ["APIFY_TOKEN"])run = client.actor("xmolodtsov/tiktok-comments-scraper").call(run_input={"postURLs": ["https://www.tiktok.com/@duolingo/video/7514320905909194030"],"commentsPerPost": 200,})items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(items)
Use with AI agents (MCP)
The Actor is available through Apify's MCP server at https://mcp.apify.com under the name xmolodtsov/tiktok-comments-scraper. Connect an MCP-capable agent (Claude, Cursor or any other MCP client) to https://mcp.apify.com?tools=xmolodtsov/tiktok-comments-scraper and it can call the Actor as a tool with the input and output described on this page, for example "collect 200 comments of this TikTok video and summarise what viewers complain about".
Exports, schedules and webhooks
Datasets export to JSON, CSV, Excel, XML, JSONL, RSS and HTML from Console or the API. Use Apify Schedules to re-scrape the same videos daily, and webhooks to push finished runs into your pipeline. Make, Zapier, n8n and other tools connect through Apify integrations.
More scrapers from this developer
TikTok: TikTok Search Scraper: videos and creators for any keyword, pay per result · TikTok Profile Scraper (Pay Per Result): profiles, followers and latest posts by username · TikTok Hashtag Scraper: videos for any hashtag, with views, likes and music · TikTok Sound & Music Scraper: videos that use a sound or song
Social & news: Reddit Search Scraper: posts by keyword, subreddit or author · Google News Scraper: Google News results as clean full-text articles
E-commerce: Prom.ua Product Search Scraper: Prom.ua product search results, no browser needed · Amazon Product Search & Bestsellers Scraper: search results, Best Sellers and product details from Amazon
Maps & leads: Google Maps Scraper: places, leads and emails from Google Maps
Ads: Facebook Ad Library Scraper (Meta Ads Library): ads from the Meta Ad Library, with EU reach and payers
Video: YouTube Transcript Scraper: transcripts, subtitles and captions from YouTube videos
FAQ
How can I export TikTok comments to Excel or CSV?
Every run stores its results in an Apify dataset, which you can download as JSON, CSV, Excel, XML or HTML from Console, or read page by page through the API.
Can I use it with the API, Make, Zapier or n8n?
Yes. Start runs and fetch results through the Apify API or its JavaScript and Python clients, or connect the Actor to Make, Zapier, n8n and other tools through Apify integrations.
How many comments can I get per video?
As many as TikTok serves. Set Maximum comments per video to the number you need; we found no hard depth limit, even on videos with tens of thousands of comments.
Why did I get fewer comments than the video shows?
TikTok's comment count includes comments it no longer serves (deleted, filtered or hidden), so the visible counter can be higher than what can be collected. replyCommentTotal is TikTok's own counter too and can differ by region. Check the STATISTICS record to see whether each video finished or was throttled.
What happens with private or deleted videos?
You get one error row with errorCode: "POST_NOT_FOUND_OR_PRIVATE" for that video, and the rest of the run continues.
Do I need a TikTok account or my own proxies?
No. The Actor never logs in and uses Apify Proxy by default, which is included in the price.
How long does a run take?
About a minute per 1,500 comments without replies, and roughly two minutes per 900 rows with replies. Up to five videos are scraped in parallel.
Can I scrape comments from a user's profile?
The Actor takes video URLs. Collect a creator's latest video URLs with TikTok Profile Scraper first, then pass them here.
How do I find videos to scrape comments from?
Search by keyword with TikTok Search Scraper and pass each item's postPage here, or take webVideoUrl from TikTok Hashtag Scraper for a hashtag's videos.
Is it legal to scrape TikTok comments?
This Actor collects only data that TikTok shows publicly to any visitor, without logging in, and never accesses private content. Comments and commenter profiles can still contain personal data, which is protected by regulations such as the GDPR in the EU and the CCPA in California. Only collect personal data when you have a legitimate reason, keep only what you need, and if you are unsure whether your use case is lawful, consult a lawyer. This is not legal advice.
Support
Report bugs or request features through the Issues tab on this Actor's page. Include the run ID when you report a problem, so the run's log and STATISTICS record can be checked.