TikTok Comments & Replies Scraper
Pricing
from $0.70 / 1,000 results
TikTok Comments & Replies Scraper
Extract TikTok comments and replies from videos, photo posts and whole profiles. Get text, likes, reply counts, dates, mentions and commenter details (bio, verified badge) as structured JSON. Bulk URLs, live output, no account or cookies needed.
Pricing
from $0.70 / 1,000 results
Rating
0.0
(0)
Developer
Insights Data
Maintained by CommunityActor stats
0
Bookmarked
8
Total users
2
Monthly active users
14 hours ago
Last modified
Categories
Share
What is TikTok Comments & Replies Scraper?
TikTok Comments & Replies Scraper is a TikTok comments scraper that lets you extract TikTok comments and their replies from public videos, photo posts and whole profiles, one row per comment or reply. It's made for marketers, social media managers, researchers and developers: paste video links or usernames, click Start, and get comment text, likes, dates, mentions and commenter details with no TikTok account, cookies or coding. On the Apify Free plan, a run saves at most 10 rows in total (comments and replies together, across all links and profiles); paid plans have no run-wide row cap, and you decide how much you get with the per-post and per-profile limits and an optional maximum cost per run.
What you can use it for:
- Social listening: see what people say under your videos, your competitors' videos or the creators in your niche.
- Brand monitoring: collect the comments that mention your brand or product on campaign videos and check the reactions.
- Sentiment research: send the rows to a spreadsheet, BI tool or LLM for TikTok comment sentiment analysis. The Actor collects the data; it doesn't score sentiment itself.
- Influencer research: check how engaged a creator's audience is, which comments get the most likes and whether the creator replies to, likes or pins comments.
- Audience research: learn who comments (usernames, bios, verified badges, languages) and what questions or product feedback they leave.
- AI and data pipelines: build a TikTok comments dataset in structured JSON for LLMs, AI agents or analytics pipelines.
What can TikTok Comments & Replies Scraper do?
It's a TikTok video comments scraper that also covers photo posts and whole profiles. It reads the public comments of every post you add and saves them to your dataset while the run is still working.
- ๐ฌ Comments from videos and photo posts: video URLs, photo URLs, short share links and video IDs in one list, so you get TikTok photo comments as well as video comments.
- ๐งต Collect TikTok comment replies: each reply is its own row, linked to its parent comment with
repliesToId, and saved right after that comment. - ๐ค Profile mode: add usernames or profile URLs and get the comments of each profile's videos. You choose which videos are picked: the latest, the most popular or the oldest, within a date range, with or without pinned videos.
- ๐ข Your own limits: set the maximum rows per post, the maximum top-level comments per post and the maximum replies per comment.
- ๐ชช Commenter and creator details: each commenter's bio, verified badge and language (optional, on by default), plus the video creator's profile on every row.
- โก Live output: rows are saved page by page, so the Output tab fills during the run and saved rows stay if the run stops early.
- ๐ฆ Export and automate: download JSON, CSV, Excel, XML or HTML, call it through the Apify API, schedule runs, and connect Make, Zapier, Google Sheets and more.
- ๐ก๏ธ Proxy handled for you: the run starts without a proxy and switches to Apify Proxy automatically when TikTok blocks or limits requests; you can also choose your own proxy settings. Apify Proxy traffic is part of your platform usage (see the pricing section).
What data can TikTok Comments & Replies Scraper extract?
Every row is structured TikTok comments data about one comment or one reply. Field names below are the exact names in the dataset. Pairs marked "same as" hold the same value under two names (see Spreadsheet tips).
๐งต Row type: comment or reply type | ๐ Comment text text |
๐ Comment ID cid (same as id) | ๐ Link that opens the video at this comment commentUrl |
๐
Created at createTimeISO (same as createdAt), Unix time createTime | ๐ Comment language commentLanguage |
โญ TikTok comment likes diggCount (same as likeCount) | ๐ฌ Reply count shown by TikTok replyCommentTotal (same as replyCount) |
โค๏ธ Liked by the creator isAuthorLiked (same as likedByAuthor) | ๐ Pinned by the creator pinnedByAuthor |
๐งต Is a reply isReply | ๐งต Parent comment ID repliesToId |
๐งต Reply it answers replyToReplyId, thread marker threadId | ๐ค Commenter ID, username, name, avatar uid, uniqueId, nickname, avatarThumbnail |
๐ค Commenter profile user: id, secUid, username, displayName, nickname, url, bio, avatarUrl, verified, region, language, hasEmail, hasPhone, coverImage | ๐ฅ Video creator videoAuthor: id, secUid, username, nickname, url, bio, bioLink, avatarUrl, verified, privateAccount, isOrganization, isSeller, language, region, accountCreatedAt, followerCount, followingCount, likeCount, videoCount, friendCount |
๐ท๏ธ Mentioned users mentions, detailedMentions | ๐ธ Attached images or stickers images |
๐ฌ Video reply videoReply | ๐ Video URL, video ID, post ID (same as video ID), creator username videoWebUrl, videoId, awemeId, videoAuthorUniqueId |
๐ Input that led to this row input, inputSource, submittedVideoUrl |
Note: Every row has all of these keys, but some values can be empty.
textisnullfor sticker, image or video-only comments.repliesToIdisnullfor top-level comments.user.verifiedisnullwhen commenter profile details are off or a commenter's profile couldn't be loaded in time.user.region,user.hasEmail,user.hasPhoneanduser.coverImageare usuallynullbecause TikTok doesn't show them for commenters.videoAuthorisnullwhen the creator's profile couldn't be loaded. For videos found through a profile,inputis the username andsubmittedVideoUrlis the profile URL. A custom map function changes the row shape.
What data can't TikTok Comments & Replies Scraper extract?
- Comments that a user wrote on other people's videos (the Actor collects the comments on videos)
- Comments of private, deleted or region-blocked videos
- Replies that TikTok hides, deletes or filters, so a thread can return fewer replies than
replyCommentTotal - TikTok LIVE comments
- Video statistics such as views, shares or the video description (you get the creator's profile stats in
videoAuthor) - Video files, transcripts or media downloads
- Commenter emails or phone numbers
- A choice of comment order: comments come in the order TikTok returns them (Profile video sorting only decides which profile videos are picked)
- Reposts of profiles that keep their reposts hidden from visitors
- Other platforms: it isn't a general social media comments scraper and works with TikTok only
For video statistics, transcripts and media downloads, see TikTok Profile Scraper.
How to scrape TikTok comments and replies
You don't need to write code: the TikTok comment scraper runs in Apify Console, and the input form has a field for every setting. To get TikTok comments from your own videos or from a creator's profile:
- Create a free Apify account using your email.
- Open TikTok Comments & Replies Scraper.
- In TikTok URLs, replace the prefilled example link with your own video links, or keep it for a first test. If you keep it, it's scraped like any other link and its rows count toward your limits. To add a creator, open Profile options and type the username in TikTok usernames. You can use video links and usernames in the same run.
- Check Maximum comments per post (default 10 rows per post, replies included) and, for profiles, Videos per profile (default 1). Then click Start. On the Free plan, the run stops at 10 rows in total, across all links and profiles.
- Watch the rows appear in the Output tab while the run is working, then download them as JSON, CSV, Excel, XML or HTML.
Recommended first run: keep the prefilled input and click Start. It reads one public Gordon Ramsay video with Maximum comments per post set to 10 and Maximum replies per comment set to 2, so it saves at most 10 rows and the results cost at most $0.01, plus the start fee and platform usage (see the next section). Then switch to your own links.
Recipe: your videos plus one creator's profile
This input reads the comments of the video links you paste plus the 3 videos picked from one creator's profile. Replace the link and the username with your own, and add more links one per line:
{"urls": ["https://www.tiktok.com/@gordonramsayofficial/video/7229884545150061851"],"profiles": ["gordonramsayofficial"],"resultsPerPage": 3,"commentsPerPost": 100,"maxRepliesPerComment": 2}
Two defaults decide how much you get here:
- Maximum comments per post (
commentsPerPost) is 10 by default and counts replies too. Left at the default, you get at most 10 rows per video, so it's raised to 100 above. - Videos per profile (
resultsPerPage) is 1 by default. Left at the default, you get the comments of only one video from the profile, so it's raised to 3 above. Profile video sorting (Latest by default) decides which videos are picked.
With this input, a paid-plan run saves at most 400 rows (1 linked video plus 3 profile videos, up to 100 rows each), so the results cost at most $0.36 on Starter, $0.32 on Scale or $0.28 on Business. On the Free plan, the same run stops at 10 rows. To cap your spend, set a maximum cost per run before you click Start (see the next section).
To extract TikTok video comments from a longer list of posts, add one link per line or use Bulk edit to paste a whole list. Each post is read once per run, even if it's in your list twice or also shows up in a profile.
How much does it cost to scrape TikTok comments?
TikTok Comments & Replies Scraper uses pay-per-event pricing: a fixed price for each saved row and for each run start, plus Apify's platform usage. Your bill for a run has three parts:
| Part | Price |
|---|---|
| ๐ฒ Results: every comment or reply row saved to the dataset | $1.00 per 1,000 results ($0.001 per row) on the Free plan (lower on paid plans, see below) |
| ๐ Actor start | $0.00005 per run with the default settings. The fee is $0.00005 per GB of run memory (the amount of computer memory the run gets), and runs use 1 GB by default. |
| โ๏ธ Apify platform usage | Apify's charge for the resources your run uses: compute time, data storage and, if the run switches to Apify Proxy, proxy traffic. It isn't fixed in advance; after a test run, you see it on the run's page in Apify Console. |
| Apify plan | Price per row (comment or reply) | Price per 1,000 rows |
|---|---|---|
| Free | $0.001 | $1.00 |
| Starter | $0.0009 | $0.90 |
| Scale | $0.0008 | $0.80 |
| Business and higher | $0.0007 | $0.70 |
Paid Apify plans get a lower result price. The plan discount applies to that price only. The start fee is the same on every plan, and platform usage is billed at your Apify plan's own rates.
If you raise the memory in Run options, the start fee grows with it, for example $0.0002 per run at 4 GB.
What is and isn't charged as a result:
- A top-level comment and a reply are each one result. Replies count like comments.
- Rows are charged even when some fields are empty.
- Videos whose comments can't be loaded at all, and videos with no comments, produce no rows and add no result charges. If loading stops partway through a video, the rows saved before that are charged.
- Rows removed by your custom map function and rows that fail to save are not charged.
Example result costs at Free plan prices (the start fee and platform usage come on top):
| Rows saved (comments + replies) | Result cost |
|---|---|
| 10 (the prefilled input) | $0.01 |
| 100 | $0.10 |
| 1,000 | $1.00 |
| 10,000 | $10.00 |
Start with a small test run, check the real total (including platform usage) on the run's page, then scale up. To cap your spend, set a maximum cost per run in Run options under the input form: when it's reached, the run stops cleanly, keeps the rows already saved, and the status message says the spend limit was reached. See the pricing tab for the current events.
Is scraping TikTok comments free?
You can try it for free. The Apify Free plan includes $5 of monthly platform credit, which pays for both the result and start charges and the platform usage of your runs.
Separately, the Actor limits Free plan runs: each run saves at most 10 rows, comments and replies together, across all the links and profiles in that run. Rows removed by a custom map function count toward the 10. When a run reaches the cap, it stops early and still finishes as succeeded, and the status message shows the rows saved and the Free plan limit of 10 items per run. The cap is per run, not per month. Paid plans don't have this run-wide cap: a paid run stops only at your own per-post, per-comment and per-profile limits, when TikTok has no more data, at a built-in page safety limit, or at your maximum cost per run.
TikTok comments scraper input
To run TikTok Comments & Replies Scraper, you need at least one link in TikTok URLs or one username in TikTok usernames. You can fill in both. If both are empty, the run fails with a message asking you to add one. All other fields are optional.
Here's the prefilled example: it reads one public video, saves up to 10 rows from it and up to 2 replies under each comment, with no proxy at the start:
{"urls": ["https://www.tiktok.com/@gordonramsayofficial/video/7229884545150061851"],"commentsPerPost": 10,"maxRepliesPerComment": 2,"proxyConfiguration": {"useApifyProxy": false}}
See the input tab for a full description of all fields. The first column is the label you see in the form; the second is the name used in JSON and the API.
| Field in the form | API name | What it does | Default |
|---|---|---|---|
| TikTok URLs | urls | Video URLs, photo URLs, short share links (vm.tiktok.com, vt.tiktok.com, tiktok.com/t/), video IDs, profile URLs or @usernames, one per line | none |
| Maximum comments per post (replies included) | commentsPerPost | Maximum rows per post, top-level comments and replies together | 10 |
| Maximum top-level comments per post | topLevelCommentsPerPost | Maximum top-level comments per post. Replies don't count toward this limit, but they do count toward Maximum comments per post | no limit |
| Include replies | includeReplies | Collect the replies under each comment | true |
| Maximum replies per comment | maxRepliesPerComment | Maximum replies per comment (0 = none) | 2 |
| TikTok usernames (in Profile options) | profiles | Usernames (with or without @) or profile URLs | none |
| Videos per profile | resultsPerPage | How many videos to take from each profile, counted separately for each profile section | 1 |
| Profile sections | profileScrapeSections | Take videos from Videos and/or Reposts | Videos |
| Profile video sorting | profileSorting | Which videos are picked: Latest, Popular or Oldest (Videos section only) | Latest |
| Videos published on or after | oldestPostDateUnified | Profile videos published on or after a date or within a period | none |
| Videos published on or before | newestPostDate | Profile videos published before a date (see the note below) | none |
| Exclude pinned posts | excludePinnedPosts | Skip videos the creator pinned to the profile | off |
| Add commenter profile details | scrapeUserProfiles | Add each commenter's bio, verified badge and language | on |
| Custom map function (Python) | customMapFunction | Python expression or function that reshapes each row | none |
| Proxy configuration | proxyConfiguration | Optional proxy to start the run with | no proxy |
Maximum comments per post (commentsPerPost)
This limit counts top-level comments and replies together. It's 10 by default, and if you leave the field empty, the platform still fills in 10. So a run with the defaults returns at most 10 rows per post, even when the video has thousands of comments. Set a higher number to get more.
How the limits work together for each post: comments are saved in the order TikTok returns them, each one followed by its replies (up to Maximum replies per comment). Collection for the post stops as soon as Maximum top-level comments per post (if set) or Maximum comments per post is reached, whichever comes first. If the row limit is reached in the middle of a thread, the rest of that thread is left out.
So to get a set number of top-level comments with their replies, set Maximum top-level comments per post and raise Maximum comments per post high enough to hold the replies too. For example, 20 top-level comments with up to 5 replies each need up to 120 rows.
- โ
Good:
"topLevelCommentsPerPost": 20, "maxRepliesPerComment": 5, "commentsPerPost": 120 - โ
Good:
"commentsPerPost": 200, "maxRepliesPerComment": 5 - โ Bad: leaving
commentsPerPostempty and expecting more than 10 rows per post
โ ๏ธ Every saved row is charged, replies included. Use these limits to control your spend.
Replies (Include replies, Maximum replies per comment)
Replies are only requested for comments whose reply counter is above 0. Each comment is saved first, followed by its replies. TikTok can return fewer replies than its counter shows, for example when replies were hidden, deleted or filtered.
- โ
Good:
"maxRepliesPerComment": 0or"includeReplies": falsewhen you only want top-level comments - โ Bad: expecting every comment to come with exactly
maxRepliesPerCommentreplies
TikTok comment scraper by username (profiles, resultsPerPage)
For TikTok influencer research, add the creator's username to TikTok usernames (profiles), or paste profile URLs or @usernames into TikTok URLs. The Actor first picks the profile's videos and then reads their comments. Profiles that can't be opened (for example private, banned or not found) are skipped with a line in the log.
Videos per profile (resultsPerPage) is 1 by default, so you get the comments of only one video per profile unless you raise it. With both Videos and Reposts selected in Profile sections, you get up to this many videos from each section. Reposts only work when TikTok shows them to visitors; otherwise the reposts section gives 0 videos. Profile video sorting decides which videos are picked (Latest, Popular or Oldest) and applies to the Videos section only. It doesn't change the order of the comments.
- โ
Good:
"profiles": ["gordonramsayofficial"], "resultsPerPage": 5 - โ Bad:
"profiles": ["gordonramsayofficial"]and expecting comments from many videos (you get 1 video)
โ ๏ธ Videos per profile, Profile sections, Profile video sorting, the date filters and Exclude pinned posts only affect profile inputs, not direct video links.
Date filters (Videos published on or after / on or before)
Both filters (oldestPostDateUnified, newestPostDate) work on profile videos only, and dates are in UTC.
-
Videos published on or after accepts a date (
YYYY-MM-DD), a period such as7 days,2 weeks,3 monthsor1 year(a month counts as 30 days and a year as 365 days), or a plain number of days.1 daymeans today only, from 00:00 UTC, and2 daysmeans yesterday and today. -
Videos published on or before is compared with 00:00 UTC of the date you pick, so videos posted later that same day are left out. To include a whole day, pick the next day.
-
โ Good: to include all of 31 January 2026, set
"newestPostDate": "2026-02-01" -
โ Bad: setting
"newestPostDate": "2026-01-31"and expecting videos from the afternoon of 31 January
Commenter details and the custom map function
Add commenter profile details (scrapeUserProfiles) is useful for TikTok audience research. It looks up each unique commenter once per run and fills bio, verified and language in user (and region when TikTok shows it). Turn it off for faster runs; user.verified is then null.
Custom map function (Python) (customMapFunction) runs on every row before it's saved. Use a Python expression over record, such as {'id': record['cid'], 'likes': record['diggCount']}, or a full def map_function(record): .... Return None to drop a row: dropped rows aren't saved or charged, but on the Free plan they count toward the 10-row cap. If the function fails on a row, the original row is kept. If it can't be compiled, it's ignored for the run.
Proxy configuration (proxyConfiguration)
You don't need a proxy to start. The run starts without a proxy and switches to Apify Proxy automatically when TikTok blocks or limits requests. You can also choose your own proxy settings, and the run then starts with them.
TikTok comments scraper output
Results are stored in a dataset in the Output or Storage tab. You can view them as a table or JSON and download them in JSON, CSV, Excel, XML or HTML. In the JSON view or through the API, each row is a TikTok comments JSON object with the keys shown below. Seven ready-made views in the Output tab show different sets of columns: ๐ฌ Overview, ๐งต Comments & replies, ๐ค Commenters, ๐ Engagement, ๐ผ๏ธ Mentions & media, ๐ฅ Video creator and ๐ฌ Video & source. All rows of a run are also saved as one JSON file in the run's key-value store under the OUTPUT key.
Spreadsheet tips (CSV and Excel)
- Pick your columns. A full export has many columns. To export TikTok comments to Excel or save TikTok comments to CSV with only what you need, pick the fields in the export dialog. For TikTok comment analysis, a good set is
type,text,diggCount,createTimeISO,uniqueId,isReply,repliesToIdandvideoWebUrl. To look before you export, the ๐งต Comments & replies view shows the thread columns (type,isReply,cid,repliesToId,text,diggCount,createTimeISOand more), and ๐ฌ Overview shows text, likes, reply count, date, commenter and video link. - Pairs with the same value. Some fields are aliases:
cid=id,diggCount=likeCount,createTimeISO=createdAt,replyCommentTotal=replyCount,isAuthorLiked=likedByAuthorandvideoId=awemeId. Each pair holds the same value under two names, so you only need one of each. - Nested fields.
user(the commenter's profile) andvideoAuthor(the video creator) are groups of fields. In CSV and Excel they become separate columns named likeuser/nickname,user/verifiedorvideoAuthor/followerCount, and lists such asmentionsbecome numbered columns (mentions/0,mentions/1). - Threads. Filter on
isReplyand group byrepliesToIdto rebuild each thread.
JSON example
Results for the input example above. This is a real top-level comment row from a test run (long URLs and IDs are shortened with "โฆ"; follower numbers are a snapshot and change over time):
{"type": "comment","input": "https://www.tiktok.com/@gordonramsayofficial/video/7229884545150061851","inputSource": "https://www.tiktok.com/@gordonramsayofficial/video/7229884545150061851","submittedVideoUrl": "https://www.tiktok.com/@gordonramsayofficial/video/7229884545150061851","videoWebUrl": "https://www.tiktok.com/@gordonramsayofficial/video/7229884545150061851","videoId": "7229884545150061851","awemeId": "7229884545150061851","videoAuthorUniqueId": "gordonramsayofficial","cid": "7230306662946161414","id": "7230306662946161414","commentUrl": "https://m.tiktok.com/โฆ","text": "Bro I think u forgot to add butter ๐","createTime": 1683436964,"createTimeISO": "2023-05-07T05:22:44.000Z","createdAt": "2023-05-07T05:22:44.000Z","commentLanguage": "en","diggCount": 28088,"likeCount": 28088,"replyCommentTotal": 74,"replyCount": 74,"isAuthorLiked": false,"likedByAuthor": false,"pinnedByAuthor": false,"isReply": false,"repliesToId": null,"replyToReplyId": null,"threadId": null,"uid": "317145745193930752","uniqueId": "goldens_nine","nickname": "SouSou ๐ค","avatarThumbnail": "https://p16-common-sign.tiktokcdn.com/โฆ/e002d9231f2850b029bb1ea4cf05972e.jpg","mentions": [],"detailedMentions": [],"images": [],"videoReply": null,"user": {"id": "317145745193930752","secUid": "MS4wLjABAAAASx5KBuftdWwDBsVvR2cwFhFKobgFWhVQfz9tVqa9fN7JvntQ1JQSasy9S9qyDrqG","username": "goldens_nine","displayName": "SouSou ๐ค","nickname": "SouSou ๐ค","url": "https://www.tiktok.com/@goldens_nine","bio": "","avatarUrl": "https://p16-common-sign.tiktokcdn.com/โฆ/e002d9231f2850b029bb1ea4cf05972e.jpg","verified": false,"region": null,"language": "en","hasEmail": null,"hasPhone": null,"coverImage": null},"videoAuthor": {"id": "6747935906352907269","secUid": "โฆ","username": "gordonramsayofficial","nickname": "Gordon Ramsay","url": "https://www.tiktok.com/@gordonramsayofficial","bio": "I cook sometimes too.....","bioLink": "GordonRamsay.com/","avatarUrl": "https://p16-common-sign.tiktokcdn.com/โฆ/7310612651137040390.jpeg","verified": true,"privateAccount": false,"isOrganization": false,"isSeller": false,"language": "en","region": null,"accountCreatedAt": "2019-10-18T17:42:11.000Z","followerCount": 40687561,"followingCount": 572,"likeCount": 729973028,"videoCount": 712,"friendCount": 302}}
Reply row example (illustrative)
This comment shows 74 replies, so with maxRepliesPerComment set to 2, up to 2 of its replies follow it in the dataset. The example below is illustrative, not real data: the field names are exact, but the values are made up, and the row is trimmed to the reply-related fields. A real reply row has the same keys as the comment row above.
{"type": "reply","videoId": "7229884545150061851","cid": "7230000000000000001","text": "Example reply text","createTimeISO": "2023-05-07T06:00:00.000Z","diggCount": 120,"isReply": true,"repliesToId": "7230306662946161414","replyToReplyId": null,"uniqueId": "example_user"}
TikTok comments scraper tips and advanced usage
How many comments can you scrape?
Paid plans have no run-wide row cap. Instead, every post, reply thread and profile has its own limits. Collection for a post stops at the first of these:
- Maximum comments per post is reached (default 10 rows, replies included)
- Maximum top-level comments per post is reached, if you set it
- TikTok has no more comments for the post
- a page of comments can't be loaded (rows already saved stay; if the first page fails, the video counts as failed in the run summary and has no rows)
- a built-in safety limit on the number of comment pages per post
Replies under a comment stop at Maximum replies per comment (default 2), when TikTok returns no more replies or a reply page can't be loaded, at a built-in page safety limit, or when the post reaches Maximum comments per post. Profile videos stop at Videos per profile for each section, when the profile has no more videos or its video list can't be loaded, or at a built-in page safety limit.
On top of that, the whole run stops at the Free plan cap of 10 rows (Free plan only) or at your maximum cost per run. The best way to know what you'll get for your videos is a quick test run.
How to get faster or cheaper results
- Start with the prefilled input, then raise Maximum comments per post step by step.
- Set Maximum replies per comment to
0(or turn off Include replies) if you only need top-level comments. - Turn off Add commenter profile details if you don't need commenter bios and verified badges; runs get faster.
- In profile mode, keep Videos per profile low and use the date filters so comments are read only from the videos you need.
- Set a maximum cost per run in Run options to cap your spend.
TikTok comment monitoring with schedules
The Actor has no built-in history: each run is a snapshot of the comments TikTok shows at that moment. For ongoing TikTok social listening, save your input as a task and schedule it daily or weekly, then compare the datasets by createTimeISO. Profile mode with a relative date filter such as 7 days keeps a weekly run focused on recent videos.
Known issues
- Reply threads can return fewer replies than
replyCommentTotal, for example when TikTok hides deleted or filtered replies. The run summary in the log shows how many threads this affected. - Top-level comments aren't de-duplicated across pages (replies are de-duplicated within each thread). If TikTok repeats a comment on a later page, it's saved and charged twice.
- If a commenter's profile can't be loaded in time, the row is saved without the extra details (
user.verifiedisnull). - If the video creator's profile can't be loaded,
videoAuthorisnull. - With a bare video ID as input,
videoWebUrlcontains the video ID where the creator's username would be. Paste the full video URL if you need the standard link. - Lines in TikTok URLs that aren't a recognized TikTok link, ID or username are skipped with a line in the log.
Integrations and API
Can I use TikTok Comments & Replies Scraper as a TikTok comments API?
Yes. The Apify API gives you a TikTok comment data API without building your own: you send the input as JSON, start a run, and read the rows back from the dataset in JSON, CSV or Excel. Use the apify-client NPM package for Node.js or the apify-client PyPI package for Python, and see the API tab for ready-to-use code. API callers can also send links in postURLs or startUrls; they're added to urls.
Get TikTok comments API example in Python
This short TikTok comment scraper Python script runs the input example above and prints a few fields of each row:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_API_TOKEN>")run_input = {"urls": ["https://www.tiktok.com/@gordonramsayofficial/video/7229884545150061851"],"commentsPerPost": 10,"maxRepliesPerComment": 2,"proxyConfiguration": {"useApifyProxy": False},}run = client.actor("insights_data/tiktok-comments-replies-scraper").call(run_input=run_input)for row in client.dataset(run["defaultDatasetId"]).iterate_items():print(row["type"], row["uniqueId"], row["diggCount"], row["text"])
Can I integrate TikTok Comments & Replies Scraper with other apps?
Yes. Connect it with other apps through Apify integrations: Make, Zapier, Slack, Google Sheets, Google Drive, Airbyte, GitHub, LangChain and more. Use webhooks to trigger actions when a run finishes. For TikTok brand monitoring, for example, schedule a weekly run for your brand's latest videos and send the new rows to Google Sheets, where your team reads the feedback.
Can I use TikTok Comments & Replies Scraper with AI agents (MCP)?
Yes. Through the Apify MCP server, Claude and other AI assistants can call the Actor as a TikTok comments MCP tool: the agent fills in the input, runs the Actor and reads the comments back as JSON. Open the MCP tab for setup steps.
Other TikTok scrapers and more from the same developer
TikTok Profile Scraper is our TikTok scraper for profiles and video stats, and the best match if you also need views, shares or transcripts. The other two are more scrapers from the same developer, for opinion and review data on other sites.
| Actor | What it does |
|---|---|
| ๐ต TikTok Profile Scraper | A TikTok data scraper for profiles: videos, reposts, stories and playlists with views, likes, comments, shares, music, hashtags and author stats; optional followers, comments, transcripts and media downloads |
| ๐ Stocktwits Scraper | Scrapes Stocktwits stock and crypto messages, bullish/bearish sentiment, price targets and trending symbols |
| โญ Flipkart Reviews Scraper | Scrapes Flipkart product reviews, star ratings, photos and rating summaries in bulk |
TikTok comments scraper FAQ
Is it legal to scrape TikTok?
TikTok Comments & Replies Scraper only reads public comments that anyone can see without logging in. Comments contain personal data such as usernames and profile details, so you need a legitimate reason to collect them and should follow rules such as GDPR and CCPA. Also take TikTok's Terms of Service into account. This is not legal advice; if you're unsure, ask a lawyer.
How does TikTok Comments & Replies Scraper work?
Think of it as a TikTok comments crawler for public pages: it doesn't log in and needs no cookies. You add links or usernames. For profile inputs, it first picks the profile's videos with your sorting and filters. Then it opens each public post, reads its comments page by page, and for comments that have replies it reads the replies up to your limit. It looks up each commenter's public profile once (optional) and each video creator's profile once, and saves every comment and reply as its own row as soon as a page is ready.
How is this TikTok comments extractor different from copying comments by hand?
| TikTok Comments & Replies Scraper | Copying comments by hand | |
|---|---|---|
| Many videos or whole profiles | โ One run for a list of links or usernames | โ One video at a time |
| Replies linked to their parent | โ
repliesToId on every reply | โ Manual |
| Likes, dates, commenter details | โ Structured fields | โ Retyped by hand |
| Scheduling and API | โ Apify schedules, API, integrations | โ |
| Price | $1.00 per 1,000 rows on the Free plan, down to $0.70 on Business, + start fee + platform usage | Your time |
Is there a TikTok comment extractor for whole profiles?
Yes. Add usernames to TikTok usernames or paste profile URLs into TikTok URLs, then raise Videos per profile (default 1). You can choose the Videos and Reposts sections, pick videos by Latest, Popular or Oldest, filter by date and skip pinned videos.
Can I use it as a TikTok replies scraper only?
Not directly. Replies are collected under their parent comments, so each reply row comes after its comment row. If you only want the replies, filter on isReply = true after you export. If you only want top-level comments, set Maximum replies per comment to 0 or turn off Include replies.
Can I download TikTok comments?
Yes. Every comment and reply is saved to a dataset you can download in JSON, CSV, Excel, XML or HTML from the Output tab, during or after the run. Note that it isn't a TikTok comments downloader for media: it saves comment text and details, not video files.
How do I export TikTok comments?
Open the Output tab, click Export, pick a format and, if you like, only the fields you need (see Spreadsheet tips). You can also read the dataset through the API. You don't need a separate TikTok comment exporter or browser extension.
Why am I getting fewer results than expected?
Check the most common causes first:
- On the Free plan, a run saves at most 10 rows in total, across all links and profiles.
- Maximum comments per post is 10 by default and counts replies too.
- In profile mode, Videos per profile is 1 by default. Also check the date filters and Exclude pinned posts, and remember that Videos published on or before leaves out videos posted later on the chosen day.
- Check Maximum replies per comment (default 2) and whether Include replies is on.
- Check whether the run hit your maximum cost per run.
- TikTok can return fewer replies than the reply counter shows.
If a run finishes with "no TikTok videos found", no video could be taken from your input: the links weren't recognized, short links didn't lead to a video, profiles couldn't be opened (for example private, banned or not found), the profiles had no videos, no profile video matched your settings (date filters, pinned exclusion, hidden reposts), or the run stopped early because of an error (the log shows it). If it finishes with "no comments found", videos were found but no rows were saved: the videos have no public comments, their comments couldn't be loaded (counted as failed in the run summary), your custom map function dropped every row, rows failed to save, or the run stopped early because of an error. Both runs still finish as succeeded with 0 rows. A run fails with a status message when the input is invalid or has no link or username.
Support and feedback
Found a bug or have a feature request? Please create an issue on the Issues tab and include your run link.
Need a custom solution, another field or help with a social media data project? Contact us at hello.insights.data@gmail.com.
Built and maintained by Insights Data.