TikTok Comments Scraper avatar

TikTok Comments Scraper

Pricing

from $0.40 / 1,000 comment scrapeds

Go to Apify Store
TikTok Comments Scraper

TikTok Comments Scraper

Every comment under a TikTok video with likes, reply count, date and the commenter profile. Replies optional. No login needed. Export CSV, Excel, JSON, XML.

Pricing

from $0.40 / 1,000 comment scrapeds

Rating

0.0

(0)

Developer

ParseForge

ParseForge

Maintained by Apify Partner

Actor stats

0

Bookmarked

4

Total users

2

Monthly active users

21 days ago

Last modified

Share

ParseForge Banner

πŸ’¬ TikTok Comments Scraper

πŸš€ Export every comment under a TikTok video in seconds. Paste the video links and each comment comes back as a flat row: the text, its likes, how many replies it drew, when it was posted, whether the creator liked it, and who wrote it and whether their account is verified. Replies come too, on request.

No account, no cookie, no session token. The Actor opens the same page a viewer opens and asks TikTok for the comments the way the site asks for them itself.

🎯 Target AudienceπŸ’‘ Primary Use Cases
Brand and social teamsRead what an audience actually says under a campaign video
Creators and agenciesPull the comment thread of a post for reporting or moderation
ResearchersCollect public discussion around a topic, with timestamps
Lead and outreach teamsFind engaged accounts, with follower counts, under relevant videos

πŸ“‹ What the TikTok Comments Scraper does

πŸ’‘ Why it matters: TikTok stopped answering comment requests made from outside its own pages. A plain HTTP call to the comment endpoint returns an empty body, and the mobile API refuses it outright. This Actor gets the full thread anyway, and at a fraction of a cent per hundred comments.

  • πŸ’¬ Top-level comments in bulk, eight pages at a time: a measured run collected 2,183 rows from two videos in 139 seconds.
  • ↩️ Replies on request, each returned as its own row and marked with the comment it answers.
  • πŸ‘€ The commenter, not just a name: username, display name, user ID, profile link, verified flag and a link to their profile.
  • πŸ“Œ Signals that matter: pinned comments and comments the video's creator liked are flagged.
  • ↕️ Order as you need it: most liked, most replied, newest or oldest, with pinned comments kept on top.
  • 🎞️ Video details on every row: caption, author, like count, comment count and upload date, so the export stands on its own.
  • πŸ”— Any link shape works: a share link, a browser link, a photo post, or just the numeric video ID.
  • πŸ’Έ Nothing is charged for a video that returns nothing. A private, removed or comments-off video costs you nothing.
  • πŸ” Clean data: one row per comment, the same 25 columns every time, N/A instead of blank cells, and error reserved for failures.

🎬 Full Demo (🚧 Coming soon)

A short walkthrough video is in production.

πŸ“Š Output

FieldTypeDescription
πŸ–Ό imageUrlstringThe commenter's profile picture
πŸ†” commentIdstringTikTok's own comment ID
πŸ’¬ textstringThe comment itself
❀️ likeCountintegerLikes on the comment
↩️ replyCountintegerReplies under the comment
πŸ•’ createdAtstringWhen it was posted, ISO timestamp
β†ͺ️ isReplystringYes when the row is a reply
πŸ”— parentCommentIdstringThe comment this one answers
πŸ“Œ isPinnedstringYes when the creator pinned it
πŸ’š likedByCreatorstringYes when the video's author liked it
πŸ‘€ authorUniqueIdstringThe commenter's @username
🏷 authorNicknamestringTheir display name
πŸ†” authorIdstringTheir numeric user ID
πŸ”— authorUrlstringLink to their profile
βœ… authorVerifiedstringYes when the account is verified
πŸ” authorSecUidstringTikTok's stable secure user ID, for matching across runs
🎬 videoIdstringThe video's numeric ID
πŸ”— videoUrlstringLink to the video
πŸŽ₯ videoAuthorstringThe video's creator
πŸ“ videoTitlestringThe video's caption
❀️ videoLikeCountintegerLikes on the video
πŸ’¬ videoCommentCountintegerComments TikTok reports on the video
πŸ“… videoCreatedAtstringWhen the video was posted
πŸ•’ scrapedAtstringISO timestamp of the run
⚠️ errorstringnull on a normal row

