TikTok Comments Scraper avatar

TikTok Comments Scraper

Pricing

from $0.50 / 1,000 tiktok comment or replies

Go to Apify Store
TikTok Comments Scraper

TikTok Comments Scraper

A simple, fast TikTok comment scraper for public video and photo posts. Collect comments and replies in clean JSON or CSV with text, likes, language, timestamps, authors, and thread IDs. Built for brand monitoring, sentiment analysis, creator research, and AI. Pay only for saved results.

Pricing

from $0.50 / 1,000 tiktok comment or replies

Rating

0.0

(0)

Developer

Chronometrica

Chronometrica

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

19 hours ago

Last modified

Share

๐Ÿ’ฌ What does TikTok Comments Scraper do?

TikTok Comments Scraper is a simple, fast way to collect public TikTok comments and replies from known video and photo posts. Paste full post URLs or numeric post IDs and get clean, structured JSON or CSV with one analysis-ready row for every saved comment or reply.

Use it to collect large comment datasets for brand monitoring, social listening, creator research, thesis data collection, sentiment analysis, AI, spreadsheets, warehouses, and automated monitoring. The structured output is easy to analyze and includes stable post and comment IDs, comment text, public author details, timestamps, likes, language, reply links, and visible creator signals.

The Actor uses logged-out public TikTok data. It does not need your TikTok account, cookies, API key, or copied browser session. It does not access private posts or bypass access controls.

With TikTok Comments Scraper, you can:

  • ๐Ÿ“ฃ Study public reactions to brands, products, campaigns, and creators.
  • ๐Ÿ”Ž Find the words, questions, and topics audiences use in real comments.
  • ๐Ÿง  Build datasets for sentiment analysis, topic modeling, and AI workflows.
  • ๐Ÿง‘โ€๐Ÿ”ฌ Collect structured public comments for academic and market research.
  • ๐Ÿ’ฌ Preserve reply threads with stable parent and reply IDs.
  • ๐Ÿ–ผ๏ธ Collect comments from both TikTok video and photo/carousel posts.
  • ๐Ÿ“Š Export results as JSON, JSONL, CSV, Excel, XML, RSS, or HTML.
  • ๐Ÿ” Run scheduled jobs through the Apify API, SDKs, webhooks, and integrations.

๐Ÿ“ฆ What TikTok comment data can I extract?

Each default-dataset row represents one real public TikTok comment or reply. Replies are separate rows, which keeps CSV, SQL, and per-row billing simple.

Data groupMain fields
๐Ÿ”— Post identityinputUrl, postUrl, postId
๐Ÿ’ฌ CommentcommentId, text, language, createdAt, likesCount
๐Ÿงต Reply threadparentCommentId, replyToCommentId, isReply, replyDepth, replyCount
๐Ÿ‘ค Public authorauthorId, authorHandle, authorDisplayName, authorUrl, authorAvatarUrl, authorVerified
โค๏ธ Creator signalsisPinned, isHeartedByCreator
๐Ÿ“Œ CollectioncommentIndex, replyIndex, status, scrapedAt

Public values that TikTok does not expose stay null. Missing values are not guessed or replaced with fake zeroes.

โœจ Why use this Actor?

  • โœ… Analysis-ready rows: one stable shape for both comments and replies.
  • ๐Ÿช„ Simple setup: paste post URLs, choose a limit, and start the run. No code is required.
  • ๐Ÿ†” Strict post identity: every saved row is checked against the requested TikTok post ID.
  • ๐Ÿงน Run-wide deduplication: equivalent post inputs and repeated comment IDs are collected once.
  • ๐Ÿงต Valid reply links: replies carry their top-level parent ID so you can rebuild each thread.
  • ๐Ÿ–ผ๏ธ Video and carousel support: use full /video/ and /photo/ URLs.
  • ๐Ÿšฆ Honest empty results: invalid, unsupported, unavailable, and no-public-comment inputs appear in the run summary instead of becoming charged fake rows.
  • ๐ŸŽ›๏ธ Clear limits: caps apply per post, replies have their own cap, and the summary explains whether the Actor reached a cap or exhausted public rows.
  • ๐Ÿ’ธ Clear billing: one saved comment or reply is one result. Platform usage is included.
  • ๐Ÿ”’ Public-data boundary: no user login, cookies, or private TikTok data.

In a fixed July 2026 production test, the Actor saved 1,000 unique comments from 10 public posts in 46.9 seconds. The test produced no wrong-post rows and no output duplicates. Live speed and available comment volume can vary by post and over time.

โš™๏ธ Can I use this Actor through an API?

Yes. Run TikTok Comments Scraper manually in Apify Console or connect it to:

  • Apify API
  • Python SDK
  • JavaScript SDK
  • Webhooks
  • Scheduled runs
  • Make, Zapier, n8n, Google Sheets, and other Apify integrations

This makes the Actor useful for repeatable research, dashboards, data warehouses, AI pipelines, and monitoring jobs.

