Pricing
from $0.50 / 1,000 tiktok comments
TikTok Comments Scraper
Scrape TikTok video comments and replies into clean JSON with author details, engagement counts, timestamps, mentions, hashtags, and video status records.
Pricing
from $0.50 / 1,000 tiktok comments
Rating
0.0
(0)
Developer
Actor stats
0
Bookmarked
7
Total users
4
Monthly active users
a day ago
Last modified
Categories
Share
What does TikTok Comments & Replies Scraper do?
TikTok Comments & Replies Scraper extracts public comments and reply threads from TikTok video URLs into clean JSON, CSV, Excel, or API-ready datasets. It is a TikTok comments API alternative for social listening, sentiment analysis, moderation review, audience research, campaign tracking, and creator analytics.
At a glance: input examples, output examples, use cases, limitations, troubleshooting, and pricing/cost guidance are included below for small public comment checks before larger exports.
The Actor collects one row per comment or reply, deduplicates repeated comment IDs, and writes results while the run is still in progress. It is unofficial and is not affiliated with, endorsed by, or sponsored by TikTok.
Why use this TikTok comments scraper?
- Monitor audience reactions on public TikTok videos for brand, product, campaign, or creator research.
- Export TikTok comments for sentiment analysis, topic modeling, moderation workflows, and reporting.
- Collect replies when conversation context matters, not only top-level comments.
- Process one video or many videos in the same run.
- Keep partial results if TikTok limits a later page after useful comments were already collected.
- Use Apify scheduling, API access, integrations, proxy routing, and run monitoring.
What data can it extract?
| Field | Type | Description |
|---|---|---|
record_type | string | comment, reply, or video_status. |
video_id / video_url | string | TikTok video ID and resolved video URL. |
comment_id | string | Unique TikTok comment or reply ID. |
parent_comment_id | string | Parent comment ID for replies. |
text | string | Comment or reply text. |
like_count / reply_count | integer | Engagement counts returned by TikTok. |
create_time | string | Comment creation time in ISO 8601 format. |
author_unique_id / author_nickname | string | Public author username and display name. |
mentions / hashtags | array | Structured entities found in comment text when available. |
image_urls / sticker_urls | array | Comment images or stickers when TikTok returns them. |
status / error | string | Per-video status and error message for status rows. |
How to scrape TikTok comments
- Open the Actor on Apify.
- Paste one or more public TikTok video URLs or raw numeric video IDs into TikTok video URLs or IDs.
- Set Max top-level comments per video.
- Turn on Include replies only when you need reply threads.
- Start the run.
- Open the dataset while the run is still active to inspect streamed results.
- Download the dataset in JSON, CSV, Excel, HTML, or XML, or consume it through the Apify API.
Input
The simplest input is a list of TikTok videos and a comment limit:
{"videoUrls":["https://www.tiktok.com/@khaby.lame/video/7623088450576633119"],"maxCommentsPerVideo":100,"includeReplies":false}
You can also use raw video IDs:
{"videoUrls":["7623088450576633119"],"maxCommentsPerVideo":1000}
Basic options
videoUrls- public TikTok video URLs, short TikTok URLs, or raw numeric video IDs.maxCommentsPerVideo- maximum number of top-level comments to collect from each video.includeReplies- fetch replies under collected top-level comments.maxRepliesPerComment- maximum replies to collect under each top-level comment when replies are enabled.
Advanced options
maxSecondsPerVideo- optional soft limit for one video. Use0or omit it for the safest default. A very small value can stop a video before TikTok finishes responding.cookieHeader- optional TikTok Cookie header from an authorized browser session. This can help when TikTok limits anonymous sessions.
Advanced scraping controls such as proxy routing, request pacing, retries, and media blocking are tuned automatically. Older compatible input aliases such as url, urls, video_urls, maxItems, maxComments, and maxReplies are still accepted.
Output
You can download the dataset in various formats such as JSON, HTML, CSV, XML, or Excel. Comment and reply rows are pushed as they are found. A video_status row is written after each input video so empty, failed, or partial videos are visible.
{"record_type":"comment","video_id":"7623088450576633119","video_url":"https://www.tiktok.com/@khaby.lame/video/7623088450576633119","comment_id":"7623156888573592333","parent_comment_id":"","is_reply":false,"text":"Example comment text","like_count":12,"reply_count":2,"create_time":"2026-05-28T10:15:00Z","author_unique_id":"example_user","author_nickname":"Example User","scraped_at":"2026-06-17T15:00:00Z"}
{"record_type":"video_status","video_id":"7623088450576633119","video_url":"https://www.tiktok.com/@khaby.lame/video/7623088450576633119","status":"succeeded","top_level_comments":1000,"replies":0,"total_rows":1000,"api_pages":20,"duplicate_comments":0,"scraped_at":"2026-06-17T15:07:59Z"}
The run summary is available in the default key-value store as OUTPUT_SUMMARY.
Python API usage
from apify_client import ApifyClientTOKEN ="YOUR_APIFY_TOKEN"ACTOR_ID ="thescrapelab/tiktok-comments-scraper"client = ApifyClient(TOKEN)actor_client = client.actor(ACTOR_ID)run_input ={"videoUrls":["https://www.tiktok.com/@khaby.lame/video/7623088450576633119"],"maxCommentsPerVideo":100,"includeReplies":False,}run = actor_client.call(run_input=run_input)if run isNone:raise RuntimeError("Actor run failed")dataset = client.dataset(run["defaultDatasetId"])for item in dataset.list_items().items:if item.get("record_type")in{"comment","reply"}:print(item.get("comment_id"), item.get("text"))
How much does it cost to scrape TikTok comments?
Cost depends on TikTok response behavior, proxy transfer, selected memory, number of videos, number of comments, and whether replies are enabled. In June 2026 production tests at 1024 MB:
- 10 top-level comments used about
$0.0025platform usage. - 100 top-level comments used about
$0.0091platform usage. - 1,000 top-level comments used about
$0.0765platform usage.
Small runs cost more per comment because browser and signature startup are paid once per run. Larger capped runs usually have a lower cost per comment. Empty or blocked videos can still consume proxy transfer, so very small runs and invalid URLs should be kept clean.
Recommended Store pricing is pay per event: one event per useful comment or reply, plus a small per-processed-video event to cover empty videos and startup overhead. The configured launch price is $0.0005 per comment or reply and $0.02 per processed video, with platform usage included in the public price.
Tips for reliable runs
- Prefer raw numeric video IDs or full public TikTok
/video/URLs. - Keep
includeRepliesoff unless you need thread context; replies require extra requests. - Use larger
maxCommentsPerVideovalues when you need many comments from one video, because startup cost is amortized. - Leave
maxSecondsPerVideoempty or0unless you need to prevent one video from consuming a multi-video run. - Use
cookieHeaderonly with cookies you are authorized to use.
Troubleshooting
Why did my run return only a video status row?
TikTok may have returned no comments to the current session, challenged the session, blocked a page, or the video ID may be invalid. Check the status and error fields in the video_status row.
Why are small runs more expensive per comment?
Each run has browser, signature, and proxy startup overhead. A 1-comment smoke test is useful for validation, but larger runs are usually cheaper per result.
Why did an invalid URL fail immediately?
The Actor validates non-TikTok inputs before starting expensive scraping infrastructure. Use a public TikTok URL, short TikTok URL, or raw numeric video ID.
Can I scrape private TikTok comments?
No. The Actor is intended for public TikTok content available to the session used for the run.
Can I include replies?
Yes. Enable includeReplies and set maxRepliesPerComment. Reply collection costs more because each comment thread can require additional TikTok requests.
Limits and caveats
TikTok changes its web API and challenge behavior often. Results can vary by session, region, cookies, proxy routing, deleted comments, hidden comments, age restrictions, and TikTok availability. The Actor does not claim complete coverage of every comment on every video.
Our Actors are ethical and do not extract private user data such as email addresses, gender, or location. They only extract data that users have chosen to share publicly. However, results may contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. Do not scrape personal data unless you have a legitimate reason. If you are unsure whether your reason is legitimate, consult your lawyers.
For help, use the Issues tab on the Actor page and include the run ID, input settings, and a short description of the problem.
