# Tiktok Transcript Scraper/Downloader (`scraper-mind/tiktok-transcript-scraper`) Actor

Extract TikTok video transcripts, captions, and metadata fast with our TikTok Transcript Scraper. Supports batch processing, proxy fallback, and JSON export. Ideal for creators, researchers, and marketers. Just $5 per run—accurate, scalable, and reliable!

- **URL**: https://apify.com/scraper-mind/tiktok-transcript-scraper.md
- **Developed by:** [Scraper Mind](https://apify.com/scraper-mind) (community)
- **Categories:** Social media, Videos, Automation
- **Stats:** 105 total users, 2 monthly users, 100.0% runs succeeded, 4 bookmarks
- **User rating**: 1.00 out of 5 stars

## Pricing

$5.00/month + usage

To use this Actor, you pay a monthly rental fee to the developer. The rent is subtracted from your prepaid usage every month after the free trial period. You also pay for the Apify platform usage, which gets cheaper the higher Apify subscription plan you have.

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

## 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 Video Transcript Scraper 🎵

**TikTok Video Transcript Scraper**, your go-to **TikTok transcript scraper** for effortlessly pulling video transcripts, captions, and vital metadata from any public TikTok video. Ideal for content strategists, researchers, and developers, this tool streamlines **TikTok data extraction** with speed and accuracy.

***

**Why Choose TikTok Video Transcript Scraper?**

| Feature                           | Benefit                                        |
| :-------------------------------- | :--------------------------------------------- |
| ✅ **Only $5** | More affordable than competitors          |
| ✅ **Batch Video Processing** | Scrape multiple TikTok videos at once         |
| ✅ **High Accuracy & Proxy Fallback** | Reliable transcripts, no rate-limit interruptions |

### 🔑 Key Features

- ✅ **High Accuracy & Reliability**: Engineered for robust performance with 3 retries and automatic proxy fallbacks.
- 🌐 **Multi-Video Support**: Extract transcripts from numerous TikTok videos in a single run.
- 💸 **Affordable**: Only $5 per run—significantly cheaper than any other **TikTok transcript scraper** on the market.
- 🛡️ **Smart Proxy Integration**: Seamlessly switches between datacenter proxies and residential fallback when TikTok blocks requests.
- ⚡ **Fast & Scalable**: Processes videos efficiently with intelligent delays to avoid detection and ensure success.
- 📊 **Structured Output**: Export comprehensive transcript data as JSON or push directly to an Apify dataset with real-time streaming.
- 🔄 **Retry Mechanism**: Up to 3 attempts per video with exponential backoff for maximum data retrieval success.

***

### 📝 Input

The TikTok video transcript scraper accepts a JSON input file (`input.json`) with the following structure:

```json
{
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "startUrls": [
    { "url": "https://www.tiktok.com/@david.webdeveloper/video/7506519006854253847" },
    { "url": "https://www.tiktok.com/@user/video/1234567890123456789" }
  ]
}
```

| Key                  | Type    | Description                                                                                                                                              |
| :------------------- | :------ | :------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `proxyConfiguration` | object  | Proxy settings. **If `useApifyProxy` is `false`, it will automatically default to datacenter and then residential proxy as a fallback.** |
| `useApifyProxy`      | boolean | `true` to enable Apify proxy (recommended to handle TikTok's anti-scraping measures); `false` for automatic proxy handling (datacenter then residential). |
| `apifyProxyGroups`   | array   | *(Optional, only if `useApifyProxy` is `true`)* Specify preferred proxy groups, e.g., `["RESIDENTIAL"]` or `["DATACENTER"]`.                             |
| `startUrls`          | array   | A list of public TikTok video URLs to extract transcripts from.                                                                                          |
| `url`                | string  | The full TikTok video URL (e.g., `https://www.tiktok.com/@username/video/1234567890123456789`).                                                         |

***

### 📦 Output

Upon successful execution, the scraper will produce an array of JSON objects, each containing detailed transcript data and video metadata:

```json
[
  {
    "url": "https://www.tiktok.com/@david.webdeveloper/video/7506519006854253847",
    "id": "7506519006854253847",
    "description": "Learn to code web apps fast!",
    "created_time": 1715497200,
    "transcript": [
      {
        "start": "00:00:01",
        "end_time": "00:00:04",
        "text": "Welcome to my quick tutorial on web development."
      },
      {
        "start": "00:00:05",
        "end_time": "00:00:08",
        "text": "Today, we're building a simple app in minutes."
      }
    ],
    "video_height": 1920,
    "video_width": 1080,
    "video_duration": 15,
    "cover_url": "https://p16-sign-va.tiktokcdn.com/obj/tiktok-obj/...",
    "video_download_url": "https://v16-web.tiktokcdn.com/...",
    "stats_play": {
      "play_count": 12345,
      "digg_count": 678,
      "comment_count": 45,
      "share_count": 23,
      "download_count": 12
    },
    "authorStats": {
      "follower_count": 50000,
      "heart_count": 100000,
      "video_count": 150
    }
  }
]
```

| Key                  | Type    | Description                                                                                                                                                                                                                            |
| :------------------- | :------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `url`                | string  | The original TikTok video URL.                                                                                                                                                                                                         |
| `id`                 | string  | The unique TikTok video ID.                                                                                                                                                                                                            |
| `description`        | string  | The video's description or caption.                                                                                                                                                                                                    |
| `created_time`       | number  | Unix timestamp indicating when the video was created.                                                                                                                                                                                  |
| `transcript`         | array   | An array of objects, each containing `start` time (`HH:MM:SS`), `end_time` (`HH:MM:SS`), and `text` for each segment of the video transcript.                                                                                        |
| `video_height`       | number  | The height of the video in pixels.                                                                                                                                                                                                     |
| `video_width`        | number  | The width of the video in pixels.                                                                                                                                                                                                      |
| `video_duration`     | number  | The duration of the video in seconds.                                                                                                                                                                                                  |
| `cover_url`          | string  | URL to the video's cover image.                                                                                                                                                                                                        |
| `video_download_url` | string  | Direct URL to download the video.                                                                                                                                                                                                      |
| `stats_play`         | object  | An object containing various statistics for the video, such as `play_count`, `digg_count` (likes), `comment_count`, `share_count`, and `download_count`.                                                                              |
| `authorStats`        | object  | An object containing statistics for the video's author (TikTok user), such as `follower_count`, `heart_count` (total likes across all videos), and `video_count`.                                                                    |

***

### 🚀 How to Use the TikTok Video Transcript Scraper (via Apify Console)

1. **Open Apify Console**: Log in at <https://console.apify.com> and navigate to the **Actors** tab.
2. **Find Your Actor**: Search for **tiktok-video-transcript-scraper** and click its card to view details.
3. **Configure Input**: In the **INPUT** section, utilize the intuitive built-in form:
   - For **Proxy configuration**, either enable "Use Apify Proxy" and select preferred groups (e.g., "RESIDENTIAL"), or leave it unchecked for automatic fallback between datacenter and residential proxies.
   - Add one or more TikTok video URLs in the **TikTok Video URLs** list.
4. **Run the Actor**: Click the **Run** button located in the top-right corner to initiate the TikTok transcript extraction.
5. **Monitor Progress**: Observe real-time logs in the **Run** panel to track the extraction status, retries, and proxy fallbacks.
6. **Access Results**: Once the run is complete, switch to the **OUTPUT** tab and open the **TikTok Video Transcript Data** dataset.
7. **Export Data**: Filter, preview, and effortlessly export your scraped TikTok transcripts to JSON or CSV format.

That's all it takes! Leverage the user-friendly Apify interface—no coding required—to start extracting TikTok video transcripts in minutes.

***

### 🎯 Advanced Features

#### Smart Proxy Management

- **Intelligent Proxy Selection**: Automatically starts with datacenter proxies or user-selected proxy groups.
- **Automatic Fallback**: Seamlessly switches to residential proxies if TikTok blocks requests from datacenter IPs.
- **Dynamic Proxy Rotation**: Each video processing attempt can utilize a new proxy session to minimize rate limits and blocks.

#### Robust Error Handling

- **3 Retry Attempts**: Each video data fetch gets up to 3 extraction attempts with exponential backoff.
- **TikTok Block Detection**: Automatically identifies when TikTok rejects requests (e.g., non-200 responses, empty data for subtitles).
- **Real-time Streaming**: Results for each video are saved immediately to the dataset as they are processed, ensuring data retention even if the Actor is interrupted.

#### Intelligent Rate Limiting

- **Adaptive Delays**: Processes videos sequentially with calculated delays between requests to mimic human behavior and avoid detection.
- **Timeout Handling**: Includes a 30-second timeout per video request with graceful failure handling.

***

### 💡 Best Use Cases for TikTok Video Transcript Scraper

- **Content Analysis**: Analyze viral TikTok trends, popular narratives, and user-generated content at scale.
- **Accessibility Improvement**: Extract transcripts to make TikTok video content accessible to a wider audience.
- **SEO & Discoverability**: Use **TikTok video transcripts** to uncover trending keywords and optimize content for search engines.
- **Market Research**: Gain insights into competitor strategies, product mentions, and consumer sentiment on TikTok.
- **Content Repurposing**: Transform video content into blog posts, articles, social media captions, or scripts for other platforms.
- **Academic & Social Research**: Collect and analyze data from educational, news, or informational TikTok videos for studies.
- **Brand Monitoring**: Track mentions of your brand, products, or relevant keywords within TikTok video content.
- **Translation Services**: Utilize extracted transcripts as source material for translating TikTok content into multiple languages.

***

### 🛠️ Support & Feedback

We're dedicated to helping you maximize the utility of the **TikTok Video Transcript Scraper**! For any questions or feedback, please feel free to:

- 🐞 **Open an issue** on the repository
- 📩 **Email us** at <scrapermindapi@gmail.com>

# Actor input Schema

## `startUrls` (type: `array`):

Enter one or more TikTok video URLs (e.g., https://www.tiktok.com/@david.webdeveloper/video/7506519006854253847).

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

Select proxies to be used by the scraper. If the selected proxy is rejected by TikTok, a residential proxy will be used as a fallback.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.tiktok.com/@david.webdeveloper/video/7506519006854253847"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

Records produced by Tiktok Transcript Scraper/Downloader, stored in the run's default dataset.

# 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 = {
    "startUrls": [
        {
            "url": "https://www.tiktok.com/@david.webdeveloper/video/7506519006854253847"
        }
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scraper-mind/tiktok-transcript-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 = {
    "startUrls": [{ "url": "https://www.tiktok.com/@david.webdeveloper/video/7506519006854253847" }],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("scraper-mind/tiktok-transcript-scraper").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 '{
  "startUrls": [
    {
      "url": "https://www.tiktok.com/@david.webdeveloper/video/7506519006854253847"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call scraper-mind/tiktok-transcript-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scraper-mind/tiktok-transcript-scraper"
        }
    }
}

```

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/BZI9oVcChLy3uZ6t4/builds/V81qZNBK0e3CMUkIt/openapi.json
