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, one flat row per comment for China-market social listening. Each row has text, likes, author, IP location and parent ID.
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
24 days ago
Last modified
Categories
Share
What is Douyin Comments Scraper - Video Comment Threads & Replies?
Douyin Comments Scraper turns public Douyin (抖音) video URLs, v.douyin.com share links or numeric aweme IDs into a dataset with one flat row per visible comment. Each row returns the comment ID, text, like count, reply count, post time, IP 属地 location label, author nickname, author IDs and profile URL, the video's aweme ID and URL, and reply linkage for nested replies. China-market social listening teams, KOL agencies, brand analysts and AI agents use it to read audience reaction to campaign videos and creator content without a Douyin login.
Why social listening teams use this Douyin scraper
- Paste what you have. Full video URLs,
v.douyin.comshare links,iesdouyin.comURLs and bare aweme IDs all work. - Engagement on every comment.
likeCountandreplyCountshow which reactions resonate and which start conversations. - Regional signal.
ipLabelcarries Douyin's IP 属地 province label, useful for regional sentiment splits. - Flat rows for analysis. Comments and replies share one shape; reply rows add
isReplyandparentCommentId. - Two cost caps.
maxCommentsper video andmaxVideosper run bound every job.
Best fit for this Actor
- Designed for public comment threads on Douyin videos you already know, such as campaign creatives, competitor posts or KOL content.
- Use it for sentiment analysis, audience research, creative testing and KOL due diligence.
- When you start from a keyword instead of a video, start with Douyin Search Scraper, then pass the video URLs into
videoUrlshere. - For views, likes and captions of the same videos, continue with Douyin Video Scraper - Metadata from URLs & Aweme IDs.
- When the videos are on TikTok, use TikTok Video Comments Scraper — Replies & Authors instead.
Example workflow: from campaign videos to a sentiment brief
A brand analyst starts with five Douyin videos from a product launch. They paste the share links into videoUrls, set maxComments to 100 and keep includeReplies on. The dataset returns text, likeCount, replyCount, ipLabel and createTime for each comment. They feed the text into a Chinese sentiment model, compare positive and negative share by province using ipLabel, sort by likeCount to quote the most-liked reactions, and export the brief for the marketing team. A weekly schedule on the same videos tracks how the conversation develops.
Input
| Field | Type | What it controls |
|---|---|---|
videoUrls | array | Douyin video URLs, share links, iesdouyin.com URLs or aweme IDs. Required. |
maxComments | integer | Comment and reply rows per video, 1 to 500. Default 50. |
maxVideos | integer | Unique videos per run, 1 to 20. Default 5. |
includeReplies | boolean | Save nested replies as rows with isReply set to true. Default true. |
proxyConfiguration | object | Default Apify Residential with Hong Kong exit IPs, rotating through nearby regions. |
{"videoUrls": ["https://www.douyin.com/video/7577614489533680959","https://v.douyin.com/iAbc123/"],"maxComments": 100,"maxVideos": 5,"includeReplies": true,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "HK"}}
Output
One row per public comment or reply.
| Field | What it contains |
|---|---|
commentId, text | Comment ID and visible comment text |
likeCount, replyCount | Likes and number of replies |
createTime, createTimeUnix | Post time as ISO 8601 and Unix seconds |
ipLabel | IP 属地 location label when Douyin shows it |
authorNickname, authorUid, authorSecUserId, authorShortId | Commenter display name and IDs |
authorAvatarUrl, authorProfileUrl, authorVerified | Avatar, profile link and verification flag |
isReply, parentCommentId, replyId | Reply linkage for nested replies |
awemeId, videoUrl, input | Video ID, canonical URL and the value you supplied |
proxyCountry, scrapedAt | Exit region used and collection time |
{"commentId": "7578191179746788145","text": "这个老板娘真的很好看,她说出五十岁的时候我真的震惊了[发呆]","likeCount": 36374,"replyCount": 271,"createTime": "2025-11-29T16:52:14.000Z","createTimeUnix": 1764435134,"ipLabel": "湖南","authorNickname": "小橙子","authorUid": "10000000001","authorSecUserId": "MS4wLjABAAAAexampleSecUserId","authorShortId": "100000001","authorAvatarUrl": "https://p3-pc.douyinpic.com/aweme/100x100/aweme-avatar/example.jpeg","authorProfileUrl": "https://www.douyin.com/user/MS4wLjABAAAAexampleSecUserId","authorVerified": false,"isReply": false,"awemeId": "7577614489533680959","videoUrl": "https://www.douyin.com/video/7577614489533680959","input": "https://www.douyin.com/video/7577614489533680959","scrapedAt": "2026-10-02T17:04:19.430Z","proxyCountry": "HK"}
Top-level comments are the core of each dataset and always carry replyCount. Reply rows appear when Douyin's public web view exposes the reply thread, and they carry isReply, parentCommentId and replyId. Each run also writes OUTPUT and RUN_SUMMARY records with the outcome and saved-row counts.
Pricing
This Actor uses Pay per event plus Apify platform usage. You pay one Comment scraped event per comment or reply row saved to the dataset and one small Actor Start event per run, and Apify platform usage, including residential proxy, is billed on top. The live Pricing tab on this page shows the current event prices.
Worked example: five videos with maxComments set to 100 save at most five hundred rows, so the run costs up to that many comment events, one start event and its platform usage. Set includeReplies to false to bill top-level comments only.
API example
curl -X POST "https://api.apify.com/v2/acts/khadinakbar~douyin-comments-scraper/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"videoUrls": ["7577614489533680959"], "maxComments": 30, "includeReplies": false}'
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("khadinakbar/douyin-comments-scraper").call(run_input={"videoUrls": ["https://www.douyin.com/video/7577614489533680959"],"maxComments": 50,})for c in client.dataset(run["defaultDatasetId"]).iterate_items():print(c["likeCount"], c["ipLabel"], c["text"][:60])
Use with AI agents (MCP)
Connect the Actor to Claude, ChatGPT, Cursor or any MCP client through Apify MCP, then ask:
Collect the top 50 public comments on Douyin video 7577614489533680959, translate the ten most-liked ones into English and summarize the overall sentiment by province.
The agent calls the Actor with videoUrls and maxComments, reads rows with get-dataset-items, sorts by likeCount and groups by ipLabel. OUTPUT.outcome tells it whether the run was complete or empty, and videoUrl plus scrapedAt give provenance. Cost scales with saved rows, capped by maxComments.
Best results
| Starting situation | Helpful action | Expected outcome |
|---|---|---|
| Share links from the Douyin app | Paste the v.douyin.com links as they are | Links are resolved to videos |
| Aweme IDs from a spreadsheet | Paste the bare numeric IDs | Direct video matches |
| Sentiment on top-level reactions | Set includeReplies to false | Lean rows of main comments |
| Conversation depth | Keep includeReplies on and raise maxComments | Replies where Douyin shows them publicly |
| Regional analysis | Group rows by ipLabel | Province-level splits |
| Steady access | Keep the default residential proxy in nearby regions | Pages served as the public web view |
Builder's note
I built this for China-market listening, where Douyin share links and aweme IDs are what teams actually pass around, so every common identifier format is accepted. I designed every comment and reply as one flat row with the same fields, because sentiment tools and spreadsheets work more smoothly without nested threads. I found the IP 属地 label to be one of the most useful fields for brand teams, so it sits on every row next to the text and likes.
FAQ
Do I need a Douyin account?
No. The Actor reads the public web view of each video with no login.
Which links work?
douyin.com/video/ URLs, v.douyin.com share links, iesdouyin.com share URLs and bare aweme IDs.
Can I collect every comment on a viral video?
The Actor collects the comments Douyin shows publicly, up to maxComments per video, which is ideal for sampling the top of the conversation.
Responsible use
This Actor collects public Douyin comments. Commenter nicknames and IDs are personal data under laws such as China's PIPL and the GDPR, so process them only with a lawful basis, aggregate where you can, and respect Douyin's terms. Douyin is a trademark of its owner; this independent Actor is not affiliated with or endorsed by Douyin or ByteDance. For questions or bugs, open a ticket in the Issues tab.