ParseForge Scrapers

TikTok Comments Scraper

parseforge/tiktok-comments-scraper

Social mediaVideosLead generation

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.

Run this scraper See the API call
Total runs
33
Bookmarked
0
Last modified
2 days ago

This scraper was last updated on .

What does the TikTok Comments Scraper return?

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 teams Read what an audience actually says under a campaign video
Creators and agencies Pull the comment thread of a post for reporting or moderation
Researchers Collect public discussion around a topic, with timestamps
Lead and outreach teams Find 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

Field Type Description
๐Ÿ–ผ imageUrl string The commenter's profile picture
๐Ÿ†” commentId string TikTok's own comment ID
๐Ÿ’ฌ text string The comment itself
โค๏ธ likeCount integer Likes on the comment
โ†ฉ๏ธ replyCount integer Replies under the comment
๐Ÿ•’ createdAt string When it was posted, ISO timestamp
โ†ช๏ธ isReply string Yes when the row is a reply
๐Ÿ”— parentCommentId string The comment this one answers
๐Ÿ“Œ isPinned string Yes when the creator pinned it
๐Ÿ’š likedByCreator string Yes when the video's author liked it
๐Ÿ‘ค authorUniqueId string The commenter's @username
๐Ÿท authorNickname string Their display name
๐Ÿ†” authorId string Their numeric user ID
๐Ÿ”— authorUrl string Link to their profile
โœ… authorVerified string Yes when the account is verified
๐Ÿ” authorSecUid string TikTok's stable secure user ID, for matching across runs
๐ŸŽฌ videoId string The video's numeric ID
๐Ÿ”— videoUrl string Link to the video
๐ŸŽฅ videoAuthor string The video's creator
๐Ÿ“ videoTitle string The video's caption
โค๏ธ videoLikeCount integer Likes on the video
๐Ÿ’ฌ videoCommentCount integer Comments TikTok reports on the video
๐Ÿ“… videoCreatedAt string When the video was posted
๐Ÿ•’ scrapedAt string ISO timestamp of the run
โš ๏ธ error string null 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 Actor Typical alternative
Login Never Some ask for a session cookie
Replies Optional, as their own rows Often missing or nested
Commenter detail Display name, user ID, verified, profile link Username only
Video context On every row Usually a separate run
Minimum charge None Up 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

๐Ÿ”— What can I paste as a video link?

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.

๐Ÿ” Do I need a TikTok account or cookie?

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.

๐Ÿ”— Recommended Actors


๐Ÿ’ก 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.

What input does the TikTok Comments Scraper accept?

FieldTypeWhat it doesDefault
videoUrls required array One video per line. Paste the link from the share button, the link from your browser, or just the numeric video ID. Photo posts work too. ["https://www.tiktok.com/@nasa/video/725
maxItems integer Stop after this many rows in total, counting replies. Free users get up to 10 results per run; paid users get up to 1,000,000. 10
maxCommentsPerVideo integer How many top-level comments to take from each video before moving to the next one. 100
sortBy string (5 options) How to order the comments of each video before they are written. Pinned comments always stay on top, the way TikTok shows them. default
includeReplies boolean Off by default. Turn it on to open every comment thread and return the replies as their own rows, each one marked with the comment it answers. false
maxRepliesPerComment integer Only used when replies are on. Caps how many replies are taken from each thread. 10
includeVideoInfo boolean On by default. Adds the video's author, caption, like count, comment count and upload date to every row, so the export needs no second lookup. Charged once per video, and only when the details come back. true

How much does the TikTok Comments Scraper cost?

from $0.40 per 1,000 results

Charged forWhat it isPrice each
Comment scraped One top-level comment: the text, its likes, how many replies it drew, when it was posted, whether it is pinned or liked by the creator, and the account that wrote it. $0.0004 to $0.00075
Reply scraped One reply inside a comment thread, delivered as its own row and marked with the comment it answers. Charged only when replies are switched on. $0.0004 to $0.00075
Video details Charged once per video, and only when its caption, author and counts came back. They are then added to every comment row of that video, so the export needs no second run. $0.001 to $0.002

Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.

How do I call the TikTok Comments Scraper API?

One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.

POST ยท run and get results
curl -X POST "https://api.apify.com/v2/acts/parseforge~tiktok-comments-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "videoUrls": [
      "https://www.tiktok.com/@nasa/video/7259860470834007342"
    ],
    "maxItems": 10,
    "maxCommentsPerVideo": 100,
    "sortBy": "default",
    "includeReplies": false
  }'

What example inputs can I use?

Use these inputs to see how a run is configured.

input.json
{
  "videoUrls": [
    "https://www.tiktok.com/@nasa/video/7259860470834007342"
  ],
  "maxItems": 10,
  "maxCommentsPerVideo": 100,
  "sortBy": "default",
  "includeReplies": false
}

What do users say about the TikTok Comments Scraper?

No reviews yet. Be the first.

How do I report an issue with the TikTok Comments Scraper?

We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.

Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.

What related scrapers can I use?

Run TikTok Comments Scraper on Apify All scrapers