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
commentIdstringValue exported as commentId.
textstringValue exported as text.
authorUsernamestring | nullValue exported as authorUsername.
authorNamestring | nullValue exported as authorName.
authorIdstring | nullValue exported as authorId.
authorAvatarUrlstring | nullValue exported as authorAvatarUrl.
likeCountintegerValue exported as likeCount.
replyCountintegerValue exported as replyCount.

Input preview

videoUrlsTikTok post URLs or IDs *
maxCommentsPerVideoMaximum comments per post
includeRepliesInclude replies
maxRepliesPerCommentMaximum replies per comment
maxConcurrencyConcurrent posts
requestTimeoutSecsRequest timeout

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

Export TikTok comments and replies from public video or photo URLs. Use this TikTok comments scraper to scrape TikTok comments into analysis-ready JSON, CSV, Excel, or Google Sheets rows—without a TikTok login or API key.

Input example

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

Output example

{
  "commentId": "6718425908423475205",
  "text": "The detail in this is amazing",
  "authorUsername": "example_user",
  "authorName": "Example User",
  "authorId": "123456789",
  "authorAvatarUrl": "https://p16-sign.tiktokcdn.com/avatar.jpeg",
  "likeCount": 42,
  "replyCount": 3,
  "createdAt": "2019-07-29T18:31:20.000Z",
  "isReply": false,
  "parentCommentId": null,
  "videoId": "6718335390845095173",
  "videoUrl": "https://www.tiktok.com/@scout2015/video/6718335390845095173",
  "fetchedAt": "2026-08-13T14:00:00.000Z",
  "sourceSessionId": "0c47a389-927c-42c5-a624-c679dd31422d",
  "extractionStatus": "ok",
  "missingFields": [],
  "isPinned": false,
  "commentLanguage": "en"
}

What data can you export?

Field Description
commentId TikTok comment identifier
text Comment text
authorUsername Public TikTok username
authorName Public display name
authorId Public author identifier
authorAvatarUrl Public avatar URL
likeCount Comment likes
replyCount Number of replies reported by TikTok
createdAt ISO 8601 publication time
isReply Whether the row is a reply
parentCommentId Parent ID for reply rows; otherwise null
videoId Source post identifier
videoUrl Source URL supplied in input
fetchedAt ISO 8601 collection time
sourceSessionId Session identifier useful for run diagnostics
extractionStatus ok or partial
missingFields Source fields unavailable on this row
isPinned Whether TikTok marks the comment as pinned
commentLanguage Language code when TikTok supplies one

All 19 keys are present on every saved row. Replies are separate rows so exports remain easy to filter and join.

Who is it for?

  • Social media teams monitoring audience reactions and brand mentions.
  • Researchers and analysts building sentiment or discussion datasets.
  • Marketing teams comparing engagement across campaigns or competitor posts.
  • Journalists and archivists preserving public discussion around newsworthy videos.
  • Community managers identifying highly liked comments and active participants.

Input settings

Setting Type Default Description
videoUrls string[] required Public TikTok video/photo URLs or numeric post IDs
maxCommentsPerVideo integer 20 Top-level comments per post (1–10,000)
includeReplies boolean false Save replies as linked rows
maxRepliesPerComment integer 20 Replies saved per parent (0–1,000)
maxConcurrency integer 1 Posts processed concurrently (1–3)
requestTimeoutSecs integer 30 Per-request timeout (10–120 seconds)
proxyConfiguration object none Optional Apify or custom proxy configuration

Input recipes

Several posts with replies

{
  "videoUrls": [
    "https://www.tiktok.com/@scout2015/video/6718335390845095173",
    "https://www.tiktok.com/@jenna_bushhager/video/7223827494913215786"
  ],
  "maxCommentsPerVideo": 100,
  "includeReplies": true,
  "maxRepliesPerComment": 10,
  "maxConcurrency": 2
}

Fast validation run

{
  "videoUrls": ["7149523510589754670"],
  "maxCommentsPerVideo": 5
}

Tips and limits

  • Start with 20 comments and increase the limit after validating your post.
  • A post may return fewer rows than its displayed total because TikTok filters, removes, or limits public comments.
  • Deleted, private, age-restricted, or region-restricted posts may be unavailable.
  • Reply collection can substantially increase run time and row count.
  • Successful rows from other posts are preserved if one input fails.
  • Re-running a post can capture newer comments; use commentId to deduplicate across runs.
  • The Actor collects only comments visible on public posts without logging in. Follow TikTok's terms and applicable privacy rules.

TikTok comments API usage

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/tiktok-comments-scraper').call({
  videoUrls: ['https://www.tiktok.com/@scout2015/video/6718335390845095173'],
  maxCommentsPerVideo: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Python

from apify_client import ApifyClient
client = ApifyClient(token='YOUR_APIFY_TOKEN')
run = client.actor('fetch_cat/tiktok-comments-scraper').call(run_input={
    'videoUrls': ['https://www.tiktok.com/@scout2015/video/6718335390845095173'],
    'maxCommentsPerVideo': 50,
})
items = list(client.dataset(run['defaultDatasetId']).iterate_items())

cURL

curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~tiktok-comments-scraper/runs?token=YOUR_APIFY_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"videoUrls":["6718335390845095173"],"maxCommentsPerVideo":50}'

Use with AI agents via MCP

Connect an MCP-compatible client to:

https://mcp.apify.com?tools=fetch_cat/tiktok-comments-scraper

Example prompt: “Extract 100 comments from these TikTok posts and summarize recurring positive and negative themes.”

Support

Use the Issues tab on the Actor page and include the public post URL, input, and run ID. Do not post private credentials or cookies.

Common questions

Questions and answers reused from the canonical actor README.

How can I export comments from a public TikTok video?

Add public video URLs to videoUrls, choose a comment limit, and run the Actor. Download the resulting dataset as JSON, CSV, or Excel.

Can I scrape TikTok comment authors, likes, replies, and timestamps?

Yes. Each row includes author identity fields, like and reply counts, creation time, and stable comment and video IDs when publicly available.

Can it scrape replies?

Yes. Enable includeReplies; every reply includes isReply: true and its parentCommentId.

Why did I receive fewer comments than requested?

The requested value is a maximum. TikTok may expose fewer public comments, and removed or filtered comments are not returned.

Can I process several posts in one run?

Yes. Add multiple values to videoUrls. Each post uses an independent session, and successful output is preserved when another target fails.