Example rows

{
"imageUrl": "https://p16-sign-va.tiktokcdn.com/example-avatar.jpeg",
"commentId": "7259870000000000000",
"text": "This shot of the nebula is unreal",
"likeCount": 1840,
"replyCount": 12,
"createdAt": "2026-08-14T19:22:41.000Z",
"isReply": "No",
"parentCommentId": "N/A",
"isPinned": "No",
"likedByCreator": "Yes",
"authorUniqueId": "stargazer",
"authorNickname": "Stargazer",
"authorId": "6800000000000000000",
"authorUrl": "https://www.tiktok.com/@stargazer",
"authorVerified": "No",
"videoId": "7259860470834007342",
"videoUrl": "https://www.tiktok.com/@nasa/video/7259860470834007342",
"videoAuthor": "nasa",
"videoTitle": "A look at the Ring Nebula",
"videoLikeCount": 982000,
"videoCommentCount": 5120,
"videoCreatedAt": "2026-08-14T15:00:03.000Z",
"scrapedAt": "2026-09-18T02:14:55.221Z",
"error": null
}
{
"imageUrl": "https://p16-sign-va.tiktokcdn.com/example-avatar-2.jpeg",
"commentId": "7259880000000000000",
"text": "Agreed, the colours are wild",
"likeCount": 43,
"replyCount": 0,
"createdAt": "2026-08-14T20:05:12.000Z",
"isReply": "Yes",
"parentCommentId": "7259870000000000000",
"isPinned": "No",
"likedByCreator": "No",
"authorUniqueId": "nightsky",
"authorNickname": "Night Sky",
"authorId": "6800000000000000001",
"authorUrl": "https://www.tiktok.com/@nightsky",
"authorVerified": "No",
"videoId": "7259860470834007342",
"videoUrl": "https://www.tiktok.com/@nasa/video/7259860470834007342",
"videoAuthor": "nasa",
"videoTitle": "A look at the Ring Nebula",
"videoLikeCount": 982000,
"videoCommentCount": 5120,
"videoCreatedAt": "2026-08-14T15:00:03.000Z",
"scrapedAt": "2026-09-18T02:14:56.004Z",
"error": null
}
{
"imageUrl": "https://p16-sign-va.tiktokcdn.com/example-avatar-3.jpeg",
"commentId": "7259890000000000000",
"text": "Pinned: full resolution image is on our site",
"likeCount": 7600,
"replyCount": 88,
"createdAt": "2026-08-14T15:31:00.000Z",
"isReply": "No",
"parentCommentId": "N/A",
"isPinned": "Yes",
"likedByCreator": "Yes",
"authorUniqueId": "nasa",
"authorNickname": "NASA",
"authorId": "6800000000000000002",
"authorUrl": "https://www.tiktok.com/@nasa",
"authorVerified": "Yes",
"videoId": "7259860470834007342",
"videoUrl": "https://www.tiktok.com/@nasa/video/7259860470834007342",
"videoAuthor": "nasa",
"videoTitle": "A look at the Ring Nebula",
"videoLikeCount": 982000,
"videoCommentCount": 5120,
"videoCreatedAt": "2026-08-14T15:00:03.000Z",
"scrapedAt": "2026-09-18T02:14:56.740Z",
"error": null
}

✨ Why choose this Actor

  • πŸ”“ No login and no cookie. You never hand over an account, and nothing in your run can get an account restricted.
  • πŸ‘₯ Richer commenters. Display name, user ID, verification and a profile link on every row, not just a username.
  • ↩️ Replies as first-class rows, so a thread exports flat into a spreadsheet.
  • πŸ’Έ A video that returns nothing is not charged, and there is no start fee.
  • 🧾 Charged per row, not per batch, so what you are billed matches what you can count in the dataset.

