# 🎬 Best TikTok Transcripts Scraper (`scraper-engine/best-tiktok-transcripts-scraper`) Actor

🎬 Best TikTok Transcripts Scraper extracts accurate captions & transcripts fast. 🚀 Perfect for creators, researchers & marketers—turn videos into searchable text for analytics, SEO content, and insights. 📈 Save time, boost productivity!

- **URL**: https://apify.com/scraper-engine/best-tiktok-transcripts-scraper.md
- **Developed by:** [Scraper Engine](https://apify.com/scraper-engine) (community)
- **Categories:** Social media, SEO tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.99 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#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

## 🎬 Best TikTok Transcripts Scraper

Extract the **spoken transcript** of any public TikTok video — just paste the URL. Built for content analysts, AI/LLM data pipelines, subtitle extraction, and trend research. No paid third-party API, no login, no fuss. ⚡

### ❓ Why Choose Us?

- 🆓 **Direct scrape** — reads TikTok's own embedded caption track, so there are no third-party credit walls.
- 🛡️ **Smart proxy ladder** — starts with **no proxy**, then auto-escalates **Datacenter → Residential** only if TikTok blocks, and sticks with the working tier for the rest of the run.
- 📝 **Two output styles** — clean flattened text by default, or full **WEBVTT with timestamps** on demand.
- 💾 **Live results** — every transcript is saved the moment it's ready, so a long run never loses work.
- 📊 **Tidy output table** — results render in clean, sectioned views right in the Apify Console.

### ✨ Key Features

- 🎥 Bulk input — scrape many videos in one run
- 🌍 Language preference ordering for multi-caption videos
- 🤖 Optional preference for auto-generated (ASR) captions
- 🔁 Automatic retries with exponential backoff
- 📈 Real-time, emoji-rich progress logs

### 📥 Input

| Field | Type | Description |
|-------|------|-------------|
| `videos` | array | **Required.** TikTok video URLs (bulk supported). |
| `rawTranscript` | boolean | Keep full WEBVTT with timestamps. Default `false` (flattened text). |
| `preferredLanguages` | array | Ordered caption-language preference. Default `["eng-US","eng","en"]`. |
| `preferAutoCaptions` | boolean | Prefer ASR captions when multiple exist. Default `true`. |
| `requestDelay` | number | Seconds between videos. Default `1.5`. |
| `maxRetries` | integer | Retries per video for recoverable errors. Default `3`. |
| `proxyConfiguration` | object | Optional. Forces a starting proxy tier; otherwise starts direct. |

```json
{
  "videos": [
    "https://www.tiktok.com/@stoolpresidente/video/7488736374602927402"
  ],
  "rawTranscript": false,
  "proxyConfiguration": { "useApifyProxy": false }
}
```

### 📤 Output

Each video produces one record:

```json
{
  "success": true,
  "credits_remaining": null,
  "id": "7488736374602927402",
  "url": "https://www.tiktok.com/@stoolpresidente/video/7488736374602927402",
  "transcript": "Bagels to make him dance. Bagels to make him dance. Bagels to make him dance."
}
```

| Field | Description |
|-------|-------------|
| `success` | Whether a transcript was retrieved. |
| `credits_remaining` | Always `null` — this is a free direct scrape, not a credited API. |
| `id` | Numeric TikTok video ID. |
| `url` | The video URL you submitted. |
| `transcript` | Flattened text (default) or raw WEBVTT (if `rawTranscript` is on). `null` on failure. |
| `error` | Reason for failure (present only when `success` is `false`). |

### 🚀 How to Use (Apify Console)

1. Log in at [console.apify.com](https://console.apify.com) → **Actors**.
2. Open **Best TikTok Transcripts Scraper**.
3. Paste your TikTok video URLs into **🎥 TikTok Video URLs**.
4. (Optional) Toggle raw WEBVTT, languages, or proxy.
5. Click **Start** and watch the live logs. ▶️
6. Open the **Output** tab — export to JSON / CSV / XLSX.

### 🤖 Use via API

```bash
curl -X POST "https://api.apify.com/v2/acts/<ACTOR_ID>/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{"videos":["https://www.tiktok.com/@stoolpresidente/video/7488736374602927402"]}'
```

### 🎯 Best Use Cases

- 📊 Content & sentiment analysis at scale
- 🧠 Feeding clean text into LLM / RAG pipelines
- 🔎 Trend and hook research across creators
- 📝 Subtitle / caption extraction

### 💳 Pricing

This Actor uses **pay-per-event**: you are billed once per **successfully scraped transcript** (the `row_result` event). Videos with no captions or that fail are pushed but **not charged**. See the Store page for the current per-event price.

### ❔ Frequently Asked Questions

**Does every TikTok have a transcript?** No — only videos with captions/subtitles (creator-added or TikTok ASR). Videos without captions return `success: false` with a clear reason.

**Do I need a proxy?** No. It runs direct by default and only escalates to Apify proxies if TikTok blocks.

**Raw timestamps or clean text?** Both — flip `rawTranscript` to choose.

### 🛟 Support and Feedback

Found a bug or want a feature? Open an issue on the Actor's **Issues** tab in the Apify Console.

> ⚖️ Data is collected only from **publicly available** TikTok pages. You are responsible for complying with TikTok's Terms, GDPR/CCPA, and applicable laws.

# Actor input Schema

## `videos` (type: `array`):

📋 Add one or more TikTok video URLs (bulk supported). Example: https://www.tiktok.com/@username/video/1234567890

## `rawTranscript` (type: `boolean`):

✨ OFF (default) returns a clean, flattened transcript line. Turn ON to keep the full WEBVTT track with timestamps.

## `preferredLanguages` (type: `array`):

🗣️ Ordered language preference for picking a caption track when several exist. Defaults to English.

## `preferAutoCaptions` (type: `boolean`):

🎙️ When multiple tracks match, prefer TikTok's automatic speech-recognition captions.

## `proxyConfiguration` (type: `object`):

🔐 Optional. Leave empty to start direct — the scraper auto-escalates Direct → Datacenter → Residential if TikTok blocks. Select a proxy here to force a starting tier.

## Actor input object example

```json
{
  "videos": [
    "https://www.tiktok.com/@stoolpresidente/video/7488736374602927402"
  ],
  "rawTranscript": false,
  "preferredLanguages": [
    "eng-US",
    "eng",
    "en"
  ],
  "preferAutoCaptions": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# 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 = {
    "videos": [
        "https://www.tiktok.com/@stoolpresidente/video/7488736374602927402"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scraper-engine/best-tiktok-transcripts-scraper").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 = {
    "videos": ["https://www.tiktok.com/@stoolpresidente/video/7488736374602927402"],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("scraper-engine/best-tiktok-transcripts-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "videos": [
    "https://www.tiktok.com/@stoolpresidente/video/7488736374602927402"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call scraper-engine/best-tiktok-transcripts-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scraper-engine/best-tiktok-transcripts-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/OyHw6GLuDlceI2c3y/builds/MVQlknZ1slNqvIUVp/openapi.json
