TikTok Comments Scraper - Replies & Authors
Pricing
from $3.00 / 1,000 tiktok comments
TikTok Comments Scraper - Replies & Authors
Scrape public TikTok video comments with replies, authors, likes, timestamps, pinned status, language and source video URL. No login or cookies needed.
Pricing
from $3.00 / 1,000 tiktok comments
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
3 days ago
Last modified
Categories
Share
What is TikTok Comments Scraper - Replies & Authors?
This Apify Actor accepts public TikTok video URLs and returns one dataset record per top-level comment. Each record can include the comment text, author details, likes, reply count, language, pinned status, timestamp, source video URL, and nested replies when enabled. The output is useful when you want a single comment-level row for analysis, reporting, or AI workflows that read structured TikTok conversation data.
Best fit and connected workflows
This Actor fits workflows that start from known public TikTok video links and need comment-thread data in a normalized dataset, with one row per parent comment. It routes naturally into sentiment review, creator research, audience response tracking, and spreadsheet or BI pipelines.
Which Actor to use: when you schedule recurring comment pulls for many videos, compare this Actor with TikTok Video Comments Scraper from the same developer. Both take the same video-URL input and return the same comment rows, so pick the one whose Pricing tab suits your volume.
Practical scenario
Maya, a social media analyst, has one public TikTok video URL from a creator campaign and wants to review audience response. She sends the URL in postURLs, keeps replies enabled, and receives a dataset row for each top-level comment with text, author_username, like_count, reply_count, language, is_pinned, and replies. She uses the author and engagement fields to identify recurring themes, then forwards the reply threads to her research notes for follow-up tagging.
Input fields
| Field | Type | Default | Description |
|---|---|---|---|
postURLs | array of strings | example video URL | Public TikTok video URLs to scrape. Add one or many full video links. |
maxCommentsPerPost | integer | 10 | Maximum top-level comments to save and charge for per video. Set 0 to continue until TikTok pagination ends or maxPagesPerPost is reached. |
maxTotalComments | integer | 100 | Run-wide cap across all input videos. Useful for controlling total spend across batches. |
includeReplies | boolean | true | Fetch nested replies under each top-level comment. |
maxRepliesPerComment | integer | 5 | Maximum nested replies to attach to each top-level comment. |
maxPagesPerPost | integer | 5 | Safety cap for top-level comment pagination per video. |
maxReplyPagesPerComment | integer | 3 | Safety cap for reply pagination under one comment. |
Focused input example
{"postURLs": ["https://www.tiktok.com/@stoolpresidente/video/7623818255903329566"],"maxCommentsPerPost": 10,"maxTotalComments": 100,"includeReplies": true,"maxRepliesPerComment": 5,"maxPagesPerPost": 5,"maxReplyPagesPerComment": 3}
Output fields
One record in the default dataset represents one top-level TikTok comment. Replies are nested inside the parent record when reply collection is enabled.
| Field | Type | Description |
|---|---|---|
comment_id | string | Unique TikTok comment identifier. |
video_id | string | TikTok video or aweme ID for the parent video. |
video_url | string | Public TikTok video URL used for scraping. |
text | string | Top-level comment text. |
author_username | string | TikTok username without the @ sign. |
author_nickname | string | Display name of the commenter. |
author_id | string | Numeric TikTok user ID. |
author_sec_uid | string | Stable TikTok secUid when TikTok returns it. |
author_avatar_url | string | Profile picture thumbnail URL. |
like_count | integer | Number of likes on the comment. |
reply_count | integer | Total replies reported for the comment. |
is_pinned | boolean | Whether the comment was pinned by the video author. |
language | string | Detected language code. |
created_at | string | ISO 8601 comment timestamp. |
replies | array | Nested reply objects under the top-level comment. |
provider_page | integer | 1-based comment page number where the comment was found. |
result_position | integer | 1-based position within the current input video. |
scraped_at | string | ISO 8601 timestamp when the row was produced. |
source_url | string | Original input TikTok URL for the row. |
Illustrative output record
{"comment_id": "7623874021293212447","video_id": "7623818255903329566","video_url": "https://www.tiktok.com/@stoolpresidente/video/7623818255903329566","text": "Brilliant","author_username": "katylynnm","author_nickname": "Katy","author_id": "6813803505255154693","author_sec_uid": "MS4wLjABAAAAGQCGrZCPx6snYndsBtuAIif17vTOTEfDZ9qd","author_avatar_url": "https://p16-common-sign.tiktokcdn-us.com/avatar.jpg","like_count": 3,"reply_count": 4,"is_pinned": false,"language": "en","created_at": "2026-04-02T21:25:25.000Z","replies": [],"provider_page": 1,"result_position": 1,"scraped_at": "2026-07-09T12:00:00.000Z","source_url": "https://www.tiktok.com/@stoolpresidente/video/7623818255903329566"}
How it works
This Actor reads public TikTok comment data through a primary data route with an automatic fallback route. It writes normalized comment rows to the default dataset and records execution diagnostics in RUN_SUMMARY. The output contract also exposes the dataset items link and the run summary record link, which makes the result easy to read in Apify, API clients, and MCP-based tools.
Pricing
This Actor uses pay per event pricing plus Apify platform usage.
Actor Startis charged once when the Actor starts after input validation.TikTok Commentis charged once per top-level comment saved to the dataset.- Nested replies are included in the parent comment row and are not charged as separate top-level comments.
For example, 25 top-level comments means 25 comment events plus one start event. Current event prices are on the live Pricing tab.
Each run records its outcome in RUN_SUMMARY.outcome: COMPLETE, PARTIAL, VALID_EMPTY (the videos have no public comments), INVALID_INPUT, or UPSTREAM_FAILED when no data route could read the videos; that last case ends the run with a non-success status so it never looks like an empty result.
Use with AI agents (MCP)
This Actor is available through Apify MCP as a tool for reading public TikTok comment rows from known video URLs. The exact Actor identity is khadinakbar/tiktok-comments-scraper. It returns structured dataset records and a machine-readable RUN_SUMMARY, which helps agents interpret the outcome, counts and pagination.
Scrape public comments from this TikTok video URL, keep replies attached to each parent comment, and return the dataset rows plus the run summary for this run.
When the dataset is read back, each row represents one top-level comment. The replies field contains nested conversation data when enabled. The provider_page and result_position fields show where each row appeared in pagination. scraped_at and source_url preserve provenance. Pagination settings such as maxCommentsPerPost, maxTotalComments, maxPagesPerPost, and maxReplyPagesPerComment shape how much content the Actor reads and charges for, while includeReplies and maxRepliesPerComment shape how much conversation detail comes back.
API example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const run = await client.actor('khadinakbar/tiktok-comments-scraper').call({postURLs: ['https://www.tiktok.com/@stoolpresidente/video/7623818255903329566'],maxCommentsPerPost: 10,maxTotalComments: 100,includeReplies: true,maxRepliesPerComment: 5,});const dataset = await client.dataset(run.defaultDatasetId).listItems();console.log(dataset.items);
Best results and outcome guidance
Use full public TikTok video URLs in postURLs, since the Actor is built around video comment threads. Keep maxTotalComments aligned with the amount of data you want to review in one run, and use maxCommentsPerPost together with maxPagesPerPost when you are exploring larger comment sections. If you want conversation context, leave includeReplies enabled and use maxRepliesPerComment to shape thread depth. If you only need parent comments, trim and includeRawData can keep the output lighter while preserving the core fields.
Continue the workflow
- Then use TikTok Followers Scraper - Followers & Following to extend TikTok Comments Scraper - Replies & Authors research with a complementary engagement contract.
- Then use TikTok Following Scraper - Export Followed Accounts to extend TikTok Comments Scraper - Replies & Authors research with a complementary engagement contract.
Design note
I found that the dataset contract makes one thing very clear: each output row is a top-level comment, and replies are nested inside that row rather than stored as separate billed comment records. That shape is the main reason this Actor works well for conversation analysis and agent workflows.
FAQ
Can this Actor be used from a known TikTok video URL?
Yes. It is designed for public TikTok video URLs supplied in postURLs.
What kind of output does it return?
It returns normalized comment rows in the default dataset, plus a RUN_SUMMARY record in key-value storage.
How are replies handled?
Replies are nested under the parent comment row in the replies field when includeReplies is enabled.
How should I connect this with other workflows?
Use this Actor after you already have public TikTok video URLs. It fits comment analysis, audience research, and AI ingestion pipelines that need stable comment rows and source URLs.
Responsible use
Use this Actor only for public TikTok content you are allowed to access and process. Follow applicable TikTok terms, privacy rules, and data protection requirements. The Actor is built for public video comment collection, with no login or cookies required.