Quarra
Guide · Douyin

Douyin transcript API: what the Open Platform returns, and the alternative

Douyin's Open Platform documents video titles, covers and counts, for accounts that authorize your app or by keyword. What each endpoint gives, who can register, and how to get the words spoken in a public video, in Chinese or in English.

Checked against the Douyin Open Platform documentation and measured on November 4, 2026.

Open Douyin Transcript Scraper on ApifyVideos without speech and errors are not charged, and you can cap the cost of a run.

The short answer

The Douyin Open Platform documentation we read on November 4, 2026 describes no endpoint for subtitles or spoken text. Its video endpoints return titles, covers, dates and counts, either for the accounts that authorize your app or, by keyword, for public videos. Mobile and website apps are for registered businesses and organizations, and each capability needs an approved application. To get the words spoken in a public Douyin video, our Douyin Transcript Scraper takes the video link and returns the transcript with timestamps, SRT and VTT files, and an English translation if you ask for one. Four news videos took a 16-second run: three transcripts, and one video with no clear speech that came back free.

What Douyin's APIs give you

We read the Douyin Open Platform documentation on November 4, 2026. Its OpenAPI list for mobile and website apps includes profiles, fans, videos, search, direct messages, local life services and tools. None of its endpoints is described as returning subtitles or speech.

APISpeech textWho can use it
Video list (GET /video/list/, scope video.list), referenceNone. Each video has a title, cover, creation time, share link and counts of plays, likes, comments, shares, forwards and downloads.The account that authorizes your app: the call needs that user's access token. The page says 4 pages at most can be fetched and that filtering by time is not available.
Video data (POST /video/data/, scope video.data), referenceNone. The same counts, for the video IDs you send.Only videos uploaded by the user behind the token, and only public ones. The page recommends 10 IDs per call at most.
Keyword video management (scope video.search), guideNone. Videos whose titles contain your keywords, and the comments under them (scope video.search.comment).Mobile and website apps granted a special permission. The keywords must be closely tied to your own business: generic category words and competitor brand words cannot be requested. Results only include public videos published in the last day.
Douyin video search (抖音视频搜索), referenceNot described. The sample response shows item_id, title, cover, create_time, nickname, avatar, a like count, link and a high_quality_text field that the page does not explain.Open on application to a test programme: you fill in an application form and integrate after approval. The call uses an application token, and publish_time takes 0 for no limit, or 1, 7 or 180 days.

To create a mobile or website app, the onboarding page (updated August 14, 2026) lists companies, sole proprietors, government bodies, public institutions, social organizations and other organizations. Its table lists individuals for mini programs, mini games and mini interactive features only. For the video list and video data, the capability page says any app can apply, that you must describe a real use case, that review takes 2 to 3 business days, and that the platform can take the capability back from an app that misuses it.

For a product, a newsletter or a research team that wants what is said in a video, none is documented as returning it. TikTok is a separate service with its own APIs: see TikTok transcript API.

Getting transcripts with our Actor

The Douyin Transcript Scraper takes video links, v.douyin.com share links, the share text copied from the Douyin app (the link inside it is used) and video IDs, and returns one record per video. Our Actor does not use Douyin captions: it transcribes the audio. It charges only videos that get a transcript, by started minute of speech: music, photo posts, deleted and private videos come back as free records that say why.

This script reads four videos from two news accounts, prints what came back, saves an SRT file for each transcript and writes a CSV with the Chinese text next to its English translation. The four links come from a search for “央视新闻” with our Douyin Video Search Scraper, which returns a url for each video.

import csv
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("quarra/douyin-transcript-scraper").call(run_input={
    "urls": [
        "https://www.douyin.com/video/7704197562298928427",
        "https://www.douyin.com/video/7704189927847677220",
        "https://www.douyin.com/video/7433324401111747900",
        "https://www.douyin.com/video/7704214890235415843",
    ],
    "translateToEnglish": True,
    "includeSrt": True,
})

rows = []
for v in client.dataset(run.default_dataset_id).iterate_items():
    if v["status"] != "ok":
        print(v["videoId"], v["status"], v.get("missingReason") or v.get("errorCode"))
        continue
    print(v["videoId"], v["author"]["fullName"], f'{v["durationSeconds"]:.0f}s', v["language"],
          v["translationStatus"], v["characterCount"], "characters,", v["billedMinutes"], "min billed")
    with open(f'{v["videoId"]}.srt', "w", encoding="utf-8") as f:
        f.write(v["srt"])
    rows.append([v["videoId"], v["author"]["fullName"], (v["publishedAt"] or "")[:10],
                 v["likeCount"], v["transcript"], v["translation"]])

with open("douyin-transcripts.csv", "w", newline="", encoding="utf-8-sig") as f:
    w = csv.writer(f)
    w.writerow(["videoId", "account", "published", "likes", "chinese", "english"])
    w.writerows(rows)

