TikTok Comments Scraper avatar

TikTok Comments Scraper

Pricing

$0.30 / 1,000 comments

Go to Apify Store
TikTok Comments Scraper

TikTok Comments Scraper

Scrape TikTok comments and replies from any video: text, likes, reply counts, authors, mentions, and dates. No login, no browser. Export to JSON, CSV, Excel.

Pricing

$0.30 / 1,000 comments

Rating

0.0

(0)

Developer

Donjuan

Donjuan

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

TikTok Comments Scraper: comments, replies, likes, and authors from any video

TikTok Comments Scraper collects the public comments of TikTok videos and photo posts. For every comment you get the text, its language, the publish date, likes, the reply count, the author's username, display name, and avatar, users mentioned in it, attached images, and whether the creator liked or pinned it. Turn on replies to get each thread too, with every reply linked to the comment it answers.

You don't need a TikTok account, an API key, or any code. Paste the post links, press Start, and download the comments as JSON, CSV, Excel, XML, or HTML. Or pull them straight into your app through the Apify API.

What can you do with TikTok comments?

  • Measure how people react. Read what viewers say about your video, a competitor's campaign, or a product launch, and run sentiment analysis on the text.
  • Find questions and complaints. Comments are where buyers ask about price, sizes, and shipping. Pull them into a spreadsheet and answer in bulk.
  • Spot your most engaged fans. Sort by likes and replies to find the commenters who drive the conversation, then reach out to them.
  • Check a creator before a deal. Real comments tell you more about an audience than follower counts do.
  • Run giveaways. Collect every comment on a giveaway post and pick a winner from the list.
  • Build datasets. Export thousands of comments in many languages for research or model training.

What data does TikTok Comments Scraper extract?

GroupFields
Commentcomment ID, text, detected language, publish time (Unix and ISO 8601), likes, reply count
Threadtype (comment or reply), the ID of the comment a reply answers
Authoruser ID, username, display name, profile URL, avatar
Creator signalsliked by the creator, pinned by the creator
Mentionsusers tagged in the comment, with user ID and secUid
Mediaimages attached to the comment
Postpost ID, post URL, and the input that led to it

How to scrape TikTok comments

  1. Open the actor and go to the Input tab.
  2. Paste one or more post links. Full links, short links such as vm.tiktok.com/..., and bare post IDs all work.
  3. Set Comments per post, and Replies per comment if you want threads.
  4. Press Start. When the run finishes, open the Output tab to preview the table, or press Export to download the data.

Input

FieldTypeDescription
postURLsarray of stringsTikTok video or photo links, short links, or post IDs. Required.
commentsPerPostintegerThe maximum number of top-level comments per post. Replies don't count toward it.
maxRepliesPerCommentintegerThe maximum number of replies per comment, replies to replies included. 0 skips replies.
proxyCountryCodestringA two-letter country code such as US or DE to use Apify residential proxy in that country. None uses Apify datacenter proxy.

Input example

{
"postURLs": [
"https://www.tiktok.com/@yycats8/video/7583279464440777998",
"https://vm.tiktok.com/ZMhabc123/",
"7693138745406524673"
],
"commentsPerPost": 500,
"maxRepliesPerComment": 20,
"proxyCountryCode": "None"
}

Output

Every comment and every reply becomes one row. Replies come right after the comment they belong to, so the table reads like the thread on TikTok. Rebuild the tree with repliesToId: it holds the cid of the comment or reply each reply answers.

Output example

A real comment from a cat video and its reply. The avatar links are shortened.

