# TikTok Transcript & Subtitle Extractor - AI to Text/SRT (`zaver.api/tiktok-transcript-subtitle-extractor`) Actor

Transcribe TikTok videos to text with AI and export subtitles in bulk - no login. Get accurate speech-to-text with language detection, timestamps, SRT/WebVTT subtitle files, and each video's caption, views, likes and sound. Optional AI summary. Export to CSV, JSON or Excel.

- **URL**: https://apify.com/zaver.api/tiktok-transcript-subtitle-extractor.md
- **Developed by:** [Zaver](https://apify.com/zaver.api) (community)
- **Categories:** Social media, AI
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $23.00 / 1,000 video transcribeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## TikTok Transcript & Subtitle Extractor — AI Video to Text/SRT 🎙️

Turn any **TikTok video into an accurate text transcript** with AI and **export subtitles from TikTok videos in bulk** — **no login, no cookies, no API key to manage**. Paste one video URL or a bulk list and get **AI speech-to-text** with **automatic language detection**, ready-to-use **SRT + WebVTT subtitle files**, and each video's **caption, views, likes, sound and creator** — plus an optional **AI summary and keywords**. Export to **CSV, Excel, JSON or XML**, or pull via the **API**.

TikTok has no downloadable transcript, so this actually converts the audio to text for you — the fast, reliable way to **transcribe TikTok videos** at scale.

- 🎯 **AI transcription** powered by OpenAI Whisper — state-of-the-art **video-to-text** accuracy
- 💬 **Bulk subtitle export** — ready-to-use **SRT and WebVTT** files per video
- 🌍 **Automatic language detection** across 90+ languages
- ⏱️ **Timestamped segments** for subtitles, clipping and edit points
- 📊 **Rich metadata** — caption, views, likes, shares, saves, sound, creator
- 🧠 **Optional AI summary & keywords** per video
- 📥 **Bulk** — many TikTok video URLs in one run
- 🔓 **No login, no cookies** — public videos, transcribed anonymously

***

### What data do you get? (output fields)

One row per video:

| Field | Description |
|---|---|
| `transcript` | Full **AI speech-to-text** transcript |
| `language` | Auto-detected language |
| `srt` / `vtt` | Ready-to-use subtitle files (optional) |
| `segments` | Timestamped segments (optional) |
| `summary` / `keywords` | AI summary + keywords (optional) |
| `caption` | Video caption |
| `views` / `likes` / `comments` / `shares` / `saves` | Engagement metrics |
| `duration_seconds` | Video length |
| `music` | Sound used |
| `username` / `nickname` | Creator |
| `url` / `video_id` / `cover_url` | Video identifiers |

### Key features

- **AI-powered transcription** — TikTok video audio converted to text with OpenAI Whisper.
- **Bulk subtitle export (SRT + WebVTT)** — generate `.srt` and `.vtt` subtitle files for every video in one run, straight into editors, YouTube or players.
- **Automatic language detection** — transcribes in the video's own language; pass a hint to fine-tune.
- **AI summary & keywords** — a concise summary and keyword list per video (optional).
- **Full engagement context** — every transcript ships with views, likes, shares, saves, sound and creator.
- **Bulk & API-first** — paste many URLs, run on a schedule, or call from the API/SDK. No account, no browser automation.

### How to transcribe a TikTok video (step by step)

1. Paste **TikTok video URLs** (`https://www.tiktok.com/@user/video/ID`), one per line.
2. *(Optional)* enable **Export subtitles (SRT + WebVTT)**, **AI summary**, and/or **timestamped segments**; add a **language hint** if you like.
3. Click **Start**, then download from the **Dataset** tab as **CSV, Excel, JSON or XML** — or read via the API.

#### Example input

```json
{
  "videoUrls": [
    "https://www.tiktok.com/@nasa/video/7665075736742530317"
  ],
  "includeSrt": true,
  "includeSummary": true
}
```

#### Example output

```json
{
  "url": "https://www.tiktok.com/@nasa/video/7665075736742530317",
  "username": "nasa",
  "caption": "Something big just landed on TikTok.",
  "transcript": "Something big just landed on TikTok...",
  "language": "english",
  "duration_seconds": 25,
  "views": 1200000,
  "likes": 48000,
  "srt": "1\n00:00:00,000 --> 00:00:02,500\nSomething big just landed on TikTok...",
  "summary": "NASA's debut on TikTok.",
  "keywords": ["nasa", "space", "launch"],
  "status": "ok"
}
```

#### Run it via the Apify API

```bash
curl "https://api.apify.com/v2/acts/YOUR~ACTOR/runs?token=YOUR_TOKEN" \
  -X POST -H "Content-Type: application/json" \
  -d '{"videoUrls": ["https://www.tiktok.com/@user/video/123"], "includeSrt": true}'
```

Works with the **Apify MCP server, CLI, JavaScript & Python SDKs, REST API**, scheduled runs, webhooks, and integrations for **Make, Zapier, n8n and Google Sheets**.

### Use cases

- **Content repurposing** — turn TikToks into blog posts, newsletters, threads and scripts from the transcript.
- **Subtitles & captions** — bulk-export SRT/WebVTT for captioning and accessibility.
- **Content research & analysis** — correlate what creators *say* with views and likes to find what works.
- **Competitive intelligence** — transcribe competitors' videos to analyze hooks, offers and messaging.
- **Trend monitoring** — track how talking points evolve across creators.
- **SEO & search** — make TikTok audio searchable and mineable for keywords.

### Pricing — pay only for results

| Result type | Price |
|---|---|
| Video transcribed (includes the first minute) | **$0.023 per video** ($23 / 1,000) |
| Each additional audio-minute | **$0.018 per minute** ($18 / 1,000) |
| Subtitle export — SRT + WebVTT (optional) | **$0.005 per video** ($5 / 1,000) |
| AI summary & keywords (optional) | **$0.006 per video** ($6 / 1,000) |

**Length-based pricing:** most TikToks are under a minute and cost just the base $0.023. Longer videos add $0.018 per extra audio-minute — so a 30-second clip is $0.023, a 3-minute video is $0.023 + 2×$0.018 = $0.059, and a 10-minute video scales accordingly. This keeps the price fair and proportional to the work. Failed, private or non-video posts return an error row and cost **nothing**.

### Frequently asked questions

#### How do I transcribe a TikTok video?

Paste the video URL into this actor and run it. It resolves the video, runs AI speech-to-text, and returns the transcript with metadata — no login or manual downloading.

#### Can I export subtitles (SRT) from TikTok in bulk?

Yes. Turn on **Export subtitles** and each video returns ready-to-use **SRT and WebVTT** files — ideal for bulk captioning, editing and accessibility. Billed per video exported.

#### Does TikTok have a built-in transcript I can download?

No. TikTok shows auto-captions on-screen for some videos but doesn't give you a downloadable transcript. This actor generates it from the audio with AI.

#### What languages does it support?

Whisper auto-detects and transcribes 90+ languages; pass a language hint (e.g. `en`, `es`, `id`) to improve accuracy.

#### How long does a video take?

Roughly 15–25 seconds per video end-to-end (resolve → download → transcribe), depending on length.

#### Is this legal?

The actor processes only **publicly available** videos. You are responsible for using transcripts in compliance with the laws that apply to you (including GDPR/CCPA) and TikTok's terms, and for respecting creators' rights.

### Support & roadmap

Found a bug or want a feature? Open an issue on the actor's **Issues** tab. On the roadmap: **transcript translation**, **whole-profile transcription**, and **music/sound download**. Companion actor: **Instagram Reel Transcript Extractor**.

# Actor input Schema

## `videoUrls` (type: `array`):

URLs of the TikTok videos to transcribe. One per line, e.g. <code>https://www.tiktok.com/@user/video/1234567890</code> or a <code>vm.tiktok.com</code> short link.

## `includeSrt` (type: `boolean`):

Generate ready-to-use subtitle files - an <code>srt</code> and <code>vtt</code> string per video - for captioning and video editing. Billed per video exported (see pricing).

## `includeSummary` (type: `boolean`):

Generate a short AI summary and keywords from each transcript. Billed per summary (see pricing).

## `includeTimestamps` (type: `boolean`):

Return the transcript broken into timestamped segments, not just the full text.

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

ISO code (e.g. <code>en</code>, <code>es</code>, <code>id</code>) to hint the transcriber. Leave empty to auto-detect.

## Actor input object example

```json
{
  "videoUrls": [
    "https://www.tiktok.com/@nasa/video/7665075736742530317"
  ],
  "includeSrt": false,
  "includeSummary": false,
  "includeTimestamps": false,
  "language": ""
}
```

# Actor output Schema

## `results` (type: `string`):

One dataset item per video, with transcript, subtitles, language, metadata and optional summary.

## `resultsCsv` (type: `string`):

The same records as a CSV download.

## `runSummary` (type: `string`):

Counts: videos transcribed, subtitles, summaries, audio minutes, errors.

# 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 = {
    "videoUrls": [
        "https://www.tiktok.com/@nasa/video/7665075736742530317"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("zaver.api/tiktok-transcript-subtitle-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 = { "videoUrls": ["https://www.tiktok.com/@nasa/video/7665075736742530317"] }

# Run the Actor and wait for it to finish
run = client.actor("zaver.api/tiktok-transcript-subtitle-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 '{
  "videoUrls": [
    "https://www.tiktok.com/@nasa/video/7665075736742530317"
  ]
}' |
apify call zaver.api/tiktok-transcript-subtitle-extractor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,zaver.api/tiktok-transcript-subtitle-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/nTb5f8oe3GBh37FJd/builds/aY9JaYyRB3ac9bg5g/openapi.json
