TikTok Video Comments Scraper (With Replies)
Pricing
from $1.00 / 1,000 comments
TikTok Video Comments Scraper (With Replies)
Extract TikTok video comments with full nested reply threads. Replies ON by default. Get comment text, author, likes, timestamps, and all replies per comment. Export to JSON, CSV, Excel.
Pricing
from $1.00 / 1,000 comments
Rating
0.0
(0)
Developer
Khadin Akbar
Actor stats
0
Bookmarked
3
Total users
2
Monthly active users
2 days ago
Last modified
Categories
Share
🎵 TikTok Video Comments Scraper (With Replies)
Extract TikTok video comments with full nested reply threads — replies are ON by default. Get comment text, author details, like counts, timestamps, and every reply thread for each comment. No login required.
Export scraped data, run via API, schedule and monitor runs, or integrate with AI pipelines and other tools.
What does this actor do?
This actor scrapes comments from one or more TikTok video URLs and returns them as structured JSON — including every nested reply under each comment. Unlike most TikTok comment scrapers that hide replies behind an opt-in toggle (defaulting to OFF), this actor surfaces reply threads by default so you get the full conversation context immediately.
It communicates directly with TikTok's internal comment API using the browser's own session credentials, which means no API keys, no cookies to manage, and no login required.
Why use this actor?
- Replies included by default — full conversation threads, not just top-level comments
- No login or cookies required — works out of the box on any public TikTok video
- Rich structured output — 16 fields per comment including author metadata and nested replies array
- MCP-compatible — output schema is fully documented for AI agent integration
- Reliable pagination — handles videos with thousands of comments
What data can this actor extract?
Each comment record contains the following fields:
| Field | Type | Description |
|---|---|---|
comment_id | string | Unique TikTok comment ID |
video_id | string | ID of the video this comment belongs to |
video_url | string | Full URL of the TikTok video |
text | string | The comment text content |
author_username | string | Commenter's @username |
author_nickname | string | Commenter's display name |
author_id | string | Commenter's unique TikTok user ID |
author_avatar_url | string|null | URL of commenter's profile picture |
like_count | integer | Number of likes on the comment |
reply_count | integer | Total replies to this comment on TikTok |
is_pinned | boolean | Whether pinned by the video creator |
language | string|null | Detected language (ISO 639-1 code, e.g. "en") |
created_at | string | ISO 8601 timestamp when comment was posted |
replies | array | Nested reply objects (see below) |
scraped_at | string | ISO 8601 timestamp when this data was scraped |
source_url | string | The input video URL |
Reply object fields
Each item in the replies array contains:
| Field | Type | Description |
|---|---|---|
reply_id | string | Unique reply ID |
text | string | Reply text |
author_username | string | Reply author's @username |
author_nickname | string | Reply author's display name |
author_id | string | Reply author's user ID |
author_avatar_url | string|null | Reply author's avatar URL |
like_count | integer | Likes on this reply |
replied_to_username | string|null | @username this reply is directed at |
created_at | string | ISO 8601 timestamp when reply was posted |
How to use this actor
Via the Apify Console
- Open the actor and click Try for free
- Paste one or more TikTok video URLs into the TikTok Video URLs field
- Set your limits (default: 100 comments, 20 replies per comment)
- Click Start
- Download results as JSON, CSV, or Excel
Via the API
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('khadinakbar/tiktok-video-comments-scraper').call({postURLs: ['https://www.tiktok.com/@bellapoarch/video/6862153058223197445',],maxCommentsPerPost: 200,includeReplies: true,maxRepliesPerComment: 30,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Example output
{"comment_id": "7234567890123456789","video_id": "6862153058223197445","video_url": "https://www.tiktok.com/@bellapoarch/video/6862153058223197445","text": "This is so cute! 😍","author_username": "johndoe123","author_nickname": "John Doe","author_id": "6761572823670931457","author_avatar_url": "https://p16-sign.tiktokcdn-us.com/...","like_count": 142,"reply_count": 3,"is_pinned": false,"language": "en","created_at": "2024-01-15T10:30:00.000Z","replies": [{"reply_id": "7234567890999888777","text": "Agreed!! 🔥","author_username": "jane_smith","author_nickname": "Jane Smith","author_id": "123456789","author_avatar_url": "https://p16-sign.tiktokcdn-us.com/...","like_count": 12,"replied_to_username": "johndoe123","created_at": "2024-01-15T11:00:00.000Z"}],"scraped_at": "2026-04-08T12:00:00.000Z","source_url": "https://www.tiktok.com/@bellapoarch/video/6862153058223197445"}
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
postURLs | array | — | TikTok video URLs to scrape. Required. |
maxCommentsPerPost | integer | 100 | Max top-level comments per video |
includeReplies | boolean | true | Fetch nested reply threads |
maxRepliesPerComment | integer | 20 | Max replies per comment (0 = all) |
proxyConfiguration | object | none | Optional proxy settings |
Use cases
- Sentiment analysis — Analyze audience reactions to content, brands, or trends
- Brand monitoring — Track what people say about your brand on TikTok
- Competitor research — Study engagement and comment quality on competitor videos
- Influencer vetting — Evaluate comment authenticity before partnerships
- Market research — Collect qualitative data at scale for social media studies
- Content strategy — Understand what resonates by analyzing high-engagement comment threads
- AI training data — Generate labeled conversation datasets from TikTok discussions
Pricing
This actor uses pay-per-event pricing — you are charged per comment collected.
| Comments | Approximate cost |
|---|---|
| 100 | ~$0.08 |
| 1,000 | ~$0.80 |
| 10,000 | ~$8.00 |
| 100,000 | ~$80.00 |
Replies within comments are not charged separately — only top-level comments are billed.
Works great with
- Apify's TikTok Scraper — Get video metadata, then pass URLs to this actor to scrape their comment sections
- Google Sheets integration — Export comments directly to spreadsheets for analysis
FAQ
Does this require a TikTok login? No. This actor scrapes public comment sections without any authentication.
Does it work on private accounts? No. Only public videos are supported.
How many comments can I scrape?
As many as exist on the video. Set maxCommentsPerPost to 0 for unlimited (may be slow for viral videos with millions of comments).
Are replies included?
Yes — by default. Set includeReplies: false to disable and only collect top-level comments (much faster).
What about short TikTok links (vm.tiktok.com)? Supported — the actor follows the redirect automatically.
Legal disclaimer
This actor is intended for lawful data collection from publicly available TikTok content. Users are responsible for compliance with applicable laws, TikTok's Terms of Service, and data protection regulations (GDPR, CCPA, etc.). Do not use this actor to collect data on private individuals without consent, or for any purpose that violates applicable law.