[
{
"type": "comment",
"cid": "7583326235120616248",
"postId": "7583279464440777998",
"postUrl": "https://www.tiktok.com/@yycats8/video/7583279464440777998",
"text": "donde estaba mi michi",
"language": "es",
"createTime": 1765630738,
"createTimeISO": "2025-12-13T12:58:58.000Z",
"diggCount": 11,
"replyCommentTotal": 1,
"uid": "7433577230121354246",
"uniqueId": "martha.estrada.ma1",
"nickname": "Martha Estrada Maturano",
"profileUrl": "https://www.tiktok.com/@martha.estrada.ma1",
"avatarThumbnail": "https://p16-common-sign.tiktokcdn-eu.com/tos-maliva-avt-0068/1a02acb...",
"likedByAuthor": false,
"pinnedByAuthor": false,
"mentions": [],
"detailedMentions": [],
"input": "https://www.tiktok.com/@yycats8/video/7583279464440777998"
},
{
"type": "reply",
"cid": "7583405270299902733",
"postId": "7583279464440777998",
"postUrl": "https://www.tiktok.com/@yycats8/video/7583279464440777998",
"text": "😳😳😳😂😂😂😂 ay el michi ahi viene",
"language": "es",
"createTime": 1765649172,
"createTimeISO": "2025-12-13T18:06:12.000Z",
"diggCount": 0,
"replyCommentTotal": 0,
"repliesToId": "7583326235120616248",
"uid": "7422052881577362478",
"uniqueId": "gas3242",
"nickname": "gas",
"profileUrl": "https://www.tiktok.com/@gas3242",
"avatarThumbnail": "https://p16-common-sign.tiktokcdn-eu.com/musically-maliva-obj/159480...",
"likedByAuthor": false,
"pinnedByAuthor": false,
"mentions": [],
"detailedMentions": [],
"input": "https://www.tiktok.com/@yycats8/video/7583279464440777998"
}
]

Output fields

FieldDescription
typecomment for a top-level comment, reply for a reply.
cidTikTok comment ID.
postId, postUrlThe post the comment belongs to. When the input is a bare post ID, the URL has no username in it (https://www.tiktok.com/@/video/...) and still opens the post.
textThe comment text. TikTok's emoji stickers show as their names in brackets, for example [Laugh approved].
languageThe language TikTok detected. un means TikTok couldn't tell.
createTime, createTimeISOPublish time as a Unix timestamp and as an ISO 8601 string in UTC.
diggCountLikes.
replyCommentTotalHow many replies TikTok counts under the comment. 0 for replies.
repliesToIdFor replies, the cid of the comment or reply this one answers.
uid, uniqueId, nickname, profileUrl, avatarThumbnailThe author: user ID, username, display name, profile link, and avatar.
likedByAuthortrue when the creator of the post liked the comment.
pinnedByAuthortrue when the creator pinned the comment.
mentions, detailedMentionsUsers tagged in the comment, as the comment shows them, with user ID and secUid.
imagesImages attached to the comment.
inputThe link or ID from your input.

How many comments can I get?

In our tests, the actor collected 4,796 of the 5,600 comments on a busy video in 37 seconds, and 40 comments with 1,509 replies in 18 seconds. TikTok's comment feed has gaps: a page can come back empty while later pages are full again. The actor skips over these gaps, which is how it gets far past the first few hundred comments. It stops after several empty pages in a row, so expect most, but not always all, of a post's comments.

Replies to replies count toward Replies per comment, and TikTok's reply count doesn't always match the replies it serves.

How much does it cost?

You pay $0.30 per 1,000 rows, where each comment and each reply is one row. 1,000 comments without replies cost $0.30.

The actor reads TikTok's comment data directly, with no browser, so it runs on 128 MB of memory and finishes fast.

Export and integrations

The results go into an Apify dataset. From there you can:

  • download them as JSON, CSV, Excel, XML, HTML, or RSS from the Output tab;
  • send them to Google Sheets, Slack, Zapier, Make, and other tools through Apify integrations;
  • schedule runs to watch new comments on your posts;
  • start runs and read the results from your own code through the Apify API.

Run it through the API

curl -X POST "https://api.apify.com/v2/acts/<username>~tiktok-comments-scraper/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"postURLs": ["https://www.tiktok.com/@yycats8/video/7583279464440777998"], "commentsPerPost": 100}'

The call waits for the run to finish and returns the comments as a JSON array.

FAQ

Do I need a TikTok account?

No. The actor reads the comments TikTok shows to anyone who opens the video without logging in.

Can I scrape the videos themselves?

Not with this actor. Use a TikTok video scraper to collect posts by hashtag or profile, then paste their links here.

Why did I get fewer comments than the post shows?

TikTok's count includes comments it hides, deletes, or filters, and its feed has gaps the actor can't fill. On busy posts expect most of the comments rather than every single one.

TikTok signs these links for a few hours. Download the files soon after the run if you need to keep them.

The actor collects only public data that anyone can see without logging in. Comments still contain personal data such as usernames, so make sure you have a legitimate reason to collect it and follow the GDPR and other laws that apply to you. If you're not sure, ask a lawyer.

Disclaimer

This actor is provided as is, without warranty. You're responsible for how you use it and for following TikTok's terms of service and the laws that apply to you. TikTok isn't affiliated with this actor.