Douyin Comments Scraper avatar

Douyin Comments Scraper

Pricing

from $0.60 / 1,000 comments

Go to Apify Store
Douyin Comments Scraper

Douyin Comments Scraper

Collect public comments and replies from the Douyin post links you add. Each row has the comment text, post ID, comment time, and like and reply counts. No Douyin login is needed, and you can set a total limit for each run.

Pricing

from $0.60 / 1,000 comments

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Share

💬 Collect public Douyin comments and replies from the posts you choose

This Actor helps researchers, marketers, and developers collect comments from public Douyin posts. Each comment comes back with its text, post ID, comment time, and like and reply counts. You do not need a Douyin account or login, and you do not need to copy comments by hand.

Use it to

📋 What each comment row includes

Each row is one public comment or reply. It includes the post ID, so you can match every comment to the post it belongs to. Replies also include the ID of the comment they answer. Commenter names and regions appear when Douyin shows them.

▶️ Run it on your Douyin posts

Quick start

  1. Open this Actor in Apify Console.
  2. Paste one or more Douyin post links or video IDs. The form starts with a sample video link, so replace it with your own post.
  3. Turn on reply comments or set limits if you need them.
  4. Start the run, then open the dataset to see the rows.

You can also start runs and read results through the Apify API.

⚙️ Input

Fill in the form in Apify Console, or send the same fields as JSON through the API.

Input fields

FieldTypeWhat it does
postUrlslist of textThe Douyin post links or video IDs to collect comments from. Add one full link for each public video or image post. For a video, you can also add its numeric ID, such as 7577614489533680959. Numeric IDs are read as videos, so use the full link for image posts.
includeRepliestrue or falseAdds public replies as separate comment rows. Replies are charged at the same rate as top-level comments. The default is false.
commentOrdertextSets the order for each post. Choose source, likes (most likes first), newest, oldest, or replies (most replies first). The default is source.
maxCommentswhole numberStops the run after this many comment rows in total. Requested replies count too. The form starts at 50. Leave it empty to return all available results until the source is exhausted.
maxCommentsPerPostwhole numberStops after this many comment rows from each post. Requested replies count too. Leave it empty to return all available results for each post until the source is exhausted.
maxRepliesPerCommentwhole numberKeeps at most this many public replies under each comment when includeReplies is on. Leave it empty to return all available results for each comment until the source is exhausted.

Douyin also limits what visitors who are not logged in can see. On image posts, they see fewer comments. The list stops at a login prompt, even when the limit fields are empty. They also see up to about three replies under each comment.

Example input

{
"postUrls": [
"https://www.douyin.com/video/7686432847778982833"
],
"includeReplies": false,
"commentOrder": "source",
"maxComments": 50
}

🧾 Output

Each result is one row in the dataset. Replies use the same fields as top-level comments. A reply's parentCommentId shows the comment it answers. Top-level comments do not have this field.

Output fields

FieldTypeWhat it does
commentIdtextThe source ID that identifies the comment.
texttextThe text written in the comment.
postIdtextThe ID of the Douyin post the comment belongs to.
parentCommentIdtextFor a reply, the source ID of the comment it answers.
createdAttext (date and time)The time Douyin says the comment was posted.
likeCountwhole numberThe number of likes Douyin shows for the comment.
replyCountwhole numberThe number of replies Douyin shows for the comment.
isHottrue or falseWhether Douyin marks the comment as hot.
isPinnedtrue or falseWhether the post author has pinned the comment.
commenter.userIdtextThe source ID of the commenter.
commenter.displayNametextThe name Douyin shows for the commenter.
commenter.avatarUrltext (link)A link to the commenter's public profile image.
commenter.profileUrltext (link)A link to the commenter's public Douyin profile.
commenter.regiontextThe region Douyin shows for the commenter.
post.captiontextThe text Douyin shows with the post.
post.publishedAttext (date and time)The time Douyin says the post was published.
post.creator.userIdtextThe source ID of the post creator.
post.creator.displayNametextThe name Douyin shows for the post creator.
post.engagement.likeCountwhole numberThe number of likes Douyin shows for the post.
post.engagement.commentCountwhole numberThe number of comments Douyin shows for the post.
post.engagement.shareCountwhole numberThe number of shares Douyin shows for the post.
post.engagement.saveCountwhole numberThe number of saves Douyin shows for the post.
medialist of textLinks to public images attached to the comment. Only some comments have it.

Example row

A real row from a recent successful run, shown in full.

{
"commentId": "7687804581959009065",
"text": "唯独音乐没有亏待我们90后",
"postId": "7686432847778982833",
"post": {
"caption": "当你在2026年再次听到这首歌(第5集)#ladygaga #pokerface #高中生",
"creator": {
"userId": "85020314682",
"displayName": "拉小提琴的王主任🎻"
},
"publishedAt": "2026-09-17T09:40:14.000Z",
"engagement": {
"likeCount": 8136378,
"commentCount": 71192,
"shareCount": 1477276,
"saveCount": 521170
}
},
"createdAt": "2026-09-21T02:14:21.000Z",
"likeCount": 1144,
"replyCount": 9,
"isHot": true,
"isPinned": false,
"commenter": {
"userId": "96924266142",
"displayName": "豆虾包",
"avatarUrl": "https://p3-pc.douyinpic.com/aweme/100x100/aweme-avatar/tos-cn-avt-0015_e4eefffef2c6b2c791d0e3a65cb851c5.jpeg?from=2064092626",
"profileUrl": "https://m.douyin.com/share/user/MS4wLjABAAAAnmfRgd3zEJwYm8IgTDQdgQveuM32uSU5yKhUynTY4lE?scene_from=douyin_h5_search",
"region": "四川"
}
}

💳 Pricing

How you are charged

You are charged for each successfully collected comment. Public replies use the same rate when you include them. Your price per comment depends on your Apify plan, and the Store page shows the current price.

🔌 Integrations

Results are saved to an Apify dataset. You can view them in Apify Console, or read them with the Apify API from your own tools.

Video

❓ FAQ

Do I need a Douyin login or account?

No. You do not need to give the Actor a Douyin account or login. Douyin still limits what visitors who are not logged in can see. On image posts, they see fewer comments, and the list can stop at a login prompt.

Can I get replies too?

Yes. Turn on Include reply comments to add public replies as separate rows. Each reply includes parentCommentId, the ID of the comment it answers. Use Max replies per comment to limit how many replies you get under each comment.

Why did a run return fewer comments than I expected?

The Actor can only collect the public comments that Douyin returns. On image posts, visitors who are not logged in see fewer comments, and the list stops at a login prompt. Your own limits can also stop a run early.

Can I limit how many comments I get?

Yes. Max comments stops a run after a set number of comment rows. Max comments per post sets a limit for each post. Leave either field empty to return all available results until the source is exhausted.

Can it search Douyin for posts?

No. It works from the post links or video IDs you give it. To find posts by keyword first, use Douyin Search Scraper, which is listed under Related Actors.

Do I need to write code?

No. You can run the Actor from the Apify Console form. Developers can also start runs and read the dataset with the Apify API.

📝 Changelog

v0.0 (16-10-2026)

  • Initial release.

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré