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

🎬 Tiktok Transcript Scraper extracts captions & full transcripts fast—ideal for creators, researchers, and marketers. 📈 Find, analyze, and repurpose trending content quickly with accurate text export. 🚀 Perfect for social listening & content strategy.

- **URL**: https://apify.com/solid-scraper/tiktok-transcript-scraper.md
- **Developed by:** [SolidScraper](https://apify.com/solid-scraper) (community)
- **Categories:** Social media, Automation, Developer tools
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.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

### Tiktok Transcript Scraper 📼

**Tiktok Transcript Scraper** is an Apify actor that helps you turn TikTok video captions into structured transcript data. If you’re looking for a *tiktok transcript scraper* or a *download tiktok transcript* workflow, this tool automates transcript extraction from TikTok video URLs and saves the results into a dataset—so you can analyze, search, and reuse video text at scale.

Whether you’re a marketer, researcher, or data analyst, a reliable *tiktok caption scraper* (including *tiktok subtitles download* style output) saves you hours of manual copy-pasting and cleanup.

***

### Why choose Tiktok Transcript Scraper?

| Feature | Benefit |
|---|---|
| ✅ **All-in-one transcript extraction** | Scrapes TikTok video transcripts and organizes them into a consistent dataset output |
| ✅ **Proxy fallback for reliability** | Uses built-in proxy support and can fall back when access is rejected |
| ✅ **Resilient retries** | Includes retries and fallbacks for resilience during scraping |
| ✅ **Structured output for captions** | Returns transcript segments with start/end timestamps and text |
| ✅ **Scales across multiple URLs** | Processes each provided video URL in a single run |
| ✅ **Dataset-ready results** | Saves output immediately so it’s easy to export for downstream analysis |

***

### Key features

- 📌 **Video URL support (batch-ready):** Accepts one or more TikTok video URLs via `startUrls`
- 🕒 **Timestamped transcript segments:** Outputs caption text split into `start`, `end_time`, and `text` (when available)
- 🛡️ **Proxy resilience & fallback:** Built-in proxy support for reliable scraping, including fallback behavior when needed
- 🔄 **Retry logic for stability:** Attempts up to **3** times per method to improve success rates
- 📊 **Rich video metadata included:** Alongside transcripts, saves fields like `video_duration`, `cover_url`, and `stats_play`
- 💾 **Immediate dataset saving:** Each successful result is pushed to the actor dataset as it’s processed
- 🧾 **Clear “no transcript” handling:** When a transcript isn’t found, the actor returns `transcript: "No Transcript Found"`

***

### Input

Provide input via an `input.json` file. Example structure:

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

#### Input Fields

| Field | Required | Description |
|---|---:|---|
| `startUrls` | ✅ | An array of TikTok video URLs to scrape. Provide one or more items shaped like `{ "url": "..." }`. |
| `proxyConfiguration` | ❌ | Proxy configuration for the scraper. If the selected proxy is rejected by TikTok, a residential proxy will be used as a fallback. |
| `proxyConfiguration • proxy support` | ❌ | Set to `true` to enable Apify Proxy; set to `false` to allow fallback behavior (default is `false`). |

***

### Output

The actor saves results to the **TikTok Video Transcript Data** dataset in JSON format—one item per processed TikTok video URL.

Example output:

```json
[
  {
    "url": "https://www.tiktok.com/@david.webdeveloper/video/7506519006854253847",
    "id": "7506519006854253847",
    "description": "Example video description text",
    "created_time": 1710000000,
    "transcript": [
      { "start": "00:00:01", "end_time": "00:00:03", "text": "First caption text" },
      { "start": "00:00:03", "end_time": "00:00:05", "text": "Second caption text" }
    ],
    "video_height": "1080",
    "video_width": "1920",
    "video_duration": "00:00:12",
    "cover_url": "https://example.com/cover.jpg",
    "video_download_url": "https://example.com/video.mp4",
    "stats_play": [123, 456],
    "authorStats": [{ "key": "followers", "value": 1000 }],
    "error_message": null
  }
]
```

#### Output Fields

| Field | Type | Description |
|---|---|---|
| `url` | string | The TikTok video URL that was scraped |
| `id` | string | TikTok video ID from the returned data |
| `description` | string | Video description (`data["desc"]`) |
| `created_time` | number | Video creation time (`data["createTime"]`) |
| `transcript` | array | string | Caption transcript segments with timestamps (or the string `No Transcript Found`) |
| `video_height` | text | Video height (`data["video"]["height"]`) |
| `video_width` | text | Video width (`data["video"]["width"]`) |
| `video_duration` | text | Video duration (`data["video"]["duration"]`) |
| `cover_url` | link | URL to the video cover (`data["video"]["cover"]`) |
| `video_download_url` | link | URL to download the video (`data["video"]["downloadAddr"]`) |
| `stats_play` | array | Play statistics from `data["statsV2"]` |
| `authorStats` | array | Author statistics from `data["authorStatsV2"]` |
| `error_message` | string | null | Present in failure-state discussions; errors are logged, and when no valid result is produced, the actor will not push a dataset item |

> Note: When subtitles are available, `transcript` is parsed into items shaped like `{ "start", "end_time", "text" }`. If no subtitles are present, `transcript` is set to `"No Transcript Found"`.

***

### How to use Tiktok Transcript Scraper (via Apify Console)

1. **Open Apify Console**\
   Log in at https://console.apify.com and open the Actors tab.

2. **Find the actor**\
   Search for **Tiktok Transcript Scraper** and open the actor page.

3. **Go to the INPUT panel**\
   Use the built-in form to add your TikTok video URLs in `startUrls`.

4. **Set proxy configuration (optional)**\
   If needed, configure `proxyConfiguration`. You can use Apify Proxy via `proxy support`, and the actor supports fallback behavior when access is rejected.

5. **Start the run**\
   Click **Run**. While it runs, watch the logs—if requests fail, retries and fallbacks help improve resilience.

6. **Review results in OUTPUT**\
   After completion, open the dataset **TikTok Video Transcript Data** and inspect the table view (including `transcript`, `video_duration`, and stats).

7. **Export your data**\
   Export the dataset for analysis and workflows (JSON/CSV export is available from the dataset UI).

No coding required — get accurate results in minutes with **Tiktok Transcript Scraper**.

***

### Advanced features & SEO optimization

- 🔍 **Engineered for transcript extraction workflows:** Perfect for *tiktok transcript scraper* and *tiktok caption scraper* use cases where you need captions as usable text (not just video pages).
- 🌐 **Batch caption downloads from URLs:** Great for *tiktok subtitle scraper* and *tiktok auto captions scraper* workflows when you have many videos to process.
- 🧠 **Timestamp-aware transcript parsing:** Helps when you want *tiktok subtitles download* outputs aligned with time-based segments.
- 🔁 **Reliability-first scraping:** Includes retries and proxy fallback to improve success rate when access conditions change.

***

### Best use cases

- 🎯 **Marketing analysts measuring messaging patterns:** Convert TikTok captions into transcripts to analyze themes and messaging across campaigns.
- 📚 **Researchers studying public content:** Scrape *tiktok video transcript extraction* outputs to perform text analysis and qualitative coding.
- 🗂️ **Content ops teams building searchable archives:** Turn captions into structured data for faster discovery and internal knowledge bases.
- 🤖 **Developers integrating transcripts into pipelines:** Use the dataset to feed a *tiktok transcript api* style workflow (without building custom scraping logic).
- 📈 **Brand monitoring & competitive intelligence:** Pull *tiktok captions to text* for videos from specific creators or topics and compare language over time.
- ✉️ **Lead generation research workflows:** Use transcript data as supporting context for outreach research (e.g., summarizing topics discussed in videos).
- 🧪 **Podcast-style repurposing and transcription QA:** Validate and reuse caption text for drafts, scripts, and *download tiktok transcript* projects.

***

### Technical specifications

- **Supported Input Formats**
  - ✅ `startUrls`: an array of objects with `url` fields for TikTok video URLs

- **Proxy Support**
  - ✅ Configurable via `proxyConfiguration`
  - ✅ Includes fallback to residential proxies if the selected proxy is rejected by TikTok

- **Retry Mechanism**
  - ✅ Uses **up to 3 retries** (MAX\_RETRIES = 3) for resilience

- **Dataset Structure**
  - ✅ Saves items with fields including: `url`, `id`, `description`, `created_time`, `transcript`, `video_height`, `video_width`, `video_duration`, `cover_url`, `video_download_url`, `stats_play`, `authorStats`

- **Rate Limits & Performance**
  - ✅ Designed for reliable extraction with retries; actual throughput varies with access conditions and proxy latency

- **Limitations**
  - ❌ If subtitles/transcripts aren’t available in the returned data, `transcript` will be set to `"No Transcript Found"`
  - ❌ The actor only processes URLs provided in `startUrls`

***

### FAQ

#### Can I use Tiktok Transcript Scraper to download TikTok captions as text?

✅ Yes. **Tiktok Transcript Scraper** extracts transcript/caption data and returns it as structured `transcript` output (timestamped segments when available), making it suitable for a *tiktok caption text extraction* workflow.

#### What happens if a TikTok video doesn’t have a transcript?

❌ If subtitles are not present in the returned data, the actor outputs `transcript: "No Transcript Found"` for that video.

#### Do I need to write code to run this actor?

✅ No. You can run it directly in Apify Console by filling in `startUrls` and (optionally) `proxyConfiguration`. The dataset is generated automatically.

#### Does this actor support proxy configuration?

✅ Yes. You can set `proxyConfiguration`, including `proxy support`. If the selected proxy is rejected by TikTok, a residential proxy will be used as a fallback.

#### How reliable is the scraping process?

✅ Reliability is improved with retry behavior (up to **3** attempts) and built-in proxy fallback logic to handle access variability.

#### What exact fields will I get in the dataset?

✅ Each dataset item includes fields such as `url`, `id`, `description`, `created_time`, `transcript`, `video_height`, `video_width`, `video_duration`, `cover_url`, `video_download_url`, `stats_play`, and `authorStats`.

#### Can I export the results for analysis?

✅ Yes. After the run, open the **TikTok Video Transcript Data** dataset and export the results (for example, to JSON or CSV) from the dataset UI.

#### Is it legal to use scraped transcripts?

✅ The tool collects information from **publicly available sources**, but it’s still your responsibility to comply with applicable laws and platform terms (including GDPR/CCPA requirements where relevant).

***

### Support & feature requests

Have questions or ideas to improve **Tiktok Transcript Scraper**? We’re happy to hear feedback.

- 💡 **Feature Requests:** Examples include CSV export enhancements, additional transcript formatting options (for example, changing segment structure), or better dataset field coverage to better support *tiktok transcript tool* workflows.
- 📧 **Contact:** Reach out via <dataforleads@gmail.com>.

Your feedback helps shape the roadmap for future improvements to this *tiktok transcript scraper* actor.

***

*If you need a reliable way to extract and reuse TikTok captions at scale, **Tiktok Transcript Scraper** delivers structured transcript data ready for analysis and downstream workflows.*

***

### Disclaimer

**This tool accesses publicly accessible sources only.** It does not access private profiles, authenticated data, or password-protected content.

You are responsible for ensuring your use complies with applicable laws (including GDPR/CCPA where relevant), spam regulations, and TikTok/platform terms. Use responsibly, ethically, and for legitimate purposes only.

For data removal requests, contact <dataforleads@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
  }
}
```

# 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("solid-scraper/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("solid-scraper/tiktok-transcript-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 '{
  "startUrls": [
    {
      "url": "https://www.tiktok.com/@david.webdeveloper/video/7506519006854253847"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call solid-scraper/tiktok-transcript-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/9p8MvVGNabkipc4d2/builds/3KuDDKpwUwTwdg9t5/openapi.json
