TikTok Comments Scraper avatar

TikTok Comments Scraper

Pricing

from $0.50 / 1,000 results

Go to Apify Store
TikTok Comments Scraper

TikTok Comments Scraper

Extract TikTok video comments. Just add a video ID and get comment text, IDs, reply threads with parent comment IDs, and engagement statistics for every comment. Export the data, run it via API, or schedule and monitor comment volume.

Pricing

from $0.50 / 1,000 results

Rating

0.0

(0)

Developer

ToolzerHub

ToolzerHub

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

Collect the comments on a TikTok video. Optionally pull each comment's replies too, saved as their own rows with a pointer back to the parent.

Input

FieldUse it for
aweme_idVideo ID or full video URL. Required.
maxItemsMaximum total rows, replies included. Default 100. Set 0 for no limit.
addonCommentRepliesFetch replies and save each as its own row. Off by default.
maxRepliesPerCommentCap on replies per top-level comment. Default 3. Set 0 for no per-comment cap.
{
"aweme_id": "https://www.tiktok.com/@khaby.lame/video/7530466721379978522",
"maxItems": 500,
"addonCommentReplies": true,
"maxRepliesPerComment": 5
}

The two limits, and how they interact

This is the part worth reading twice.

maxItems counts everything. Top-level comments and replies come out of the same budget. With maxItems: 100 and replies switched on, you might get 40 comments and 60 replies -- not 100 comments each with their replies on top.

maxRepliesPerComment is a second, narrower cap. It bounds replies for one parent. Set it to 5 and a comment with 200 replies contributes 5 rows.

When both are set, the tighter one wins at every step. A run near its maxItems ceiling will fetch fewer replies than maxRepliesPerComment allows, because there is no budget left.

If you want top-level comments only, leave addonCommentReplies off. That is the default.

Output

FieldContents
aweme_idThe video these comments belong to
comment_idComment ID
parent_comment_idThe parent's ID on reply rows; null on top-level comments
is_replytrue on reply rows, false on top-level ones
comment_textThe comment itself
statsLikes, and the reply count TikTok reports
{
"aweme_id": "7530466721379978522",
"comment_id": "7530512309847265042",
"parent_comment_id": null,
"is_reply": false,
"comment_text": "this man never says a word and still wins",
"stats": { "digg_count": 18420, "reply_comment_total": 37 }
}

Filter on is_reply to split the two, or group on parent_comment_id to rebuild threads.

Questions

Replies are on, but some comments produced none. Why? Because TikTok reported reply_comment_total as 0 for them, so no reply request was made. Skipping those saves you a request per childless comment, which on a busy video is most of them.

A reply fetch failed mid-run. Did I lose the rest? No. The failure is logged against that one parent comment and the run carries on with the next. You lose that comment's replies, not the run.

Why did the run stop before maxItems? TikTok ended pagination -- no more pages, an empty page, or the same cursor returned twice. Popular videos stop handing out cursors well before their full comment count is reachable, so a video showing 400,000 comments will not yield 400,000 rows.

Can I pass several videos at once? No, one video per run. Run it once per video, or chain it after the Profile Videos Scraper to feed IDs in.

ActorPurpose
Bulk TikTok Video ScraperThe video's own stats and metadata
TikTok Profile Videos ScraperGet video IDs from an account first