๐Ÿ”Œ API example

Start a run with the Apify API. Keep your token in an environment variable or secret store; do not commit it to source code.

curl -X POST \
"https://api.apify.com/v2/acts/chronometrica~tiktok-comments-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"startUrls": ["https://www.tiktok.com/@zachking/video/7631200623693729038"],
"maxCommentsPerVideo": 100,
"includeReplies": false,
"maxRepliesPerComment": 10
}'

Use the returned run ID to check status, download dataset items, or connect a webhook. The same input works with the Apify JavaScript and Python clients.

๐ŸŽฏ Why scrape TikTok comments?

Use caseHow the data helps
๐Ÿ“ฃ Brand monitoringLearn how audiences react to campaigns and products.
๐Ÿ•ต๏ธ Competitor researchSee what people praise, dislike, and ask competitors.
๐Ÿค Creator researchReview audience quality and public reactions before a partnership.
๐Ÿง  Sentiment datasetsSupply clean text for your own sentiment or topic model.
๐Ÿง‘โ€๐Ÿ”ฌ Academic researchCollect structured public discussion for reproducible analysis.
๐Ÿ” Ongoing monitoringSchedule the same known posts and compare public reactions over time.

The Actor supplies public source data. It does not add automatic sentiment labels or make claims about a person's intent.

๐Ÿ’ต Pricing

TikTok Comments Scraper uses pay-per-result pricing. One result means one successful public comment or reply written to the default dataset.

Apify planPrice per 1,000 comments or replies
Free$1.00
Starter$0.80
Scale$0.60
Business$0.50

Platform usage is included. There is no start fee and no minimum run charge. Invalid inputs, unsupported URLs, unavailable posts, empty public results, and duplicate inputs do not create result rows and are not charged as results.

Use maxCommentsPerVideo, includeReplies, and maxRepliesPerComment to control result volume before a run. Replies are additional result rows.

Example result charges:

Saved rowsFreeBusiness
100$0.10$0.05
1,000$1.00$0.50
10,000$10.00$5.00

๐Ÿš€ How do I use TikTok Comments Scraper?

  1. Open TikTok Comments Scraper in Apify Console.
  2. Paste one or more full TikTok video or photo post URLs, or numeric post IDs.
  3. Choose the maximum number of top-level comments per post.
  4. Turn on replies only if you need them, then set the reply cap.
  5. Click Start.
  6. Open Output to inspect the dataset and run summary.
  7. Download the data or send it to another tool through an integration.

โฌ‡๏ธ Input

{
"startUrls": ["https://www.tiktok.com/@zachking/video/7631200623693729038"],
"maxCommentsPerVideo": 100,
"includeReplies": false,
"maxRepliesPerComment": 10
}

๐Ÿ”— Supported post inputs

  • Full https://www.tiktok.com/@user/video/POST_ID URLs
  • Full https://www.tiktok.com/@user/photo/POST_ID URLs
  • http or https
  • www, non-www, and mobile TikTok hosts
  • Full URLs copied without http:// or https://
  • Full URLs with query parameters
  • Numeric TikTok post IDs

Equivalent inputs for the same post are collected once. TikTok short links such as vm.tiktok.com and vt.tiktok.com are not supported yet. Resolve them to a full post URL before running the Actor.

๐ŸŽ›๏ธ Input settings

SettingWhat it controls
startUrlsAdd 1โ€“100 public TikTok video or photo URLs, or numeric post IDs.
maxCommentsPerVideoSave 1โ€“1,000 unique top-level comments for each post. Default: 100. Replies do not count toward this cap.
includeRepliesSave public replies as separate rows. Default: off. Turning it on can increase runtime and cost.
maxRepliesPerCommentSave 1โ€“100 replies under each saved top-level comment when replies are enabled. Default: 10.

โฌ†๏ธ Output sample

{
"inputIndex": 0,
"inputUrl": "https://www.tiktok.com/@example/video/7631200623693729038",
"platform": "tiktok",
"postUrl": "https://www.tiktok.com/@example/video/7631200623693729038",
"postId": "7631200623693729038",
"commentId": "7600000000000000001",
"parentCommentId": null,
"replyToCommentId": null,
"isReply": false,
"replyDepth": 0,
"commentIndex": 0,
"replyIndex": null,
"text": "Example public comment",
"language": "en",
"createdAt": "2026-07-12T18:30:00.000Z",
"createTime": 1783881000,
"likesCount": 42,
"replyCount": 3,
"authorId": "7000000000000000001",
"authorHandle": "example_user",
"authorDisplayName": "Example User",
"authorUrl": "https://www.tiktok.com/@example_user",
"authorAvatarUrl": "https://example.com/avatar.jpeg",
"authorVerified": false,
"isPinned": false,
"isHeartedByCreator": false,
"status": "ok",
"scrapedAt": "2026-07-12T22:00:00.000Z"
}

Every dataset row has status: "ok". Inputs that do not produce a real public comment row are explained in the OUTPUT run summary instead.

