# Douyin AI Transcript Extractor — Video to Text (`sian.agency/douyin-ai-transcript-extractor`) Actor

Douyin video transcript extractor with word-level timestamps, SRT and WebVTT, one-click English translation, engagement and creator stats. Address by single or bulk URLs. Cheapest per-video rate on Apify.

- **URL**: https://apify.com/sian.agency/douyin-ai-transcript-extractor.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** Social media, Videos, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $14.00 / 1,000 transcribed videos

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Douyin Transcript Extractor — Video to Text 🚀

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Douyin Scraper](https://img.shields.io/badge/Store-Douyin%20Scraper-161823)](https://apify.com/sian.agency/douyin-scraper?fpr=sian) [![Xingtu KOL](https://img.shields.io/badge/Store-Douyin%20Xingtu%20KOL-161823)](https://apify.com/sian.agency/douyin-xingtu-kol-analytics?fpr=sian) [![TikTok Transcript](https://img.shields.io/badge/Store-TikTok%20Transcript-25F4EE)](https://apify.com/sian.agency/best-tiktok-ai-transcript-extractor?fpr=sian)

#### 🎉 Spoken Douyin video, one clean row

##### Transcript, SRT, views and creator stats for China short-video teams

### 🔍 What is the Douyin AI Transcript Extractor — and when should you use it?

The **Douyin AI Transcript Extractor** turns a public Douyin video URL into spoken text plus the metadata around it. No Douyin login. No key to paste.

**Use it when you need:** transcripts, SRT/VTT captions, views, likes, hashtags and creator stats from Douyin videos.

**Use something else when:** you want video lists, profiles or search without speech. Use [Douyin Scraper](https://apify.com/sian.agency/douyin-scraper?fpr=sian) for that.

### 🤖 Use with AI agents

Already connected to the [Apify MCP server](https://mcp.apify.com)? Ask for this Actor by name: sian.agency/douyin-ai-transcript-extractor

Otherwise copy this prompt into Claude, ChatGPT, Cursor or any MCP-enabled assistant:

```text
I want transcripts from Douyin videos using the Apify Actor sian.agency/douyin-ai-transcript-extractor.

Use it when I need: spoken text, SRT/VTT, views, likes and creator stats from Douyin.

Don't use it when: I only need video lists or profiles — use Douyin Scraper instead.

How to call it: pass douyinUrl for one video, or bulkUrls for many.

Start with this input:
{
  "douyinUrl": "https://www.douyin.com/video/7615930241370348219"
}

Ask me for the Douyin URLs, then run the Actor and summarise the transcripts as a table.
```

**Things you can ask your agent for:**

- *Transcribe these five Douyin ads and list the spoken hooks*
- *Pull SRT from this food video and keep the view count*
- *Skip slideshows and transcribe only talking videos from this list*

Machine-readable API, MCP config and OpenAPI definition for this Actor are published at [apify.com/sian.agency/douyin-ai-transcript-extractor.md](https://apify.com/sian.agency/douyin-ai-transcript-extractor.md).

***

### 📋 Overview

**Paste a Douyin link. Get the words that were said, plus the numbers around the post.**

**Why teams pick it:**

- ✅ **Transcript + metadata**: one row, not two tools
- ⚡ **Bulk URLs**: list or text file
- 🎯 **SRT and WebVTT**: ready for editors
- 💰 **Pay per transcript**: failures are free
- 💎 **Format skip**: drop slideshows and live replays
- ✨ **Comments add-on**: pinned recipes and SKUs on the same row
- 🌍 **English translation**: one click, 100+ languages, keeps timestamps exact

***

### ✨ Features

- 🎬 **Public video URLs**: full links and v.douyin.com shorts
- 🤖 **Speech to text**: word-level timestamps
- 📜 **Subtitles**: SRT and WebVTT
- 📊 **Engagement**: views, likes, comments, shares, collects
- 👤 **Creator fields**: name, followers, verified flag
- 🚫 **Format filter**: skip slideshow, live, note
- 💬 **Optional comments**: paid add-on
- 🌍 **Translation add-on**: Mandarin to English (or 100+ languages) on the same row
- 📁 **Export**: JSON, CSV, Excel from the dataset

***

### 🎬 Quick Start

Add a Douyin video URL. Run the Actor. Open the dataset.

```bash
curl -X POST https://api.apify.com/v2/acts/sian.agency~douyin-ai-transcript-extractor/runs?token=[YOUR_TOKEN] \
-d '{"douyinUrl": "https://www.douyin.com/video/7615930241370348219"}'
```

***

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Open the Actor

Find [Douyin AI Transcript Extractor](https://apify.com/sian.agency/douyin-ai-transcript-extractor?fpr=sian) on the Apify Store.

#### Step 2: Paste a URL

Use a public `douyin.com/video/{id}` link or a `v.douyin.com` short link.

#### Step 3: Run

Wait for the dataset. Open the HTML report if you want a recap.

**That's it. In about a minute you will have:**

- The spoken transcript (and an English version if you ticked Translate)
- SRT / VTT
- Views, likes and creator stats

***

### 📥 Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| douyinUrl | string | No | One Douyin video URL |
| bulkUrls | array | No | Many URLs, or a text file |
| skipFormats | array | No | Skip slideshow, live, note |
| includeComments | boolean | No | Paid comment add-on |
| speakerLabels | boolean | No | Split speakers |
| language | string | No | Optional spoken-language hint |
| translateTo | string | No | Paid add-on — translate transcript (e.g. EN-US) |

**Example:**

```json
{
  "douyinUrl": "https://www.douyin.com/video/7615930241370348219"
}
```

**Bulk:**

```json
{
  "bulkUrls": [
    { "url": "https://www.douyin.com/video/7615930241370348219" },
    { "url": "https://www.douyin.com/video/7672566979131910587" }
  ]
}
```

***

### 📤 Output

Results land in the default dataset. Useful fields:

| Field | Type | Description |
|-------|------|-------------|
| transcript | string | Spoken text |
| detected\_language | string | Audio language |
| srtSubtitles | string | SRT file |
| viewsCount | number | Plays |
| likesCount | number | Likes |
| authorUsername | string | Creator id |
| douyinUrl | string | Video page |
| postFormat | string | video / slideshow / live / note |
| status | string | success or error |

***

### 💼 Use Cases & Examples

#### 1. Campaign script mining

**A brand team wants the spoken hook, not only the on-screen caption.**

**Input:** five competitor video URLs
**Output:** transcripts plus view counts
**Use:** brief the next shoot

#### 2. KOL checks

**An agency vets a creator before booking.**

**Input:** the creator’s last talking videos
**Output:** what they claimed on camera, next to followers
**Use:** reject empty talking-head KOLs

#### 3. Subtitle export

**An editor needs captions tonight.**

**Input:** one food video
**Output:** SRT / VTT
**Use:** burn captions or cut clips

#### 4. Message tracking

**A researcher watches how a brand’s spoken offer changes.**

**Input:** a weekly bulk list
**Output:** searchable text
**Use:** flag price or claim changes

#### 5. Pinned-comment recipes

**The real method sits under the video.**

**Input:** URL + includeComments
**Output:** transcript and pinned comments together
**Use:** rebuild the recipe without watching

***

### 🔗 Integration Examples

#### JavaScript/Node.js

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });

const run = await client.actor('sian.agency/douyin-ai-transcript-extractor').call({
  douyinUrl: 'https://www.douyin.com/video/7615930241370348219'
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0].transcript);
```

#### Python

```python
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')

run = client.actor('sian.agency/douyin-ai-transcript-extractor').call(
    run_input={'douyinUrl': 'https://www.douyin.com/video/7615930241370348219'}
)

for item in client.dataset(run['defaultDatasetId']).iterate_items():
    print(item.get('transcript'))
```

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~douyin-ai-transcript-extractor/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"douyinUrl": "https://www.douyin.com/video/7615930241370348219"}'
```

#### Automation workflows

1. **Trigger**: schedule or webhook
2. **HTTP Request**: call the Actor
3. **Process**: read JSON rows
4. **Action**: store, notify, or translate

***

### 📊 Performance & Pricing

#### FREE plan

- **5 videos** per run — same transcript quality
- No credit card
- Good for a first test

#### Paid plan

- **No per-run URL cap**
- Translation + comment add-ons
- Pay per successful transcript

| Event | Paid price |
|---|---|
| Transcribed video (transcript + SRT/VTT + metadata) | **$0.007** |
| Translation per 1,000 characters | **$0.010** |
| Returned comment | **$0.002** |
| Actor start | **$0.005** |

A typical sub-minute Douyin video costs **$0.007 all-in** — cheaper than per-minute metered rivals once a video passes 60 seconds, and the row already carries views, likes, creator stats and subtitles they charge extra for (or skip).

💰 **You are not billed for videos with no speech.**

🔗 [View current pricing](https://apify.com/sian.agency/douyin-ai-transcript-extractor?fpr=sian)

***

### ❓ Frequently Asked Questions

**Q: How many videos can I process?**
A: FREE plan: 5 per run. Paid plan: no per-run cap.

**Q: How do I get an English transcript of a Douyin video?**
A: Paste the URL, set **Translate transcript to** → `EN-US`, run. You get `translatedTranscript` alongside the original Chinese transcript, SRT and timestamps — timing stays exact because only the text is translated. Charged per 1,000 characters (~1-2 units for a 60-second video).

**Q: Does it work with private accounts?**
A: No. Only public videos.

**Q: What can I export?**
A: JSON, CSV and Excel from the dataset. SRT and VTT sit in their own fields.

**Q: How accurate is the transcript?**
A: Accuracy follows the audio. Loud music and heavy dialect lower it.

**Q: Is this legal?**
A: We only read public pages. See the legal section. Ask counsel if you are unsure.

**Q: How long does one video take?**
A: Usually under a minute for a short clip. Long videos take longer.

***

### 🐛 Troubleshooting

**Empty transcript**

- The post may be a slideshow or silent clip
- Confirm it plays with sound in a private window

**Invalid URL**

- Use `https://www.douyin.com/video/{id}`
- Short `v.douyin.com` links are fine

**Run stopped on free API**

- Open the Actor in the Apify Console, or upgrade to a paid plan

***

### ⚖️ Is it legal to scrape data?

Our actors do not extract private user data such as emails. They only extract what the user chose to share publicly. Used ethically, they are safe.

Results can still contain personal data. Personal data is protected by the **GDPR** in the EU and by other laws. Do not scrape personal data unless you have a legitimate reason. If you are unsure, ask a lawyer.

You can also read Apify's post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

***

### ⚠️ Trademark Disclaimer

Douyin and 抖音 are trademarks of their respective owners. This Actor is not affiliated with, endorsed by, or sponsored by ByteDance or Douyin. It only reads publicly available pages.

***

### 🤝 Support

**Join the support group**

- Open an issue on the Actor page
- See more tools at [SIÁN Agency Store](https://apify.com/sian.agency?fpr=sian)
- 📧 <apify@sian-agency.online>

***

**Built by [SIÁN Agency](https://www.sian-agency.online)** | **[More Tools](https://apify.com/sian.agency?fpr=sian)**

# Changelog

This Actor's version history is a separate document: https://apify.com/sian.agency/douyin-ai-transcript-extractor/changelog.md

# Actor input Schema

## `douyinUrl` (type: `string`):

🎬 **SINGLE VIDEO:** Paste one public Douyin video URL. Short v.douyin.com links are resolved automatically.

✅ **Supported:**

- https://www.douyin.com/video/{id}
- https://www.douyin.com/note/{id}
- https://www.iesdouyin.com/share/video/{id}
- https://v.douyin.com/{code}/

💡 **TIP:** Use bulk mode for more than one video.

⚠️ **Not supported:** private accounts, live rooms, user profile URLs.

## `bulkUrls` (type: `array`):

📋 **BULK PROCESSING:** Many Douyin videos in one run.

- FREE plan: up to 5 videos per run
- Paid plan: no per-run URL cap

💡 **TIP:** Paste one URL per line, or upload a .txt file.

## `skipFormats` (type: `array`):

🚫 Skip post types that usually have no speech. Slideshows and live replays often waste a run. Leave empty to process every public video.

## `includeComments` (type: `boolean`):

💬 Pull pinned and top comments onto the same row as the transcript. Creators often hide recipes, SKUs or links in a pinned comment. Charged only when comments are returned.

## `speakerLabels` (type: `boolean`):

🗣️ Split the transcript by speaker when more than one person talks. Leave off for a single narrator — that path is faster and cheaper.

## `language` (type: `string`):

🌐 Optional ISO code such as zh or en. Leave empty to auto-detect. Most Douyin speech is Mandarin.

## `translateTo` (type: `string`):

🔒 **Paid plans only** — free-tier runs return the original language, uncharged.

🌍 Translates the transcript into **100+ languages** (EN-US is the one most teams pick for Mandarin videos). Context-aware AI reads the whole transcript, so slang, idiom and tone survive — better than word-by-word. Source language auto-detected.

💰 **Charged per 1,000 transcript characters** (a typical 60-second Douyin video ≈ 1-2 units).

📊 Adds `translatedTranscript`; `transcript`, `segments`, `words` and timestamps stay in the source language, so timing stays exact. Works in bulk runs too.

## Actor input object example

```json
{
  "douyinUrl": "https://www.douyin.com/video/7672566979131910587",
  "skipFormats": [],
  "includeComments": false,
  "speakerLabels": false,
  "language": ""
}
```

# Actor output Schema

## `douyinTranscripts` (type: `string`):

Dataset of transcripts, translated transcripts, subtitles and engagement fields per Douyin video

## `scrapingSummary` (type: `string`):

HTML summary of transcribed videos, failures and charges

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "douyinUrl": "https://www.douyin.com/video/7672566979131910587",
    "skipFormats": [],
    "language": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/douyin-ai-transcript-extractor").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "douyinUrl": "https://www.douyin.com/video/7672566979131910587",
    "skipFormats": [],
    "language": "",
}

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/douyin-ai-transcript-extractor").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "douyinUrl": "https://www.douyin.com/video/7672566979131910587",
  "skipFormats": [],
  "language": ""
}' |
apify call sian.agency/douyin-ai-transcript-extractor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,sian.agency/douyin-ai-transcript-extractor"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/5F6qoJGJNP47EZGL4/builds/HkHuDMhrs87cmWyw5/openapi.json
