TikTok Comments Scraper avatar

TikTok Comments Scraper

Pricing

from $0.75 / 1,000 tiktok comments

Go to Apify Store
TikTok Comments Scraper

TikTok Comments Scraper

Scrape TikTok video comments and replies into clean JSON with author details, engagement counts, timestamps, mentions, hashtags, and video status records.

Pricing

from $0.75 / 1,000 tiktok comments

Rating

0.0

(0)

Developer

Inus Grobler

Inus Grobler

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Scrape comments from public TikTok videos into clean, analysis-ready JSON. The Actor is built specifically for comment collection: it collects top-level comments, can fetch replies under each comment, deduplicates comment IDs, and streams one dataset row per comment or reply.

This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by TikTok.

Why use this Actor

  • Monitor audience reactions on TikTok videos
  • Export comments for sentiment analysis, moderation, or research
  • Collect reply threads when you need conversation context
  • Track comment counts and per-video scrape status across many videos
  • Start quickly with a small default run, then scale to larger comment exports

What it collects

  • Top-level comment text and IDs
  • Replies, including parent comment IDs
  • Author username, display name, profile URL, avatar URL, user ID, and secUid
  • Author profile details when TikTok returns them, including signature, region, language, follower count, following count, heart count, and video count
  • Like count, reply count, pin/liked flags, labels, language, IP label, and creation time
  • Mentions, hashtags, text entity offsets, comment image URLs, sticker URLs, and share URLs when available
  • Source video ID and resolved TikTok video URL
  • Per-video status records with scrape status, counts, and errors

Input

Provide TikTok video URLs or raw numeric video IDs in videoUrls. You can paste a full /video/ URL, a short TikTok URL, or just the numeric video ID.

The main controls are the video list, comment limit, reply collection, and optional cookies. Residential proxy routing, request pacing, retries, and memory-friendly result streaming are tuned automatically.

{
"videoUrls": [
"https://www.tiktok.com/@khaby.lame/video/7623088450576633119",
"7615594654058237206"
],
"maxCommentsPerVideo": 10,
"includeReplies": false,
"maxRepliesPerComment": 0
}

Runs use Apify Residential Proxy by default. A real TikTok cookie header can improve reliability when TikTok challenges anonymous sessions. Use cookieHeader only with cookies you are authorized to use.

Rows are written to the dataset as soon as each comment or reply is found, so long runs can be inspected while they are still running. The Actor does not keep collected comments in memory.

Output

Dataset items are comment, reply, or video status records. Comment and reply rows are written immediately as they are parsed. Video status rows are written once per input video and are useful when TikTok returns no comments for the current session.

{
"record_type": "comment",
"video_id": "7106594312292453678",
"video_url": "https://www.tiktok.com/@tiktok/video/7106594312292453678",
"comment_id": "7107000000000000000",
"parent_comment_id": "",
"is_reply": false,
"text": "Example comment text",
"like_count": 12,
"reply_count": 2,
"create_time": "2026-05-28T10:15:00Z",
"create_time_epoch": 1780000000,
"author_unique_id": "example_user",
"author_nickname": "Example User",
"author_profile_url": "https://www.tiktok.com/@example_user",
"scraped_at": "2026-05-28T14:30:00Z"
}
{
"record_type": "video_status",
"video_id": "7623088450576633119",
"video_url": "https://www.tiktok.com/@khaby.lame/video/7623088450576633119",
"status": "succeeded",
"top_level_comments": 10,
"replies": 0,
"api_pages": 1,
"video_metadata_status": "not_loaded",
"scraped_at": "2026-05-28T14:30:00Z"
}

The run summary is stored in OUTPUT_SUMMARY and includes per-video counts, failures, API page counts, and the effective settings.

Python API example

from apify_client import ApifyClient
TOKEN = "YOUR_APIFY_TOKEN"
ACTOR_ID = "thescrapelab/tiktok-comments-scraper"
apify_client = ApifyClient(TOKEN)
actor_client = apify_client.actor(ACTOR_ID)
run_input = {
"videoUrls": ["https://www.tiktok.com/@khaby.lame/video/7623088450576633119"],
"maxCommentsPerVideo": 10,
"includeReplies": False,
"maxRepliesPerComment": 0,
}
call_result = actor_client.call(run_input=run_input)
if call_result is None:
raise RuntimeError("Actor run failed")
dataset_client = apify_client.dataset(call_result["defaultDatasetId"])
for item in dataset_client.list_items().items:
if item.get("record_type") in {"comment", "reply"}:
print(item["record_type"], item.get("comment_id"), item.get("text"))
else:
print(item["record_type"], item.get("video_id"), item.get("status"))

Notes and limitations

TikTok changes its web API and challenge behavior often. The Actor uses residential proxy routing by default, but a cookie header can still be needed for a warmer session. Keep request limits realistic. The Actor only scrapes comments available to the session used for the run.