Douyin Comments Scraper - Video Comment Threads & Replies avatar

Douyin Comments Scraper - Video Comment Threads & Replies

Pricing

from $3.00 / 1,000 comment scrapeds

Go to Apify Store
Douyin Comments Scraper - Video Comment Threads & Replies

Douyin Comments Scraper - Video Comment Threads & Replies

Scrape public Douyin (抖音) video comments and nested replies from URLs, share links, or aweme IDs. Use for China-market social listening and agents needing one flat row per comment. Not for video metadata or TikTok (see sibling Actors). Returns text, likes, author, IP 属地, parent id. $0.003/comment.

Pricing

from $3.00 / 1,000 comment scrapeds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

Douyin Comments Scraper

Turn a public Douyin (抖音) video URL, share link, or numeric aweme ID into a flat dataset of visible comment and reply rows. Paste the identifiers you already have and get comment text, likes, author identity, IP 属地 when Douyin shows it, and parent linkage for nested replies.

This Actor is for China-market social listening teams, KOL agencies, and AI agents that need public comment threads before they branch into video metadata or creator profile workflows.

Referenced by: .actor/actor.json → "readme": "../README.md". User instruction: "Build a Douyin comments scraper apify actor".

Best fit for this Actor

  • Collect public comment sentiment on known Douyin campaign creatives.
  • Export reply threads under viral posts for moderation or research review.
  • Feed MCP or CRM workflows with one predictable row per comment or reply.

Use this Actor when you already have Douyin video URLs, share links, or aweme IDs and need public comments.

Do not use this Actor for video metadata, keyword search, creator profiles, Shop products, or global TikTok. For video stats, start with Douyin Video Scraper. For keyword discovery, use Douyin Search Scraper. For creator identity, use Douyin Profile Scraper. Global TikTok comments belong on TikTok Video Comments Scraper.

Practical scenario

A brand analyst pastes https://www.douyin.com/video/7577614489533680959, keeps maxComments at 20, and leaves includeReplies on. The run returns flat rows: top-level comments plus nested replies with isReply=true and parentCommentId. A captcha-walled residential route finishes FAILED with UPSTREAM_FAILED and zero comment-scraped charges. A public video with an empty comment panel finishes SUCCEEDED with VALID_EMPTY.

Quick start input

{
"videoUrls": ["https://www.douyin.com/video/7577614489533680959"],
"maxComments": 20,
"includeReplies": true
}

videoUrls accepts canonical /video/{id} links, v.douyin.com share links, iesdouyin.com/share/video/{id} URLs, or a bare 15–21 digit aweme ID.

Input reference

FieldTypeWhat it controls
videoUrlsarray (required)Public Douyin video URLs, share links, or aweme IDs. Max 20 unique values.
maxCommentsintegerHard cap per video after dedupe. Default 50, max 500.
maxVideosintegerHard cap on videos this run. Default 5, max 20.
includeRepliesbooleanInclude nested replies as flat rows. Default true.
proxyConfigurationobjectDefaults to Apify Residential HK. Override only with a CN-capable residential pool.

What data you receive

One dataset item is one public Douyin comment or reply.

{
"commentId": "7432109876543210987",
"text": "好看!",
"likeCount": 12,
"replyCount": 2,
"createTime": "2025-09-04T13:53:20.000Z",
"ipLabel": "上海",
"authorNickname": "Viewer",
"authorProfileUrl": "https://www.douyin.com/user/MS4wLjABAAAAexample",
"isReply": false,
"awemeId": "7577614489533680959",
"videoUrl": "https://www.douyin.com/video/7577614489533680959",
"scrapedAt": "2026-09-19T12:00:00.000Z",
"provider": "camoufox"
}
FieldMeaning
commentId + textStable comment id and visible body
likeCount / replyCountPublic engagement counters when Douyin exposes them
isReply / parentCommentIdNested reply linkage
ipLabelPublic IP 属地 label when shown
authorNickname / authorProfileUrlPublic commenter identity
scrapedAt / providerCollection time (ISO 8601) and Camoufox route

OUTPUT and RUN_SUMMARY in the default key-value store hold outcome, itemsPushed, and chargedEventCounts.

Use through the API

curl -X POST "https://api.apify.com/v2/acts/khadinakbar~douyin-comments-scraper/runs" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"videoUrls":["https://www.douyin.com/video/7577614489533680959"],"maxComments":20}'

MCP / agent prompt card

Use khadinakbar/douyin-comments-scraper with videoUrls set to one Douyin
/video/{id} URL or aweme ID. Keep maxComments at 20 for a cheap probe.
Expect one flat row per public comment/reply. Route TikTok URLs to
tiktok-video-comments-scraper instead. Charge is $0.003 per saved comment.

Pricing

Pay per event + platform usage pass-through:

EventPrice
apify-actor-start$0.00005
comment-scraped$0.003 per saved comment or reply

Invalid inputs and captcha-blocked zero-row runs do not charge comment-scraped. Platform compute and Residential proxy usage are billed to the run user.

Honest limits

  • Public web comments only. No login, no private messages, no Shop reviews, no liker identities.
  • ScrapeCreators and SociaVault have no Douyin comment routes; runtime is owned Camoufox.
  • Mainland CN IPs are not in Apify Residential; HK→SG→TW→JP→MO rotation may still hit captcha.
  • Nested replies depend on what Douyin exposes in the public panel / reply XHR.

Only scrape public Douyin content you are allowed to process. Respect Douyin's terms, applicable privacy law, and your own compliance policy. This Actor is not affiliated with Douyin or ByteDance.

Builder's note

Douyin signs comment list requests with msToken / a_bogus, so passive browser intercept after homepage warmup is more reliable than forging the query string. Prefer known video URLs from the video sibling over raw search — search pages captcha more aggressively than /video/{id} detail pages.