TikTok Comments Scraper
Pricing
from $0.50 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
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
| Field | Use it for |
|---|---|
aweme_id | Video ID or full video URL. Required. |
maxItems | Maximum total rows, replies included. Default 100. Set 0 for no limit. |
addonCommentReplies | Fetch replies and save each as its own row. Off by default. |
maxRepliesPerComment | Cap 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
| Field | Contents |
|---|---|
aweme_id | The video these comments belong to |
comment_id | Comment ID |
parent_comment_id | The parent's ID on reply rows; null on top-level comments |
is_reply | true on reply rows, false on top-level ones |
comment_text | The comment itself |
stats | Likes, 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.
Related Actors
| Actor | Purpose |
|---|---|
| Bulk TikTok Video Scraper | The video's own stats and metadata |
| TikTok Profile Videos Scraper | Get video IDs from an account first |