TikTok Comment Scraper - Export Comments & Replies
Pricing
from $3.00 / 1,000 per-run start fees
TikTok Comment Scraper - Export Comments & Replies
Export the comments of any public TikTok video: text, author, likes, reply count, language and timestamp, plus reply threads on request. One row per comment for brand monitoring, audience research and giveaways. No login needed.
Pricing
from $3.00 / 1,000 per-run start fees
Rating
0.0
(0)
Developer
SR
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
This TikTok comment scraper turns the comments under any public TikTok video into a clean table: paste video links, get one row per comment with the text, who wrote it, when, how many likes it drew and how many replies it has. Built for brand monitoring, audience research, giveaways and social listening.
Turn on Include replies to collect the first page of replies per thread, up to fifty replies per thread and within the same per-video limit. Every reply carries the id of the comment it answers, so a flat table reconstructs into threads without guessing. Export the result as JSON, CSV or Excel, or read it straight from the API.
What the TikTok comment scraper does
- Reads the comments of one or many TikTok videos in a single run.
- Accepts full video links, links with tracking parameters, photo-post links or bare video ids.
- Returns the comment text, author handle and nickname, likes, reply count, creation time and language.
- Optionally adds the reply threads under each comment, linked to their parent.
- Marks the comments the video's creator liked, which is the fastest way to find the replies a brand or creator actually engaged with.
- No TikTok account, login or API key needed.
Input
| Field | Type | Default | What it does |
|---|---|---|---|
videos | list of strings, required | — | TikTok video links or ids, one per line. Duplicates are read once. |
maxCommentsPerVideo | integer, 1–2000 | 200 | Maximum comments per video, top-level comments and replies together. |
includeReplies | boolean | false | Also fetch the reply thread under every comment that has one. |
country | string | us | Two-letter country code to read from. |
language | string | en | Two-letter language code. |
Example input:
{"videos": ["https://www.tiktok.com/@tiktok/video/7106594312292453675"],"maxCommentsPerVideo": 200,"includeReplies": false,"country": "us","language": "en"}
Output: one row per TikTok comment
| Field | Type | Meaning |
|---|---|---|
comment_id | string | TikTok's id of the comment |
video_id | string | The video the comment belongs to |
parent_comment_id | string or null | On a reply, the comment it answers; null on top-level comments |
is_reply | boolean | Whether the row is a reply |
text | string or null | The comment text |
created_at | string or null | When it was posted, ISO 8601 in UTC |
like_count | integer or null | Likes on the comment |
reply_count | integer or null | Replies under the comment; null on reply rows |
liked_by_author | boolean | Whether the video's creator liked the comment |
is_author | boolean or null | true when the creator pinned the comment, otherwise null |
language | string or null | The language TikTok detected |
handle, nickname, user_id | string or null | Who wrote it |
user_url, avatar_url | string or null | Profile link and avatar image (the avatar link expires after a while) |
user_region, user_signature | string or null | Kept for compatibility; TikTok's comment data usually leaves them empty |
video_comment_total | integer or null | How many comments the video has in total, according to TikTok |
position | integer | Running position of the row in the run, starting at 1 |
fetched_at | string | When the row was collected |
source, platform | string | tiktok-comment-scraper and tiktok |
post_id, author_handle, author_id, posted_at, likes | The same values under the shared names our other social scrapers use, so comment tables from different networks line up | |
is_pinned | boolean | Whether the creator pinned the comment, as a plain true or false |
A real top-level comment from the default input:
{"comment_id": "7128453658077397765","video_id": "7106594312292453675","parent_comment_id": null,"is_reply": false,"text": "Tiktok and Minecraft??","created_at": "2022-08-05T18:01:11+00:00","like_count": 3,"reply_count": 0,"liked_by_author": false,"is_author": null,"language": "en","handle": "awwmanbro","nickname": "a","user_id": "6653810561643937797","user_region": null,"user_signature": null,"user_url": "https://www.tiktok.com/@awwmanbro","avatar_url": "https://p19-common-sign.tiktokcdn-us.com/tos-maliva-avt-0068/37c63c610a9c03e111bb4431f517e766~tplv-tiktokx-cropcenter:100:100.jpg?dr=9640&refresh_token=bb87af79&x-expires=1791144000&x-signature=51WwhovL81pEUSy%2BBLJ5zHAgihA%3D&t=4d5b0474&ps=13740610&shp=30310797&shcp=ff37627b&idc=useast5","video_comment_total": 1269,"position": 1,"fetched_at": "2026-10-03T20:24:11.141Z","source": "tiktok-comment-scraper","platform": "tiktok","post_id": "7106594312292453675","author_handle": "awwmanbro","author_id": "6653810561643937797","posted_at": "2022-08-05T18:01:11+00:00","likes": 3,"is_pinned": false}
And a real reply, with parent_comment_id pointing to its thread:
{"comment_id": "7410253600171983622","video_id": "7394483432811728171","parent_comment_id": "7394527655468712747","is_reply": true,"text": "What’s this?","created_at": "2024-09-03T03:28:45+00:00","like_count": 0,"reply_count": null,"liked_by_author": false,"is_author": null,"language": "en","handle": "zeakyfreaky_","nickname": "ZeakyFREAKY😍","user_id": "6999739079425213446","user_region": null,"user_signature": null,"user_url": "https://www.tiktok.com/@zeakyfreaky_","avatar_url": "https://p19-common-sign.tiktokcdn-us.com/tos-alisg-avt-0068/b0ae2186f1af54b6c325ddeec0ed1cae~tplv-tiktokx-cropcenter:100:100.jpg?dr=9640&refresh_token=05348063&x-expires=1791144000&x-signature=AjCxX6xLrMcEDaccFgHORkevMHM%3D&t=4d5b0474&ps=13740610&shp=30310797&shcp=ff37627b&idc=useast8","video_comment_total": 468,"position": 99,"fetched_at": "2026-10-03T20:24:38.215Z","source": "tiktok-comment-scraper","platform": "tiktok","post_id": "7394483432811728171","author_handle": "zeakyfreaky_","author_id": "6999739079425213446","posted_at": "2024-09-03T03:28:45+00:00","likes": 0,"is_pinned": false}
Rows come in input order: per video first the top-level comments in TikTok's order, then the replies
thread by thread. Besides the dataset, each run stores a summary record (videos, comments, replies,
videos without comments, seconds spent, error count) and, when something went wrong, an errors record.
How many TikTok comments you can get
Comments arrive fifty at a time and paging follows TikTok's own cursor, so a long conversation follows
the pages TikTok makes available. TikTok can end the stream before its reported total: on a video with
over a thousand comments, it typically serves a few hundred. Maximum comments per video caps the
run; 200 is the default and finishes in a few seconds per video. video_comment_total next to the
rows you received tells you what share of a conversation you are holding.
Replies cost one extra request per thread, so a video with many replied-to comments takes noticeably longer with the option on. Replies only fill what the top-level comments leave of the per-video limit, so raise Maximum comments per video when you want both. Leave the option off when you only want the top-level conversation.
Use cases for a TikTok comment export
- Brand and product monitoring: read what people say under your own videos, a competitor's launch or an influencer campaign, and spot complaints and questions early.
- Audience and market research: collect the words real viewers use, then run sentiment, topic or keyword analysis in a spreadsheet, BI tool or language model.
- Giveaways: export every comment of a giveaway video and pick a winner from a complete, timestamped list.
- Influencer vetting: check whether an account's comments come from a real, engaged audience and how often the creator answers.
- Community management: find the comments the creator liked or pinned, and the threads with the most replies.
Errors
A video that cannot be read becomes an entry in the errors record rather than a missing set of rows,
and the rest of the run goes on:
| Code | Meaning |
|---|---|
bad_input | Not a TikTok video link or id |
no_comments | The video was read and has no comments |
refused | TikTok declined to serve that page; worth a rerun |
bad_payload | TikTok sent something that was not comment data; worth a rerun |
signer_unavailable | The run could not prepare itself; rerun |
no_comments and refused are deliberately different. A video nobody has commented on and a request
TikTok declined look identical if you only count rows, and only one of them is worth rerunning.
TikTok comment scraper compared with the alternatives
| Option | What you get | Limits |
|---|---|---|
| Copying comments by hand | Whatever you can paste | Slow, no likes, ids or timestamps |
| Browser extensions and export websites | A file per video | One video at a time, often a daily cap or a subscription, no API |
| TikTok's official Research API | Comment data | Only for approved researchers, with an application process |
| This actor | One structured row per comment and reply, for many videos per run | Pay per comment, schedulable, API and integrations included |
Because the output is a plain dataset, you can schedule runs, send the rows to Google Sheets, a webhook or your own database, and combine them with other Apify actors.
Run settings
The default run settings work with the standard input. Large lists are collected in successive batches automatically.
Pricing
The price is $0.003 per run plus $0.0003 per comment or reply delivered, so $0.30 per 1,000 comments.
- One video with the default 200 comments: $0.003 + $0.06 = $0.063.
- Ten videos with 200 comments each: $0.003 + $0.60 = $0.603.
- A valid video with no comments incurs only the run fee.
- Input without any usable video incurs no fee.
Users without a paid Apify plan receive up to ten comments per run and pay only for those delivered comments.
FAQ
Do I need a TikTok account or login to scrape TikTok comments? No. The actor reads public comments without logging in, and you never share credentials.
Can I export TikTok comments to Excel or CSV? Yes. Every run produces a dataset that you can download as CSV, Excel, JSON or XML from the run page, or read through the Apify API.
Does the TikTok comment scraper get replies too?
Yes, with Include replies on. Each thread gives its first page of up to fifty replies, within the per-video limit, and every reply links to its parent through parent_comment_id.
Why did I get fewer comments than the video shows?
TikTok itself stops serving comments before its reported total on large videos. Compare the rows with video_comment_total to see how much of the conversation you hold.
Can I scrape the comments of several videos at once?
Yes. Put as many video links or ids in videos as you need; the limit applies per video.
Can I scrape comments from private videos? No. Only comments that TikTok shows publicly can be collected.
Related actors
For finding videos by keyword rather than reading one, use TikTok Search Scraper. For an account's whole catalogue, use TikTok Scraper - Profiles, Videos & Hashtags. For the video files, use TikTok Video Downloader.