๐Ÿงต Comment and reply fields

  • commentId is the stable row identity used for deduplication.
  • parentCommentId is null for a top-level comment. For a reply, it points to the saved top-level parent row.
  • replyToCommentId identifies the directly replied-to comment when TikTok exposes it.
  • commentIndex and replyIndex are zero-based saved positions, not TikTok relevance scores.
  • replyCount is the public reply total for a top-level comment. It is null on reply rows because it is not applicable there.
  • createdAt and createTime describe when TikTok says the comment was created. scrapedAt describes when this Actor collected the row.
  • isPinned, isHeartedByCreator, and authorVerified stay null if TikTok does not expose the public flag. They are not guessed as false.

๐Ÿงพ Run summary

The OUTPUT record helps you check the whole run. It includes:

  • inputs received and unique posts planned;
  • duplicate post inputs skipped;
  • posts attempted and posts with rows;
  • top-level comments and replies written;
  • candidates seen and duplicate comments skipped;
  • public outcome and stop-reason counts;
  • safe details for inputs that did not produce rows;
  • request, retry, and pagination totals.
Input outcomeMeaningResult charge
okOne or more public comment rows were saved.One charge per saved row
no_public_commentsThe public post resolved, but TikTok returned no public comments.None
deleted_or_unavailableThe post could not be validated as publicly available.None
privateThe post was not available to logged-out public viewers.None
blocked_or_challengedTikTok did not expose public comments for that request.None
invalid_inputThe input was not a TikTok post URL or numeric post ID.None
unsupported_urlThe URL was TikTok-related but outside the supported post formats.None
failed or partialA temporary request stopped all or part of the post collection.Saved rows only

If a post produces no rows, check failedInputDetails in OUTPUT. It keeps the input, post ID when available, outcome, plain-language reason, and whether a retry may help. The Actor does not hide an empty result behind a successful dataset row.

๐Ÿ”’ Public-data boundary

TikTok Comments Scraper uses logged-out public TikTok surfaces only.

It does not:

  • request your TikTok username or password;
  • use your account, cookies, or copied browser session;
  • collect private or followers-only posts;
  • solve access challenges or bypass login controls;
  • discover posts from profiles, keywords, or hashtags;
  • download TikTok videos or photos;
  • promise every comment shown by TikTok's displayed total.

โš ๏ธ Limits and interpretation

  • TikTok decides which comments and replies are visible to logged-out public viewers.
  • Deleted, hidden, filtered, region-limited, or moderated comments may not be available.
  • A displayed TikTok comment total can be higher than the rows available from the public continuation source.
  • maxCommentsPerVideo and maxRepliesPerComment are hard saved-row caps, not promises that every post has that much public inventory.
  • Comment order follows the public source order. It is not a custom relevance, sentiment, or most-liked ranking.
  • Likes, replies, author details, pins, hearts, and public availability can change between runs.
  • Short TikTok share links are not supported yet.

โ“ FAQ

Does this Actor need a TikTok API key or login?

No. It uses logged-out public TikTok data and does not need your account, cookies, or API key.

Yes. Paste the full /photo/POST_ID URL. Comments and replies use the same dataset shape as video-post comments.

Are replies charged?

Yes. Each successfully saved reply is its own dataset row and result. Leave includeReplies off when you only need top-level comments.

Why did I receive fewer comments than the displayed TikTok total?

TikTok's displayed total and its logged-out public continuation inventory can differ. The run summary reports whether the Actor reached your cap or exhausted the available public source.

How does deduplication work?

Equivalent URLs and IDs for the same post are collected once per run. Saved rows are deduplicated by TikTok's stable comment ID.

Can it collect private posts or comments that require login?

No. Private, account-only, and otherwise unavailable data is outside the Actor's public-data boundary.

๐Ÿ† Best practices

  • ๐ŸŽฏ Start with 50โ€“100 comments while testing a new workflow.
  • ๐Ÿ’ฌ Turn on replies only when conversation threads matter to your analysis.
  • ๐Ÿ”— Use full video or photo URLs instead of TikTok short links.
  • ๐Ÿงพ Check OUTPUT before treating a small dataset as a failure.
  • ๐Ÿ†” Join and deduplicate downstream work with postId and commentId.
  • ๐Ÿ” Schedule repeated runs when you need to observe public comment changes over time.

๐Ÿ›Ÿ Support

For help, include the Apify run ID, one example input URL or post ID, what you expected, and the status shown in OUTPUT. Do not send TikTok passwords, cookies, session data, or private links.

โš–๏ธ Responsible use

This Actor collects data that TikTok exposes to logged-out public viewers at run time. You are responsible for using the data lawfully and for following applicable privacy, data-protection, research, and platform rules. Avoid using public comments to harass people, infer sensitive traits, or make automated high-impact decisions about individuals.

Combine this Actor with our other social media scrapers for discovery, performance tracking, comment research, and transcript collection.

TikTok

Facebook

Instagram

YouTube