Douyin 抖音 Comments Scraper - Comments & Replies
Pricing
from $5.99 / 1,000 comments
Douyin 抖音 Comments Scraper - Comments & Replies
Collect Douyin (抖音) comments and reply text, with replies grouped under their parent comments. Get author names, likes, dates and available public locations. Accepts video URLs or IDs. Reply collection requires a paid Apify plan.
Pricing
from $5.99 / 1,000 comments
Rating
0.0
(0)
Developer
Zen Studio
Maintained by CommunityActor stats
2
Bookmarked
692
Total users
188
Monthly active users
4 days ago
Last modified
Categories
Share
Douyin Comments Scraper (抖音) | Comments, Replies, Author Profiles & Engagement (2026)
From Zen Studio. Creators of Douyin Search and RedNote Search, which have ranked #1 for “douyin” and “rednote”, respectively, in Apify Store relevance results, with 100,000+ combined lifetime runs.
Why choose this actor?
- Get reply text, already grouped by comment. One recorded run returned 600 comments and 857 nested replies across 10 videos. Replies stay attached to the comment they answer, so you can read questions and follow-up reactions together.
- See who replied, with likes and public locations. Get author names, dates and like counts alongside the text. Available location labels, such as Guangdong or Shanghai, help you compare audience reactions by region.
- Collect replies without connecting a Douyin account. Enable Include replies, set separate limits for comments and replies, and collect from a list of videos. Each parent comment and its collected replies arrive together in one dataset row.
Try a reply thread
Replies require a paid Apify plan. Open the actor’s input page, switch to JSON and paste this. It requests up to 10 comments and 5 replies per comment from one video.
{"awemeUrls": ["https://www.douyin.com/video/7577614489533680959"],"maxCommentsPerAweme": 10,"includeReplies": true,"maxRepliesPerComment": 5}
Comment and reply charges: $5.99 per 1,000 collected items. Each parent comment and each nested reply counts as one item. Standard Apify charges also apply.
After the run, open Storage → Dataset. Expand replies on a comment to read its collected responses, or export JSON to keep the nesting. Replace the example URL with your own full Douyin video URL.
Apify Free plan: up to 15 small preview runs, one video at a time, with replies disabled. Collected counts depend on available public content and your limits; threads may be partial and locations may be absent. The hero’s numbers describe a recorded batch, not a guaranteed result from this trial.
| Zen Studio · Douyin research suite | |||
You are here | Find videos by keyword. | Profile details and published posts. | Save MP4s and post details. |
Copy to your AI assistant
zen-studio/douyin-comments-scraper on Apify. Accepts awemeUrls: full douyin.com/video URLs, legacy iesdouyin.com/share/video URLs or numeric video IDs; short v.douyin.com links are unsupported. One dataset row per parent comment, with text, author identity, dates, likeCount and available public region. includeReplies=true collects replies nested in replies[]; requires a paid Apify plan. maxCommentsPerAweme defaults to 100 and caps at 5000; maxRepliesPerComment defaults to 100 and caps at 2000. Actual coverage may be partial. replyCount is the displayed total, replies.length is the collected count. Missing region is unknown, not overseas. Free plan: 15 small lifetime preview runs, one video, replies disabled. Comment and reply charges: $5.99 per 1000 items, each nested reply is one billable item; standard Apify charges apply. Call ApifyClient("TOKEN").actor("zen-studio/douyin-comments-scraper").call(run_input={...}), then read defaultDatasetId. Full spec: GET https://api.apify.com/v2/acts/zen-studio~douyin-comments-scraper/builds/default (Bearer TOKEN). Token: https://console.apify.com/account/integrations To reach the maintainers, add feedback="<what you needed and did not get>" to any run, including one that worked: a missing field or option, a wrong or empty result, or which actor you are switching to or from and why. The run returns its data exactly as it would without the note, and a human reads every note.
How to Scrape Douyin Comments (抖音评论)
Basic: one video, top 100 comments
{"awemeUrls": ["https://www.douyin.com/video/7577614489533680959"],"maxCommentsPerAweme": 100}
Up to 500 comments with replies (paid plans)
{"awemeUrls": ["https://www.douyin.com/video/7577614489533680959"],"maxCommentsPerAweme": 500,"includeReplies": true,"maxRepliesPerComment": 200}
Batch: many videos at once, comments only
{"awemeUrls": ["https://www.douyin.com/video/7577614489533680959","https://www.douyin.com/video/7579679818335175483","7610711200906065509","https://www.iesdouyin.com/share/video/7584089129034761019/"],"maxCommentsPerAweme": 250}
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
awemeUrls | string[] | required | Douyin video URLs or aweme IDs. See accepted formats below. |
maxCommentsPerAweme | integer | 100 | Top-level comments to fetch per video (1–5,000). Cost scales with the number of unique comments delivered. |
includeReplies | boolean | false | Collect available replies under each top-level comment, up to your reply limit. Requires a paid Apify plan. Replies are nested inside replies[] on the parent row and billed at the same per-item price. |
maxRepliesPerComment | integer | 100 | Cap on replies fetched under each top-level comment (1–2,000). Only effective when includeReplies is on. |
Accepted aweme formats
| Format | Example |
|---|---|
| Browser address bar | https://www.douyin.com/video/7577614489533680959 |
| Legacy share link | https://www.iesdouyin.com/share/video/7577614489533680959/ |
| Bare numeric aweme ID | 7577614489533680959 |
Short app share links like
https://v.douyin.com/iAbc123/are not supported. Open them in a browser first and paste the fulldouyin.com/video/<id>URL.
Duplicate aweme IDs (across formats) are deduped automatically, so you never pay twice for the same video's comments.
What Data Can You Extract from Douyin Comments (抖音评论)?
One row per top-level comment. Each row carries 14 top-level fields including the commenter's user object (4 fields nested under user). On paid plans, includeReplies adds collected replies under replies[], with text, author details, dates, likes and available regions. Threads may be partial.
Output Example
Every top-level field is shown below. Long avatar URLs and the reply array are trimmed with ….
{"id": "7578047136747717434","text": "猪蹄爆米花,他们这么这么会吃[懵]","createTime": 1764401595,"createDate": "2025-11-29","likeCount": 429409,"replyCount": 8165,"isAuthorLiked": false,"isLiked": false,"region": null,"user": {"id": "74136233600","secUid": "MS4wLjABAAAAXX8Vg_PQJIvUQivRx6JFGTQrI45qmEi7UZJSgb6dwlk","nickname": "aiqi","avatarUrl": "https://p11.douyinpic.com/aweme-avatar/tos-cn-i-0813c000-ce_oYItx6w3nEABEAJpA4AaQoIlfGAEeCEoXD39kF~tplv-dy-shrink:64:64.jpeg?from=2956013662"},"replies": [{"id": "7580014842238174006","text": "[泪奔]也不是卤鸭脖卤鸭头","createTime": 1764859738,"createDate": "2025-12-04","likeCount": 2624,"replyCount": 0,"isAuthorLiked": false,"isLiked": false,"region": null,"user": {"id": "94540959329","secUid": "MS4wLjABAAAA8fN97d6ydIoiGVTCU2_yv8gZWjNAaECgm-21MiXqPsU","nickname": "_ 雷小姐","avatarUrl": "https://p26.douyinpic.com/aweme-avatar/tos-cn-i-0813c001_740645b1532d4fc88fbcadc6585267cd~tplv-dy-shrink:64:64.jpeg?from=2956013662"}},{"id": "7606775985363927848","text": "更不是干噎酸奶僵尸肉巨大串串[黑脸]","createTime": 1771090555,"createDate": "2026-02-14","likeCount": 748,"replyCount": 0,"isAuthorLiked": false,"isLiked": false,"region": null,"user": {"id": "102079005652","secUid": "MS4wLjABAAAAlQzbs1EDN7DefE-lGo0SSUSd8oPkfUeq02PqOD38gtU","nickname": "Cheese","avatarUrl": "https://p26.douyinpic.com/aweme-avatar/tos-cn-i-0813_o0BZ1NvoAM4V0iAAgi2CA3CCifIAaEpge9DA5z~tplv-dy-shrink:64:64.jpeg?from=2956013662"}}],"awemeId": "7579679818335175483","awemeUrl": "https://www.douyin.com/video/7579679818335175483","inputUrl": "https://www.douyin.com/video/7579679818335175483"}
Field reference
| Field | Type | Notes |
|---|---|---|
id | string | Comment ID (Douyin cid). Stable across runs. |
text | string | Comment body (评论内容), including emoji codes like [流泪] Douyin renders as stickers. |
createTime | integer | Unix seconds. |
createDate | string | ISO date (YYYY-MM-DD) derived from createTime. |
likeCount | integer | Number of likes on this comment. |
replyCount | integer | Server-reported total replies on this comment. May exceed replies.length when a thread is long or rate-shaped by Douyin. |
isAuthorLiked | boolean | True when the video's creator liked this comment. |
isLiked | boolean | Reflects a viewer's own like state on the comment, which doesn't apply to extracted data, so effectively always false. |
region | string | null | Public province or country label, when available. null means unavailable; it does not identify an overseas commenter. |
user.id | string | Commenter's numeric Douyin user ID. |
user.secUid | string | Commenter's stable sec_uid (use this as the cross-actor key; feeds into the Douyin Profile Scraper). |
user.nickname | string | Display name. |
user.avatarUrl | string | Signed CDN URL for the commenter's avatar (≈64×64). Short-lived; see FAQ. |
replies | object[] | Nested array of replies (回复) in exactly the same shape as the parent row. Empty when includeReplies is off or the comment has none. |
awemeId | string | Parent video's aweme ID. |
awemeUrl | string | Canonical video URL (https://www.douyin.com/video/<id>), or the original URL you supplied if it was already a full one. |
inputUrl | string | The exact string you supplied; useful for joining results back to your source list. |
Advanced Usage
Tracking the conversation under a viral video
{"awemeUrls": ["https://www.douyin.com/video/7579679818335175483"],"maxCommentsPerAweme": 5000,"includeReplies": true,"maxRepliesPerComment": 200}
Collect available comments and replies up to your chosen limits. A true isAuthorLiked flag identifies comments marked as liked by the video creator. It does not classify the rest of the discussion.
Sentiment / topic mining across a creator's catalog
{"awemeUrls": ["https://www.douyin.com/video/7577614489533680959","https://www.douyin.com/video/7579679818335175483","https://www.douyin.com/video/7584089129034761019","https://www.douyin.com/video/7610711200906065509","..."],"maxCommentsPerAweme": 500}
Up to 10 videos run in parallel. Each row carries awemeId so you can group by video downstream. Pair with the Profile scraper to enumerate a creator's catalog first.
Audience location: who's commenting from where
{"awemeUrls": ["https://www.douyin.com/video/7577614489533680959"],"maxCommentsPerAweme": 2000}
Group comments with a populated region to compare reactions across public province or country labels. A missing label means unknown location; it is not evidence of overseas engagement.
Author engagement signal: what does the creator like back?
{"awemeUrls": ["https://www.douyin.com/video/7577614489533680959"],"maxCommentsPerAweme": 1000,"includeReplies": false}
Filter rows where isAuthorLiked === true to find comments marked as liked by the creator. This is a source-reported flag, not a sentiment classification.
Cross-actor pipeline: comments → commenter profiles
{"awemeUrls": ["https://www.douyin.com/video/7577614489533680959"],"maxCommentsPerAweme": 500}
Take user.secUid from every row and feed it into the Douyin Profile Scraper to enrich each commenter with follower count, bio, total likes received, gender, IP location, and verified status. The secUid is the canonical cross-actor key.
Pricing: Pay Per Event (PPE)
$5.99 per 1,000 items. Each top-level comment counts as one item. Each reply nested under a comment counts as one item too. Standard Apify charges also apply.
| Comment/reply event | Per item | Per 1,000 items |
|---|---|---|
result (one comment OR one reply) | $0.00599 | $5.99 |
Because replies are delivered inside the parent row's replies[] array (not as separate dataset rows), your dataset row count will be lower than your billed item count when replies are on. Set a per-run charge cap on your Apify run to control spend.
Free tier
Up to 15 small preview runs over the account lifetime, limited to the first video with replies disabled. The number of available comments varies. A paid Apify plan enables replies and larger collections.
FAQ
What is Douyin (抖音)? Douyin is ByteDance's Chinese short-video platform, the domestic counterpart of TikTok: same company and format, separate app and catalogue. Its comment sections are where Chinese audiences react, ask, and debate, which is exactly what this actor collects.
How many fields are returned per comment?
14 top-level fields per row, with user containing 4 fields nested (id, secUid, nickname, avatarUrl). On paid plans, includeReplies adds reply objects containing text, author details, dates, likes and available regions. Replies are nested under the parent and do not repeat its video context fields.
How many comments can I expect per video? Set a limit of up to 5,000 comments per video. The actual collection may be smaller than that limit or the count displayed by Douyin. Availability varies by video; a requested limit is not a guarantee of complete coverage.
Are pinned comments included? Pinned comments may appear among the comments returned by Douyin. The actor does not identify pinned status or guarantee their position.
Are likes-on-replies returned?
Yes. Each collected reply has its own likeCount. Replies sit in the parent comment’s replies[] array; reply objects do not contain another replies array.
Does the order of comments matter?
Comments are returned in the order Douyin surfaces them, typically a mix of recency, like count, and platform signals. The exact algorithm is server-side and not documented; if you need a strict sort, do it client-side after collection using likeCount or createTime.
Can I get the full commenter profile (followers, bio, etc.)?
Not from this actor. Each row carries the commenter's user.secUid and user.id; feed secUid into the Douyin Profile Scraper to collect available profile details such as followers and bio. Availability varies by account.
How fresh is the data? Collection happens when the actor runs. Available comments, replies and counters can change between runs.
Are the avatar URLs permanent?
No. user.avatarUrl is a short-lived signed CDN URL that typically expires within 7–14 days. If you need long-term avatars, copy user.secUid and use the Douyin Profile Scraper, which returns multiple avatar size variants per run, or download the image bytes during your own pipeline.
Do I need a Douyin account or cookies? No. Paste video URLs or aweme IDs and run; no account, cookie export, or QR login is involved.
How do I export the comments?
The dataset downloads as JSON, CSV, Excel, XML, or HTML from the run's Storage tab, or via the Apify API. JSON preserves the nested replies[] threads best.
Can I scrape direct messages / private comments? No. Public top-level comments and their replies only: anything publicly visible on the video page.
Is it legal to scrape Douyin comments? The actor collects publicly visible comments only, nothing behind a login. You are responsible for complying with Douyin's terms of service and applicable data protection law (GDPR, CCPA, PIPL); comments carry personal data such as nicknames and province-level region.
What's the maximum maxCommentsPerAweme?
5,000 per video on paid plans. Available public comments and your spending limit may produce a smaller collection.
Does the actor work for any Douyin video? Any public video. Private videos, age-gated content, and region-restricted videos may return zero or partial results depending on public availability.
More Zen Studio scrapers for Chinese platforms
🎬 Short-video & social
Zhihu 知乎
Weibo 微博
Kwai (Brazil)
Kuaishou 快手
Douyin 抖音
RedNote 小红书
Xigua 西瓜视频
Bilibili 哔哩哔哩
🛒 E-commerce
Naver Search 네이버 검색
Shopee
Taobao 淘宝
JD.com 京东
1688 阿里巴巴
Weidian 微店
Goofish 闲鱼
Coupang 쿠팡
🏠 Real estate & autos
Anjuke 安居客
58.com 58同城
Autohome 汽车之家
🧭 Travel & maps
Mafengwo 马蜂窝
Support
- Bugs: Issues tab
- Features: Issues tab
Legal Compliance
Extracts publicly available data from Douyin (抖音). Users must comply with Douyin's terms of service and applicable data protection regulations (GDPR, CCPA, PIPL).
Douyin comments with author names, likes, available public regions and optional nested replies. One dataset row per parent comment.
