Douyin Comments Scraper: 抖音评论 Likes, Authors, Translation avatar

Douyin Comments Scraper: 抖音评论 Likes, Authors, Translation

Pricing

from $3.00 / 1,000 comments

Go to Apify Store
Douyin Comments Scraper: 抖音评论 Likes, Authors, Translation

Douyin Comments Scraper: 抖音评论 Likes, Authors, Translation

Scrape Douyin comments (抖音评论) of videos: text, likes, reply count, date, location, author, images. Paste video links, v.douyin.com share links or IDs. Optional full English translation. No login.

Pricing

from $3.00 / 1,000 comments

Rating

0.0

(0)

Developer

Quarra Labs

Quarra Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 hours ago

Last modified

Share

Douyin Comments Scraper (抖音评论)

Get the comments of Douyin (抖音) videos in bulk, without a Douyin account, cookies or API key. Paste video links, share links from the app (the whole share text works), or video IDs; the run reads every page of comments Douyin serves, removes the duplicates Douyin repeats from page to page, and delivers each comment with its author, likes, reply count, region, images and stickers. Tick Translate to English to get an English translation next to each Chinese comment. Export as JSON, CSV or Excel, or read it through the Apify API.

$3 per 1,000 comments, plus a small start fee per run. Videos that do not exist or are private, and inputs that fail, are not charged.

How deep it goes

Measured on 15 October 2026:

VideoComments deliveredTime
7694982087456004346 (1,230 announced)757, every top-level comment Douyin serves, until Douyin says there are no more49 s
5 popular videos read together, Max results 12,00012,000 (2,207 to 2,538 per video)2 min 25 s
7694661751569213608 (255,000 announced), Max comments per video 10,00010,000, no duplicate, comments from 9 to 15 October8 min 41 s

A video is read page after page, about 20 comments per second; the videos of a run are read several at a time.

The counter Douyin shows under a video also counts replies and comments it hides, so a video announcing 1,230 comments has fewer top-level comments to deliver. On large videos Douyin sometimes serves several pages in a row with almost nothing new, then goes on: the run keeps reading through them instead of stopping early.

Quick start

  1. Paste one or more videos into Douyin videos, one per line.
  2. Set Max comments per video (100 by default, up to 10,000).
  3. Click Start and read the comments in the run's Output tab.

Like any Apify Actor, it can also be run and read through the Apify API, scheduled, and connected to webhooks, Make, Zapier, n8n or Apify's MCP server for AI agents.

Inputs

  • Douyin videos: any of

    • a video link: https://www.douyin.com/video/7694982087456004346
    • a share link from the app: https://v.douyin.com/…/, or the whole share text (7.92 复制打开抖音,看看【…的作品】 https://v.douyin.com/…/ …)
    • a link with ?modal_id=7694982087456004346 (from the Douyin home or search page)
    • a photo post: https://www.douyin.com/note/…
    • the video ID alone: 7694982087456004346

    Account pages, live rooms and search pages are not videos: they get an error record that says so, free.

  • Max comments per video: in Douyin's order, the most relevant first.

  • Translate to English (paid option, off by default): see below.

  • Max results: total comments the run delivers, all videos together, counted exactly.

  • Up to 2,000 videos per run; several are read at the same time.

Example, through the API:

{
"videoUrls": ["https://www.douyin.com/video/7692725411565972367", "7691170921935146278"],
"maxCommentsPerVideo": 2000,
"translateToEnglish": false,
"maxItems": 10000
}

Output

One record per comment. A real one, from 15 October 2026:

