# TikTok Transcript Scraper - Video to Text, No Login (`benthepythondev/tiktok-transcript-scraper`) Actor

Get the transcript of TikTok videos as plain text, with optional timestamps. Paste video links, or name a profile and get the transcripts of its latest videos. No login, no AI fees.

- **URL**: https://apify.com/benthepythondev/tiktok-transcript-scraper.md
- **Developed by:** [Ben](https://apify.com/benthepythondev) (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 $1.70 / 1,000 transcripts

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

## 📝 TikTok Transcript Scraper - Video to Text, No Login

Turn TikTok videos into text. Paste video links and get what is said in each video, or name a profile and get the transcripts of its latest videos. Timestamps for every spoken line are optional. No login, no cookies, no proxy to configure, and no per-minute transcription fee. Export to JSON/CSV/Excel, run on a schedule, call via API, or connect to Make, Zapier or n8n.

### 🔎 What is the TikTok Transcript Scraper?

It is an Apify Actor that collects the subtitle track TikTok itself creates for videos with speech. Nothing is downloaded or transcribed again, which is why a transcript arrives in seconds and costs a fraction of a cent: one link takes about five seconds, and 100 transcripts of one profile took ten seconds in our test on Apify.

There are two ways to use it:

- **Video links.** Full links, share links (`vm.tiktok.com/…`, `tiktok.com/t/…`) or bare video ids. Each link gives one transcript.
- **Profiles.** A username, @handle or profile link. The Actor walks the profile from the newest video back and returns the transcripts of the videos that have one, up to your limit.

Each row also carries the video's caption, creator, posting time, length and view counts, so the text can be sorted and filtered without a second lookup.

#### What data does it extract?

- **Transcript:** `transcript` (plain text), `word_count`, `language` (for example `eng-US`, `deu-DE`, `spa-ES`)
- **Timestamps (optional):** `segments`, each spoken line with `start`, `end` (seconds) and `text`
- **Video:** `video_id`, `video_url`, `description`, `created_at`, `duration_seconds`
- **Creator:** `author_username`, `author_nickname`
- **Reach:** `plays`, `likes`, `comments`, `shares`

### ⬇️ Input

| Field | Type | What it does |
|---|---|---|
| `videoUrls` | array | Video links, share links or bare video ids |
| `profiles` | array | Usernames, @handles or profile links |
| `maxResults` | integer | Transcripts per profile, newest first. 10 by default |
| `timestamps` | boolean | Add `segments` with start and end of every spoken line |

#### Example input

One video plus the 20 latest transcripts of a creator, with timestamps:

```json
{
  "videoUrls": ["https://www.tiktok.com/@nasa/video/7668779420412284191"],
  "profiles": ["garyvee"],
  "maxResults": 20,
  "timestamps": true
}
```

### ⬆️ Output

A real row. The transcript has 339 words and 50 segments; both are shortened here:

```json
{
  "video_id": "7668779420412284191",
  "video_url": "https://www.tiktok.com/@nasa/video/7668779420412284191",
  "author_username": "nasa",
  "author_nickname": "NASA",
  "description": "Across the world, in the skies, and beyond, here’s the latest in your NASA Minute: 🇬🇧 Farnborough Air Show ✈️ Oshkosh 🌏 Chris Williams returns home 🔭 Roman nears launch 💾 AI-focused Genesis mission 🚀 Artemis III engines arrive As always, stay tuned for more next week!",
  "created_at": "2026-07-31T19:41:05",
  "duration_seconds": 140,
  "language": "eng-US",
  "transcript": "This week, NASA showcased the future of flight, welcomed home an astronaut, and moved major missions closer to launch. Here's what's new in your NASA minute. NASA has been on the road showcasing the future of flight at Farnborough air show in England and EAA Airventure in Oshkosh, Wisconsin. …",
  "word_count": 339,
  "plays": 617200,
  "likes": 22500,
  "comments": 585,
  "shares": 432,
  "segments": [
    {"start": 0.62, "end": 2.98, "text": "This week, NASA showcased the future of flight,"},
    {"start": 2.981, "end": 4.101, "text": "welcomed home an astronaut,"}
  ],
  "scraped_at": "2026-10-03T10:33:03.511282"
}
```

`segments` appears only with **Include timestamps** on. All times are UTC.

### 💰 How much does it cost?

You pay per saved transcript, plus a tiny start fee per run. A video without a transcript costs nothing.

| Apify plan | Price per 1,000 transcripts |
|---|---|
| Free | $2.00 |
| Starter | $1.90 |
| Scale | $1.80 |
| Business and above | $1.70 |

The price is the same for a ten-second clip and a 28-minute video. Set **Maximum cost per run** in the run options and the Actor stops at that amount and says so in the status message.

### 💡 Use cases

- ✍️ **Repurpose content:** turn your own or a client's TikToks into blog posts, newsletters, captions and scripts without typing them out.
- 🔍 **Research what creators say:** collect the latest transcripts of the accounts in your niche and search them for products, claims, hooks and calls to action.
- 🤖 **Feed AI tools:** give a language model the spoken text of hundreds of videos for summaries, topic tagging or brand-safety checks.
- 🌍 **Subtitles and translation:** use the timed `segments` as the starting point for subtitles in another language.

### ❓ FAQ

**Do I need a TikTok account, cookies or a proxy?** No. The Actor reads what TikTok shows any visitor and manages its own connections.

**Which videos have a transcript?** Videos with clear speech, in the languages TikTok captions automatically. In our tests most talking-head and news videos had one (14 of 15 for one creator), while music, dance and silent videos had none. Very new videos sometimes get theirs a little later.

**What happens when a video has no transcript?** No row is saved and nothing is charged for it. The status message and the `SUMMARY` record list those videos, along with links that do not exist.

**How accurate is the text?** It is TikTok's automatic transcription. It is good on clear speech and makes the usual mistakes with names, brands and jargon. The Actor passes the text on unchanged.

**In which language is the transcript?** In the language spoken in the video. TikTok gives visitors one track per video; `language` says which. Translations are not included.

**How does the profile mode pick videos?** It reads the profile from the newest video back and keeps those with a transcript until `maxResults` is reached. For a creator who rarely speaks it stops after looking at 20 videos per requested transcript and tells you how many it found.

**Can I get timestamps?** Yes. Turn on **Include timestamps** and every row gets `segments` with start and end in seconds. Leave it off for a flat table with one text column.

**Does it work with share links from the app?** Yes. `vm.tiktok.com`, `vt.tiktok.com` and `tiktok.com/t/…` links are followed to their video.

**Is it legal to scrape TikTok transcripts?** The Actor reads only what TikTok shows publicly to any visitor and does not log in. What a creator says is their content: quoting, republishing or training on it is subject to copyright and to TikTok's terms, and names in the text can be personal data under GDPR and similar rules. If in doubt, ask a lawyer.

**Something is missing or broken?** Open an issue on the Actor's Issues tab with the run ID. Issues are answered within one business day.

### 🔗 You might also like

- [TikTok Profile Videos Scraper](https://apify.com/benthepythondev/tiktok-profile-videos-scraper)
- [TikTok Comments Scraper](https://apify.com/benthepythondev/tiktok-comments-scraper)
- [TikTok Profile Scraper](https://apify.com/benthepythondev/tiktok-profile-scraper)
- [YouTube Transcript Scraper](https://apify.com/benthepythondev/youtube-transcript-scraper)
- [Instagram Reels Scraper](https://apify.com/benthepythondev/instagram-reels-scraper)

**Keywords:** tiktok transcript scraper, tiktok transcript, tiktok video to text, tiktok transcript generator, tiktok subtitles download, tiktok captions export, transcribe tiktok video, tiktok transcript api, tiktok speech to text, tiktok transcripts in bulk, tiktok creator transcripts, tiktok content repurposing, tiktok transcript without login, tiktok transcript to csv, tiktok video text extractor

# Actor input Schema

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

Links to TikTok videos. Share links (vm.tiktok.com, tiktok.com/t/…) and bare video ids work too.

## `profiles` (type: `array`):

Usernames, @handles or profile links. For each profile the newest videos that have a transcript are returned.

## `maxResults` (type: `integer`):

Applies to profiles only; every video link gives at most one transcript.

## `timestamps` (type: `boolean`):

Adds `segments`: every spoken line with its start and end in seconds.

## Actor input object example

```json
{
  "videoUrls": [
    "https://www.tiktok.com/@nasa/video/7668779420412284191"
  ],
  "maxResults": 10,
  "timestamps": false
}
```

# Actor output Schema

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

No description

## `summary` (type: `string`):

No description

# 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/7668779420412284191"
    ]
};

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

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

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,benthepythondev/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/MLUas73LnZxF1UZJe/builds/fc19SE9izhh9kjBYb/openapi.json
