Douyin Comments Scraper - Video Comment Threads & Replies
Pricing
from $3.00 / 1,000 comment scrapeds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
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
| Field | Type | What it controls |
|---|---|---|
videoUrls | array (required) | Public Douyin video URLs, share links, or aweme IDs. Max 20 unique values. |
maxComments | integer | Hard cap per video after dedupe. Default 50, max 500. |
maxVideos | integer | Hard cap on videos this run. Default 5, max 20. |
includeReplies | boolean | Include nested replies as flat rows. Default true. |
proxyConfiguration | object | Defaults 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"}
| Field | Meaning |
|---|---|
commentId + text | Stable comment id and visible body |
likeCount / replyCount | Public engagement counters when Douyin exposes them |
isReply / parentCommentId | Nested reply linkage |
ipLabel | Public IP 属地 label when shown |
authorNickname / authorProfileUrl | Public commenter identity |
scrapedAt / provider | Collection 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 totiktok-video-comments-scraper instead. Charge is $0.003 per saved comment.
Pricing
Pay per event + platform usage pass-through:
| Event | Price |
|---|---|
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.
Legal / responsible use
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.