TikTok Comments Scraper

Export public TikTok video comments with author details, likes, reply counts, timestamps, and stable IDs for research, moderation, and analysis.

Data fields

FieldTypeDescription
texttextComment exported in the dataset view.
authortextAuthor exported in the dataset view.
authorIdtextAuthor ID exported in the dataset view.
likesnumberLikes exported in the dataset view.
repliesnumberReplies exported in the dataset view.
createdAttextCreated At exported in the dataset view.
videoIdtextVideo ID exported in the dataset view.
isReplybooleanIs Reply exported in the dataset view.

Input preview

videoUrlsTikTok video URLs *
maxCommentsPerVideoMax comments per video
includeRepliesInclude replies
maxRepliesPerCommentMax replies per comment
proxyConfigurationProxy configuration

API and agents

This actor can be run through Apify API, datasets, webhooks, schedules, and the official Apify MCP server.

How this actor works

See example inputs, outputs, API usage, and practical limits before running this actor on Apify.

Open Apify page

What does TikTok Comments Scraper do?

TikTok Comments Scraper extracts comments from any TikTok video — no TikTok API key, no login, and no coding required. Paste one or more video URLs, set your limits, and the scraper returns structured comment data including author details, like counts, timestamps, and optional reply threads.

The actor handles TikTok's anti-bot protections automatically using a headless Playwright browser with proxy rotation. Every comment is returned as a clean JSON record ready to export to CSV, Google Sheets, or any downstream system. Start scraping with the prefilled example in under a minute.

Unlike browser extensions that break with every TikTok update, this cloud-based scraper runs 24/7 with no local setup. All platform costs — compute, proxy, storage — are included in the pay-per-comment price.


Who is it for?

📣 Social media managers and brand teams

  • Monitor brand mentions and sentiment across viral TikTok videos
  • Track campaign hashtag performance and measure audience reactions in real time
  • Spot negative comments early and manage reputation before they spread

📊 Market researchers and data analysts

  • Collect large comment datasets for sentiment analysis and NLP models
  • Compare audience reactions across competitor content and creators
  • Build ground-truth datasets for social media research papers and academic studies

🎨 Content creators and influencers

  • Understand which video topics generate the most engagement and replies
  • Identify your most active community members by likes and reply activity
  • Benchmark your comment volume and quality against similar creators in your niche

🔬 Researchers and journalists

  • Study discourse patterns on short-form video platforms at scale
  • Archive public comments from newsworthy TikTok videos before they are deleted
  • Analyze trends in user language, sentiment shifts, and emerging cultural topics

Why use TikTok Comments Scraper?

  • No TikTok API key or login required — scrapes public data directly from TikTok pages
  • Playwright-powered — handles TikTok's JavaScript-heavy comment loading that simple HTTP scrapers miss
  • Proxy rotation built in — Apify's residential proxy network bypasses rate limits automatically
  • Reply thread support — optionally fetch nested replies with includeReplies enabled
  • Pay-per-event pricing — pay only for comments actually extracted, not idle compute time
  • Runs in the cloud — no local setup, no browser management, no maintenance required
  • Schedule and automate — set recurring runs to monitor the same videos over time
  • Export anywhere — JSON, CSV, Excel, Google Sheets, or push via API and webhook
  • Batch processing — scrape multiple videos in a single run with one dataset output

What data can you extract?

💬 Comment data Field Description
Comment text text The full comment body
Unique comment ID id TikTok's internal comment identifier
Like count likes Number of likes the comment received
Reply count replies Number of replies under the comment
Posted timestamp createdAt ISO 8601 datetime when the comment was posted
Reply flag isReply true if this is a reply to another comment
Parent comment ID parentCommentId Links replies to their parent comment
👤 Author data Field Description
Display name author The author's TikTok display name
Unique author ID authorId The author's unique TikTok user ID
Avatar image URL authorAvatarUrl Direct link to the author's profile avatar
🎬 Video context Field Description
Video ID videoId TikTok's internal video identifier
Source video URL videoUrl The original URL you passed as input
Scrape timestamp scrapedAt ISO 8601 datetime when the data was collected