{
"type": "comment",
"status": "ok",
"commentId": "7694988601826214713",
"videoId": "7692725411565972367",
"videoUrl": "https://www.douyin.com/video/7692725411565972367",
"text": "跟我表白吗宝宝[舔屏]",
"createdAt": "2026-10-10T10:45:50Z",
"likes": 74,
"replies": 5,
"isPinned": false,
"isHot": true,
"likedByAuthor": false,
"byVideoAuthor": false,
"ipLocation": "贵州",
"authorId": "97876067709",
"authorName": "串子二班 讲解石",
"authorHandle": "Hyx0320_sotired",
"authorUrl": "https://www.douyin.com/user/MS4wLjABAAAAhtXnApToTEcNJYotsSgPsZqyWWbnLH9AzMrJ7Uqsp1Y",
"images": ["https://p26-sign.douyinpic.com/tos-cn-i-p14lwwcsbr/caad9e07133a4e1a8aebf171e15e51cb~tplv-p14lwwcsbr-7.image?…"],
"stickerUrl": null,
"mentions": [],
"hashtags": [],
"videoDescription": "巴提巴提#enhypen #bloodyparadise",
"videoAuthorName": "哦哦^o(初心纯女)",
"position": 19,
"input": "7692725411565972367",
"scrapedAt": "2026-10-15T00:46:44.636Z"
}

Fields that need a word of explanation:

  • replies is the number of replies Douyin counts under the comment. The replies themselves are not delivered: Douyin only shows them to signed-in users.
  • position is the comment's rank in Douyin's order for that video (1 = first shown).
  • isHot: Douyin marks the comment as a hot comment. likedByAuthor: the video's author liked it. byVideoAuthor: the video's author wrote it.
  • ipLocation: the province or country Douyin shows under the comment.
  • authorSecUid (in authorUrl) is the stable ID of the account in Douyin links; authorHandle is the Douyin ID the user chose, and can change.
  • videoDescription and videoAuthorName come from the video page; they are empty if Douyin did not serve it at that moment (the comments are delivered anyway).
  • status: ok (delivered, charged). A video that does not exist or is private gets one video record with status notFound or private, free. An input that fails gets an error record, free: error says why, retryable says if a later run may work.
  • Image links expire: comment images and stickers are signed links that Douyin keeps valid for about four days. Download what you need soon after the run, or read the video again later for fresh links.

The run summary (comments per input, notes, why the run stopped) is the OUTPUT record of the run's key-value store.

English translation (optional)

Tick Translate to English (translateToEnglish: true) and every comment comes with its text in English, in a translation field. The original stays in text, so you can check a phrase or quote it in Chinese. The translation is made by a large language model, in full, never summarized.

  • It is charged only when it is complete (translationStatus: "ok"). If it cannot be completed, you get the comment as usual, translationStatus: "failed" with the reason in translationError, and nothing is charged for the translation.
  • Comments already in English, and comments with no text of their own (only an image or Douyin emoticons such as [舔屏]), are not translated and not charged (translationStatus: "notNeeded").
  • Names of people, brands and places can come out in more than one English spelling: when one matters, check it against the Chinese.
  • Translations do not count toward Max results: 100 results means 100 comments, with their translations.

Pricing

Pay per event:

EventPrice
Comment$3 per 1,000
English translation (option)$2.00 per 1,000 comments translated
Run start$0.005 per GB of memory (1 GB minimum; $0.005 at the default 512 MB)

Never charged: videos that do not exist or are private, error records, duplicates (a comment Douyin serves twice is delivered once). Set Maximum cost per run in the run options and the run stops before going over it; with Translate to English, a comment is delivered only if it fits with its translation.

Limits

  • The text of replies to comments: Douyin only shows it to signed-in users. You get each comment's reply count.
  • Comments Douyin hides from visitors are not collected; the counter under a video includes them.

FAQ

Do I need a Douyin account or cookies? No.

Does it work with TikTok? No, Douyin only (the Chinese app, douyin.com).

What if the run is restarted by the platform (migration or reboot)? It resumes where it was: comments already in the dataset are not delivered or charged again, and the run reads on from there.

Is it legal? It collects public comments shown to any visitor of Douyin. Check the rules that apply to your use of the data, especially for personal data. With Translate to English, the texts are sent to a language-model service that does not keep them to train its models.

Is anything different on Apify's free plan? The English translation option is available on paid Apify plans only; on the free plan the run collects everything else as usual and charges nothing for translation.

Does the Actor send anything to Quarra? Only when a run fails or runs out of time: the Actor, its build, the error type, the line of our code where it happened, and the memory and time the run was given, so we can fix it fast. Never your input, your results, your account or the run ID.