Tested with apify-client 3.4 on November 4, 2026, in a 16-second run. It printed:

7704197562298928427 央视新闻 32s en notNeeded 338 characters, 1 min billed
7704189927847677220 央视新闻 43s zh ok 201 characters, 1 min billed
7704214890235415843 missing no_speech
7433324401111747900 龙视新闻 20s zh ok 110 characters, 1 min billed
VideoAccountWhat came backMinutes of speechMinutes translated
7704197562298928427央视新闻Transcript labeled English, with Chinese sentences inside10
7704189927847677220央视新闻Chinese transcript of 201 characters, English translation11
7704214890235415843央视新闻Free no_speech record00
7433324401111747900龙视新闻Chinese transcript of 110 characters, English translation11

The first sentence of the second video's transcript, and the start of its translation:

我儿子每天趁我出去的时候,他就看电视根本停不下来。
My son watches TV nonstop whenever I step out.

With apify-client 2.x, write run["defaultDatasetId"] instead of run.default_dataset_id.

What comes back

Each record has the transcript as plain text and as timestamped segments (start, end, duration, text), the language, the minutes billed, and the video's account (name, Douyin ID, verified flag, followers), date, likes, comments, shares, saves, caption, hashtags and sound. includeSrt and includeVtt add subtitle files; translateToEnglish adds a translation field next to the Chinese, which stays in transcript. viewCount is always null: Douyin does not publish play counts to visitors.

Three things to expect

Two languages in one video

Video 7704197562298928427 has a stretch in English and a narrator in Chinese. The record is labeled en and holds both languages in the order spoken. A transcript labeled English is not translated and not charged, so its Chinese sentences stay Chinese (translationStatus: notNeeded). When a video may mix languages, read language and the text before you rely on the translation.

Homophones

Speech-to-text writes what it hears, and Mandarin has many homophones. The creator's caption of the second video says “魔改”; the transcript says “模改”. Check names, brands and technical terms against the caption field, which the record carries.

Videos without speech

Video 7704214890235415843 came back as a free record that says “no clear speech detected (music, sounds, or words the model is not sure of); free”. One video in four was free in this run.

Limits

  • Video links only. An account, search, hashtag or live stream link gets a free invalid_url record that says why, and comments are not read. Our Douyin Video Search Scraper returns videos for a keyword, and our Douyin Comments Scraper reads comments.
  • Videos longer than 30 minutes are skipped by default, free, as too_long; maxDurationMinutes raises the limit to 60.
  • A photo post (图文) given as a link comes back as a free photo_post record; given by its bare ID, it comes back as a free unavailable record. Private videos and deleted videos come back as free private and not_found records.
  • On the Free plan, transcripts come from a different set of models, and translation needs a paid plan. Segments and subtitle files stay in the original language.
  • Transcripts reproduce what people say. Copyright and privacy law, such as PIPL in China and GDPR in Europe, apply to how you use them.

What it costs

We read the Actor's pricing on Apify on November 4, 2026. It is the same on every Apify plan: $0.001 per transcript ($1.00 per 1,000), plus $0.01 per started minute of speech, plus a start fee of $0.003 per run at the default memory. The English translation is an option at $0.03 per started minute, charged only when the translation is complete. A one-minute video costs $0.011, or $0.041 with the translation, and 1,000 one-minute videos cost $11.00 plus the start fee.

The run above cost $0.096: $0.003 for the start, $0.003 for 3 transcripts, $0.030 for 3 started minutes of speech and $0.060 for 2 started minutes of translation. Without the translation it would have cost $0.036. Videos without speech, photo posts, deleted and private videos, errors, duplicates, and translations that were not needed or failed are not charged.

Questions

Does Douyin have an official transcript or subtitle API?

Not in the documentation we read on November 4, 2026. The OpenAPI list has no endpoint described as returning subtitles or speech, and the video endpoints it describes return titles, covers, dates and counts. For the spoken words of a public video, the Actor above transcribes the audio.

Can I list the videos of any Douyin account through the official API?

The video list works for the account that authorizes your app, because the call needs that user's access token. For other accounts, the documented routes are keyword video management, which returns public videos from the last day for keywords you were approved for, and a video search that is open on application to a test programme. Our Actor transcribes the videos you link to. It does not list an account's videos.

Do I need a Douyin account or a Chinese phone number?

No. The Actor uses no account, cookies or API key, only the video links.

Can I get the transcript in English?

Yes. Set translateToEnglish to true: the English comes in a translation field, the Chinese stays in transcript, and the translation is charged only when it is complete.

Run it on the Apify Store

Transcripts cost $1.00 per 1,000 on every Apify plan, plus $0.01 per started minute of speech and $0.003 per run; the English translation is optional, at $0.03 per started minute. Videos without speech and errors are not charged, and you can set a maximum cost per run.