13 fields total per comment record.


How much does it cost to scrape TikTok comments?

This actor uses pay-per-event pricing — you pay only for comments actually scraped. No monthly subscription. All platform costs including proxy and compute are included.

Free ($5 credit) Starter ($29/mo) Scale ($199/mo) Business ($999/mo)
Run start fee $0.005 $0.005 $0.005 $0.005
Per comment $0.003 $0.003 $0.003 $0.003
1,000 comments ~$3.01 ~$3.01 ~$3.01 ~$3.01

Higher-tier plans receive additional volume discounts on per-event pricing.

Real-world cost examples:

Task Comments Estimated cost
Quick sample: top 20 comments from 1 video 20 ~$0.07
Campaign check: 100 comments from 5 videos 500 ~$1.51
Monitoring run: 10 videos × 200 comments 2,000 ~$6.01
Research dataset: 50 videos × 500 comments 25,000 ~$75.01

The free $5 credit included with every new Apify account is enough for roughly 1,650 comments before you need to add payment.


How to scrape TikTok comments

  1. Open TikTok Comments Scraper on Apify Store
  2. Click Try for free — sign in or create a free Apify account
  3. Paste one or more TikTok video URLs into the Video URLs field
  4. Set Max comments per video (default: 20 — increase for larger datasets)
  5. Toggle Include replies if you want nested reply threads
  6. Click Save & Start
  7. Wait for the run to finish (typically 30–90 seconds per video)
  8. Click Export to download your data as JSON, CSV, or Excel

Example inputs for different scenarios:

Single video, top comments only:

{
  "videoUrls": ["https://www.tiktok.com/@khaby.lame/video/7623088450576633119"],
  "maxCommentsPerVideo": 50,
  "includeReplies": false
}

Multiple videos with reply threads:

{
  "videoUrls": [
    "https://www.tiktok.com/@charlidamelio/video/7234567890123456789",
    "https://www.tiktok.com/@khaby.lame/video/7234567890123456780"
  ],
  "maxCommentsPerVideo": 100,
  "includeReplies": true,
  "maxRepliesPerComment": 10
}

Minimal test run (fast, cheap):

{
  "videoUrls": ["https://www.tiktok.com/@khaby.lame/video/7623088450576633119"],
  "maxCommentsPerVideo": 5,
  "includeReplies": false
}

Input parameters

Parameter Type Default Description
videoUrls array of strings TikTok video URLs to scrape. Each must be a full https://www.tiktok.com/@username/video/ID link.
maxCommentsPerVideo integer 20 Maximum number of top-level comments to extract per video.
includeReplies boolean false When enabled, also fetches reply comments nested under each top-level comment.
maxRepliesPerComment integer 20 Maximum replies per top-level comment. Only applies when includeReplies is true.

Output examples

Each comment is saved as one record in the dataset. Example top-level comment:

{
  "id": "7606987654321098765",
  "text": "This is actually insane, I can't stop watching 😂",
  "author": "cooluser99",
  "authorId": "6912345678901234567",
  "authorAvatarUrl": "https://p16-sign.tiktokcdn-us.com/tos-useast5-avt-0068-tx/avatar~c5_100x100.jpeg",
  "likes": 1482,
  "replies": 23,
  "createdAt": "2024-11-12T14:33:00.000Z",
  "videoId": "7623088450576633119",
  "videoUrl": "https://www.tiktok.com/@khaby.lame/video/7623088450576633119",
  "isReply": false,
  "parentCommentId": null,
  "scrapedAt": "2026-03-23T10:15:42.000Z"
}

Example reply comment (when includeReplies: true):

