TikTok Comments Scraper — Threads, Replies, Sentiment-Ready avatar

TikTok Comments Scraper — Threads, Replies, Sentiment-Ready

Under maintenance

Pricing

from $0.10 / 1,000 results

Go to Apify Store
TikTok Comments Scraper — Threads, Replies, Sentiment-Ready

TikTok Comments Scraper — Threads, Replies, Sentiment-Ready

Under maintenance

Extract every comment from any TikTok video, including reply threads, author info, like counts, and timestamps. Pay-per-result $0.50 / 1K comments — the cheapest in the category. Sentiment-analysis and spam-detection ready. Callable as a tool via Apify MCP Server

Pricing

from $0.10 / 1,000 results

Rating

0.0

(0)

Developer

Coor Yu

Coor Yu

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

2

Monthly active users

3 days ago

Last modified

Share

TikTok Comments Scraper · Apify Actor

Extract every comment from any TikTok video — including reply threads, author info, like counts, pinned status, and timestamps. Sentiment-analysis and spam-detection ready.

$0.50 / 1,000 comments — cheapest in the category (head actor: $0.50–$0.70 / 1K). Pay-per-result, failed requests are free.


中文说明

输入一个或多个 TikTok 视频链接,抓取每条视频的全部评论(含回复线程、作者信息、点赞数、置顶状态、时间戳)。

工作原理(可靠的签名翻页):用真实浏览器打开视频页,让 TikTok 自身先成功发出一次 API 请求以预热 msToken/会话;随后捕获或构造 comment/list 请求模板,每页只换 cursor,用页面内置签名函数 byted_acrawler.frontierSign 重新签名(X-Bogus),跟随 has_more 翻页。回复线程通过把模板改写为 comment/list/reply 接口(换 item_id+comment_id)同样签名翻页。默认使用 Apify Proxy DEFAULT 非住宅代理池,不会自动切到住宅代理;如果用户手动选择 RESIDENTIAL,则尊重该输入。

输入videoUrls(视频链接,必填)、commentsPerVideo(每视频最多评论数,0=全部)、includeReplies(是否抓回复)、repliesPerCommentproxy(默认 Apify Proxy DEFAULT 非住宅池)、maxConcurrencymaxRequestRetries输出:每行一条评论(顶层或回复),含 commentId/text/author/diggCount/replyCount/isReply/parentCommentId/isPinned/createTimeISO 等。 计费:按结果 $0.50 / 1000 条;失败请求不收费。


Why this actor

FeatureThis actorTypical alternatives
Extraction surfaceSigned API pagination — re-signs each /api/comment/list/* request with TikTok's own in-page signerReverse-engineering rotating signatures every week
Reply threadsYes (configurable depth + per-thread cap)Often top-level only
Output fields18 (incl. isAuthorLiked, isPinned, mentionedUsers, depth)8–12
MCP-compatibleYes — discoverable via mcp.apify.comMost are not
Pricing$0.50 / 1K comments$0.50–$0.70 / 1K
ProxyNon-residential DEFAULT proxy by default; explicit RESIDENTIAL is respectedOften residential-only or datacenter-only

Input

{
"videoUrls": [
"https://www.tiktok.com/@khaby.lame/video/7321234567890123456",
"https://www.tiktok.com/@charlidamelio/video/7345678901234567890"
],
"commentsPerVideo": 200,
"includeReplies": true,
"repliesPerComment": 20,
"proxy": {
"useApifyProxy": true
},
"maxConcurrency": 2,
"maxRequestRetries": 2
}

Full schema → ./.actor/input_schema.json.


Output (one row per comment)

{
"commentId": "7398234567890",
"videoId": "7321234567890123456",
"videoUrl": "https://www.tiktok.com/@khaby.lame/video/7321234567890123456",
"text": "lmao 💀 you nailed it",
"createTimeISO": "2026-05-12T15:01:22.000Z",
"isReply": false,
"parentCommentId": null,
"depth": 0,
"diggCount": 4231,
"replyCount": 12,
"isAuthorLiked": true,
"isPinned": false,
"author": {
"id": "6912345678",
"uniqueId": "fan_name",
"nickname": "Fan Name",
"verified": false,
"avatar": "https://...",
"isVideoAuthor": false
},
"mentionedUsers": [],
"scrapedAt": "2026-05-19T07:34:18.012Z"
}

Replies appear in the same dataset with isReply=true and parentCommentId populated. Full schema → ./.actor/dataset_schema.json.


Pricing — Pay per result

EventCharge
comment-scraped$0.50 / 1,000 comments (top-level OR reply)

Failed requests and retries are free.


How it works (extraction strategy)

  1. Open the video page with Playwright using fingerprint randomisation + Apify Proxy DEFAULT non-residential pool by default.
  2. Sniff XHR responses that match /api/comment/list/* — these are TikTok's own signed requests, so we never need to compute X-Bogus / msToken ourselves.
  3. Scroll briefly or build a synthetic comment template when the page never fires its own comment request.
  4. (Optional) click "View replies" affordances so reply-thread XHRs fire too.
  5. De-dup → trim to limits → push → charge.

This is the same architecture used by the top-rated TikTok scrapers — robust to weekly signature rotations, since the page does the signing for us.


Local dev & deploy

npm install
mkdir -p storage/key_value_stores/default
cat > storage/key_value_stores/default/INPUT.json <<'JSON'
{
"videoUrls": ["https://www.tiktok.com/@khaby.lame/video/7321234567890123456"],
"commentsPerVideo": 50
}
JSON
npm start

Push to Apify:

npm install -g apify-cli
apify login
cd apify-tiktok-comments-scraper
apify push

After upload, set monetization to Pay per result → bind comment-scraped event → $0.50 / 1K.


Using this actor via MCP (Claude / Cursor / ChatGPT)

The actor is auto-exposed as a tool by Apify MCP Server at https://mcp.apify.com/.

Cursor / Claude Desktop config

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/",
"transport": "streamable-http",
"headers": {
"Authorization": "Bearer apify_api_xxxxxxxx"
}
}
}
}

Then, in chat:

"Use the tiktok-comments-scraper actor to grab the 200 most-liked comments on https://www.tiktok.com/@khaby.lame/video/7321234567890123456 — include replies."

Apify MCP Server reads the input_schema.json to build the tool definition and the dataset_schema.json to advertise the output shape to the LLM, so the agent knows what fields to expect back.


License & disclaimer

MIT. Scrape only public data and respect TikTok's terms. You are responsible for compliance with applicable laws and platform policies.