TikTok Comments Scraper
Pricing
Pay per event
TikTok Comments Scraper
Extract comments from TikTok videos including text, author info, likes, timestamps, and reply threads. Supports pagination, short URLs, and bulk video processing. Filter by keyword or date range. Export to JSON, CSV, or Excel. Pay per comment extracted.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
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 TikTok Comments Scraper 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
includeRepliesenabled - ✅ 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
- Open TikTok Comments Scraper on Apify Store
- Click Try for free — sign in or create a free Apify account
- Paste one or more TikTok video URLs into the Video URLs field
- Set Max comments per video (default: 20 — increase for larger datasets)
- Toggle Include replies if you want nested reply threads
- Click Save & Start
- Wait for the run to finish (typically 30–90 seconds per video)
- 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/@mr_top5_/video/7606927852495228174"],"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/@mr_top5_/video/7606927852495228174"],"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": "7606927852495228174","videoUrl": "https://www.tiktok.com/@mr_top5_/video/7606927852495228174","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": "7606927852495228174","videoUrl": "https://www.tiktok.com/@mr_top5_/video/7606927852495228174","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: 20first 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/VIDEOIDformat. Short links likevm.tiktok.com/...are not supported. - 💬 Reply threads are optional: Enabling
includeRepliescan 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
createdAtto 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.
Using the Apify API
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('automation-lab/tiktok-comments-scraper').call({videoUrls: ['https://www.tiktok.com/@mr_top5_/video/7606927852495228174'],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 ApifyClientclient = ApifyClient(token='YOUR_API_TOKEN')run = client.actor('automation-lab/tiktok-comments-scraper').call(run_input={'videoUrls': ['https://www.tiktok.com/@mr_top5_/video/7606927852495228174'],'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/automation-lab~tiktok-comments-scraper/runs?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"videoUrls": ["https://www.tiktok.com/@mr_top5_/video/7606927852495228174"],"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"
Setup for Claude Desktop, Cursor, or VS Code
Add this to your MCP config file:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com"}}}
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 automation-lab/tiktok-comments-scraper to scrape the top 100 comments from this TikTok video and summarize what people are saying: https://www.tiktok.com/@mr_top5_/video/7606927852495228174"
- "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.
Is it legal to scrape TikTok comments?
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.
Automation Lab'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.
FAQ
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.
Why did my run fail or time out? TikTok's anti-bot systems occasionally block requests even with proxy rotation — this is a transient issue that typically resolves within minutes. If you see consistent failures on specific video URLs, confirm the video is still public and accessible from a regular browser. For large runs across many videos, consider splitting them into smaller batches of 5–10 videos per run to stay within the default timeout.
Other social media scrapers
Looking for more social data tools? Explore other actors from Automation Lab:
Other TikTok tools
- TikTok Scraper — scrape TikTok profiles, video metadata, views, likes, shares, and descriptions
YouTube tools
- YouTube Comments Scraper — extract comments from YouTube videos with the same pay-per-comment pricing model
- YouTube Scraper — scrape YouTube channels, videos, and comments in a single actor
- YouTube Shorts Scraper — extract Shorts metadata and engagement data
- YouTube Transcript Scraper — download video transcripts and captions
Instagram and Twitter/X
- Instagram Scraper — scrape Instagram posts, profiles, comments, and hashtags
- Twitter/X Scraper — extract tweets, replies, and profile data from Twitter/X
- Reddit Scraper — scrape Reddit posts and comments by subreddit, keyword, or URL
Review platforms
- Trustpilot Reviews Scraper — extract customer reviews from any Trustpilot business page
- Google Maps Reviews Scraper — scrape Google Maps reviews for any business location