πŸ“ˆ How it compares to alternatives

This ActorTypical alternative
LoginNeverSome ask for a session cookie
RepliesOptional, as their own rowsOften missing or nested
Commenter detailDisplay name, user ID, verified, profile linkUsername only
Video contextOn every rowUsually a separate run
Minimum chargeNoneUp to $3.00 per query on some

πŸš€ How to use

  1. Create a free Apify account with $5 in credit, then open the TikTok Comments Scraper and paste your video links, one per line.
  2. Choose how many comments to take per video, and the maximum for the run.
  3. Turn on replies if you need whole threads.
  4. Run it, then download CSV, Excel, JSON or XML, or pull the dataset over the API.

Free-plan runs return up to 10 comments as a preview. Upgrade your Apify plan to collect up to 1,000,000 rows per run.

πŸ’Ό Business use cases

  • Measure sentiment under a campaign video, with the exact wording customers used.
  • Moderate or archive the thread of your own posts.
  • Find engaged accounts under a competitor's video and see how large their following is.
  • Track how a comment section grows by running the same video on a schedule.

πŸ”Œ Automating TikTok Comments Scraper

Schedule it from the Apify Console and it reruns on its own. Point a webhook at your warehouse and every finished run lands there. Comment IDs are stable, so repeated runs deduplicate cleanly.

🌟 Beyond business use cases

  • Keep the comments on a video you care about before it disappears.
  • Collect the replies to a public announcement for a class or a paper.
  • Settle an argument about what people actually said under a viral clip.

πŸ€– Ask an AI assistant about this scraper

Paste this into ChatGPT, Claude or any assistant with web access:

I want to export the comments of several TikTok videos. Look at https://apify.com/parseforge/tiktok-comments-scraper and tell me how to configure a run over 20 videos with replies included, what each of the 25 output fields means, and exactly when each event is charged.

❓ Frequently Asked Questions

A share link, the link in your browser's address bar, a photo post link, or the bare numeric video ID. All of them resolve to the same video.

No. Nothing is logged in at any point, so no account of yours is exposed.

↩️ How do replies come back?

As their own rows, with isReply set to Yes and parentCommentId pointing at the comment they answer. Turn them off to keep the export to top-level comments only.

πŸ’¬ How many comments can I get from one video?

You can ask for up to 5,000 per video. How many actually come back is TikTok's decision: measured on a video with 2,702 comments, it served 1,557 before it stopped answering. The Actor pages eight requests at a time and keeps going through refusals, so it takes what the platform will give.

πŸ’Έ When am I charged?

Per comment row delivered, per reply row when replies are on, and once per video for the video details when they come back. A video that returns no comments is never charged, and there is no start fee.

🚫 Why did a video return nothing?

It is private, it was removed, or its owner turned comments off. The run logs which video it was and moves on without charging.

πŸ‘₯ What do I get about the commenter?

Every row carries the commenter's profile link, display name and verification flag, so the account is one click away.

πŸ•’ Are the timestamps real?

Yes, they are TikTok's own creation times, converted to ISO format in UTC.

⚠️ What do N/A values mean?

The field genuinely was not published. Blank cells are never used, so a spreadsheet column stays readable.

πŸ“„ What output formats are supported?

CSV, Excel, JSON, XML, JSONL and RSS, from the dataset or the API.

⏰ Can I run this on a schedule?

Yes. Schedule it in the Apify Console and compare runs by comment ID to see what is new.

πŸ”Œ Integrate with any app

The dataset is available through the Apify API the moment the run finishes. Use the run-sync-get-dataset-items endpoint for one-shot calls, webhooks to trigger downstream jobs, or the Make, Zapier, Airbyte and LangChain integrations listed on the Actor page.


πŸ’‘ Pro Tip: browse the complete ParseForge collection.

πŸ†˜ Need Help? Open our contact form with your run ID, your input and what you expected.

⚠️ Disclaimer: This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by TikTok or ByteDance. It collects only publicly available data. You are responsible for using the collected data in compliance with applicable law, including GDPR and other privacy rules in your jurisdiction.