TikTok Comments Scraper - Replies & Authors avatar

TikTok Comments Scraper - Replies & Authors

Pricing

from $3.00 / 1,000 tiktok comments

Go to Apify Store
TikTok Comments Scraper - Replies & Authors

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

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

3 days ago

Last modified

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

FieldTypeDefaultDescription
postURLsarray of stringsexample video URLPublic TikTok video URLs to scrape. Add one or many full video links.
maxCommentsPerPostinteger10Maximum top-level comments to save and charge for per video. Set 0 to continue until TikTok pagination ends or maxPagesPerPost is reached.
maxTotalCommentsinteger100Run-wide cap across all input videos. Useful for controlling total spend across batches.
includeRepliesbooleantrueFetch nested replies under each top-level comment.
maxRepliesPerCommentinteger5Maximum nested replies to attach to each top-level comment.
maxPagesPerPostinteger5Safety cap for top-level comment pagination per video.
maxReplyPagesPerCommentinteger3Safety 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.

FieldTypeDescription
comment_idstringUnique TikTok comment identifier.
video_idstringTikTok video or aweme ID for the parent video.
video_urlstringPublic TikTok video URL used for scraping.
textstringTop-level comment text.
author_usernamestringTikTok username without the @ sign.
author_nicknamestringDisplay name of the commenter.
author_idstringNumeric TikTok user ID.
author_sec_uidstringStable TikTok secUid when TikTok returns it.
author_avatar_urlstringProfile picture thumbnail URL.
like_countintegerNumber of likes on the comment.
reply_countintegerTotal replies reported for the comment.
is_pinnedbooleanWhether the comment was pinned by the video author.
languagestringDetected language code.
created_atstringISO 8601 comment timestamp.
repliesarrayNested reply objects under the top-level comment.
provider_pageinteger1-based comment page number where the comment was found.
result_positioninteger1-based position within the current input video.
scraped_atstringISO 8601 timestamp when the row was produced.
source_urlstringOriginal 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 Start is charged once when the Actor starts after input validation.
  • TikTok Comment is 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

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.