{
  "id": "7607012345678901234",
  "text": "@cooluser99 same, I watched it 10 times already",
  "author": "tiktok_fan_2024",
  "authorId": "7123456789012345678",
  "authorAvatarUrl": "https://p16-sign.tiktokcdn-us.com/tos-useast5-avt-0068-tx/avatar2~c5_100x100.jpeg",
  "likes": 47,
  "replies": 0,
  "createdAt": "2024-11-12T15:01:00.000Z",
  "videoId": "7623088450576633119",
  "videoUrl": "https://www.tiktok.com/@khaby.lame/video/7623088450576633119",
  "isReply": true,
  "parentCommentId": "7606987654321098765",
  "scrapedAt": "2026-03-23T10:15:45.000Z"
}

Reply records include isReply: true and a parentCommentId so you can reconstruct the full conversation thread.


Tips for best results

  • 🟢 Start small: Run with maxCommentsPerVideo: 20 first to validate your URL format and check output quality before scaling up.
  • 🔗 Use full video URLs: The actor requires complete https://www.tiktok.com/@username/video/VIDEOID format. Short links like vm.tiktok.com/... are not supported.
  • 💬 Reply threads are optional: Enabling includeReplies can multiply your comment count significantly on popular videos. Only enable it when you need nested conversation data.
  • 📅 Schedule recurring runs: Use Apify's built-in scheduler to monitor the same video URLs weekly and track comment volume and sentiment over time.
  • 📦 Batch your videos: Pass multiple URLs in a single run — the actor processes them sequentially and writes all results to one dataset.
  • ⏱️ Expect 30–90 seconds per video: TikTok comment sections are JavaScript-heavy. The actor waits for full page rendering before extracting data.
  • 🔄 Re-run to catch new comments: TikTok comments accumulate on trending videos. Re-run periodically to capture the latest activity without duplicating old records (use createdAt to filter).
  • 💡 Filter by isReply: Post-process your dataset to separate top-level comments from replies for cleaner analysis.

Integrations

TikTok Comments Scraper connects with 5,000+ apps through Apify's built-in integration layer.

📊 TikTok Comments → Google Sheets Automatically export every new run's comments into a shared spreadsheet. Use Apify's native Google Sheets integration to append rows in real time — ideal for social media teams tracking multiple campaigns in one dashboard without touching a spreadsheet manually.

💬 TikTok Comments → Slack alerts Connect via Make or Zapier: when a run finishes, post a summary (video URL, comment count, top liked comment) to your Slack channel. Get instant visibility the moment monitoring data refreshes.

⚡ TikTok Comments → Make / Zapier workflows Feed scraped comment text directly into sentiment analysis APIs (OpenAI, MonkeyLearn), CRM systems, or reporting dashboards. Trigger the workflow on a schedule or via webhook after each actor run completes.

🔁 Scheduled monitoring Set Apify to run TikTok Comments Scraper daily on a fixed list of competitor or brand videos. Build a time-series dataset to track engagement trends automatically — no manual work after the initial setup.

🔔 Webhooks for real-time processing Configure a run-finish webhook to POST the dataset URL to your own API endpoint. Your backend receives fresh comment data the moment the scraper completes — no polling, no delay.


API usage

Run TikTok Comments Scraper programmatically from any language or CI/CD pipeline.

Node.js

import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });

const run = await client.actor('fetch_cat/tiktok-comments-scraper').call({
  videoUrls: ['https://www.tiktok.com/@khaby.lame/video/7623088450576633119'],
  maxCommentsPerVideo: 50,
  includeReplies: false,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Scraped ${items.length} comments`);
console.log(items[0]);

Python

from apify_client import ApifyClient

client = ApifyClient(token='YOUR_API_TOKEN')

run = client.actor('fetch_cat/tiktok-comments-scraper').call(run_input={
    'videoUrls': ['https://www.tiktok.com/@khaby.lame/video/7623088450576633119'],
    'maxCommentsPerVideo': 50,
    'includeReplies': False,
})

items = list(client.dataset(run['defaultDatasetId']).iterate_items())
print(f"Scraped {len(items)} comments")
print(items[0])

cURL

curl -X POST "https://api.apify.com/v2/acts/fetch_cat~tiktok-comments-scraper/runs?token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "videoUrls": ["https://www.tiktok.com/@khaby.lame/video/7623088450576633119"],
    "maxCommentsPerVideo": 50,
    "includeReplies": false
  }'

Fetch results after the run completes:

curl "https://api.apify.com/v2/datasets/DATASET_ID/items?token=YOUR_API_TOKEN&format=json"

Find your API token at apify.com/account/integrations. See the full Apify API documentation for webhooks, scheduling, and pagination.


Use with AI agents via MCP

TikTok Comments Scraper is available as a tool for AI assistants that support the Model Context Protocol (MCP).

Add the Apify MCP server to your AI client — this gives you access to all Apify actors, including this one:

Setup for Claude Code

claude mcp add --transport http apify "https://mcp.apify.com?tools=fetch_cat/tiktok-comments-scraper"

Setup for Claude Desktop, Cursor, or VS Code

Add this to your MCP config file:

{
    "mcpServers": {
        "apify": {
            "url": "https://mcp.apify.com?tools=fetch_cat/tiktok-comments-scraper"
        }
    }
}

Your AI assistant will use OAuth to authenticate with your Apify account on first use.

Example prompts

Once connected, try asking your AI assistant:

  • "Use fetch_cat/tiktok-comments-scraper to scrape the top 100 comments from this TikTok video and summarize what people are saying: https://www.tiktok.com/@khaby.lame/video/7623088450576633119"
  • "Scrape comments from these 3 competitor TikTok videos and identify the most common complaints and praise points"
  • "Pull TikTok comments from this viral video with replies included, then group them by sentiment and list the top 5 most-liked negative comments"

Learn more in the Apify MCP documentation.


TikTok comments are public data — they are visible to anyone visiting TikTok without logging in. Scraping publicly accessible information is generally considered legal, as affirmed by the 2022 hiQ Labs v. LinkedIn ruling in the United States, which established that scraping public data does not violate the Computer Fraud and Abuse Act.

FetchCat's actors are built for ethical, responsible data collection:

  • Only public, non-login-protected content is accessed
  • No CAPTCHAs are bypassed; proxy rotation mimics normal browsing behavior
  • No private messages, account credentials, or non-public content is ever extracted

You are responsible for how you use the data. Before using scraped TikTok comments for commercial purposes, publishing, or research, review:

  • TikTok's Terms of Service
  • GDPR requirements if processing data about EU residents
  • Your jurisdiction's laws on automated data collection

For academic research and personal use, scraping public TikTok comments is broadly accepted practice. For commercial applications at scale, consult a lawyer familiar with your jurisdiction. See Apify's blog post on web scraping legality for a broader overview.


Common questions

Questions and answers reused from the canonical actor README.

How many comments can I scrape per run?

There is no hard cap per run — set maxCommentsPerVideo as high as needed. TikTok loads comments in batches and very popular videos may have thousands of accessible comments. Most use cases work well with 100–500 comments per video. Very large jobs (500+ comments across many videos) may need the timeout increased beyond the default 5-minute window.

How much does it cost to scrape 1,000 TikTok comments?

Approximately $3.01 total: $0.005 for the run start fee plus $3.00 for 1,000 comments at $0.003 each. The free Apify plan includes $5 in credits — enough for roughly 1,650 comments at no cost.

How is this different from the official TikTok API?

TikTok's official Content Posting API does not expose public comments from arbitrary videos — it only gives brands access to their own content metrics. This actor scrapes public comment data from any video URL without requiring a developer account, API approval process, or official API access.

Why are some comments missing or fewer than the video's displayed count?

TikTok applies server-side content filters — spam detection, regional restrictions, shadow banning — that hide certain comments even from public view. The scraper extracts all comments TikTok makes publicly visible. If the run completed without errors and returned fewer results than the displayed count, TikTok is filtering those comments before they reach the browser.

Can I scrape replies to comments?

Yes. Enable includeReplies: true and set maxRepliesPerComment to control how many replies per comment are fetched. Reply records include isReply: true and a parentCommentId so you can reconstruct the full thread structure in your analysis.