# TikTok Transcript - Video to Text with AI, No Login (`tracefetch/tiktok-transcript`) Actor

Transcribe TikTok videos to text with AI speech-to-text, even without captions. Uses the video's own audio, never the background song track. Get the transcript, word count, duration and optional timestamps. $0.01 per video; videos that cannot be fetched are free.

- **URL**: https://apify.com/tracefetch/tiktok-transcript.md
- **Developed by:** [서준 박](https://apify.com/tracefetch) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.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?

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 - Video to Text with AI, No Login

Turn TikTok videos into text. This Actor transcribes the spoken audio of public TikTok videos with AI
speech-to-text, so it works even when a video has no captions. Paste video URLs, get clean transcripts as JSON,
CSV or Excel, or pull them into your app through the API. No TikTok login needed.

### Why this TikTok transcript tool is different

Many TikTok videos are voice-overs on top of a popular song. TikTok exposes the song as a separate "music" track, and
transcribing that track returns the song lyrics (or nothing) instead of what the creator said. This Actor never uses
the music track: it transcribes the audio of the video itself, so you get the creator's actual words.

### What it does

- Transcribe TikTok videos to text, including videos without captions
- Return the full transcript, word count and audio duration for every video
- Optionally return timestamped segments and the detected spoken language
- Accept full links (`tiktok.com/@user/video/...`) and short links (`vm.tiktok.com/...`)
- Process many videos in one run and skip duplicate URLs automatically
- Retry region-restricted videos through the proxy
- Stop exactly at the spending limit you set for a run

### Who uses TikTok video to text?

- Content and social media teams turning TikToks into posts, captions and scripts
- Marketers and researchers analysing what creators and competitors say
- Developers and AI agents feeding transcripts into summarisers, classifiers, search indexes or RAG pipelines
- Accessibility work that needs a text version of short videos

### How to transcribe TikTok videos

1. Add one or more public TikTok video URLs.
2. Optional: set the spoken language (for example `en`, `es`, `pt`, `ko`) for short or noisy clips.
3. Optional: turn on Include segment timestamps.
4. Click Start. Each video appears in the dataset as soon as it is done.

### Output example

Real output from a test run:

```json
{
  "url": "https://www.tiktok.com/@pokemonlife22/video/7059698374567611694",
  "platform": "tiktok",
  "videoId": "7059698374567611694",
  "status": "succeeded",
  "durationSec": 6,
  "text": "Japanese boxes, if anybody's interested, let me know.",
  "wordCount": 8,
  "model": "gpt-4o-mini-transcribe",
  "charged": true
}
```

| Field | Description |
|---|---|
| `status` | `succeeded`, `no_speech` (music only), `no_audio`, `failed` or `skipped` |
| `text`, `wordCount`, `durationSec` | Transcript, its length, and audio length in seconds |
| `language`, `segments` | Present when timestamps are enabled |
| `author`, `caption` | Video metadata when TikTok provides it |
| `errorCode`, `errorMessage` | Why a video was not transcribed |
| `charged` | Whether the item was billed |

### Pricing

Pay per event, no subscription:

| Event | Price |
|---|---|
| Video transcribed (first minute of audio) | $0.01 |
| Each additional started minute | $0.01 |

1,000 TikToks of up to one minute cost $10; longer videos add $0.01 per extra started minute.

Not charged: invalid URLs, private or removed videos, videos TikTok blocks, and videos without an audio track.
A video that contains only music is transcribed and returned as `no_speech`; it is billed like any transcription,
because the audio was processed. Set a maximum charge per run and the Actor never exceeds it.

### Use it from the API and AI agents

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("<username>/tiktok-transcript").call(
    run_input={"urls": ["https://www.tiktok.com/@pokemonlife22/video/7059698374567611694"]}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["status"], item["text"])
```

Works with schedules, webhooks, Make, Zapier and n8n. AI agents connected to the Apify MCP server can find and call it.

### Limits and FAQ

- Public videos only; no login, no private accounts.
- Audio longer than *Maximum minutes per video* (default 10) is cut at that length.
- Does it read on-screen text? No, it transcribes what is spoken.
- Can I use the text with my own AI model? Yes; the output is plain JSON for your own pipeline.
- Is it legal? The Actor only processes publicly available videos and does not log in. You are responsible for how
  you use the data; check TikTok's terms and the laws that apply to you.

# Changelog

This Actor's version history is a separate document: https://apify.com/tracefetch/tiktok-transcript/changelog.md

# Actor input Schema

## `urls` (type: `array`):

Public TikTok video URLs, one per line (tiktok.com/@user/video/... or vm.tiktok.com short links). Duplicates are processed once.

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

Two-letter ISO-639-1 code such as en, es, ko. Leave empty to detect automatically. Setting it improves accuracy for short or noisy clips.

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

Adds start/end times for each spoken segment, plus the detected language. Same price.

## `maxDurationMinutes` (type: `integer`):

Longer audio is cut at this length. The first minute is included in the per-video price; each further started minute is billed as an extra minute.

## `maxConcurrency` (type: `integer`):

How many videos are processed at the same time.

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

Used only when TikTok blocks a direct request or a video is region-restricted.

## Actor input object example

```json
{
  "urls": [
    "https://www.tiktok.com/@pokemonlife22/video/7059698374567611694"
  ],
  "includeTimestamps": false,
  "maxDurationMinutes": 10,
  "maxConcurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

All items of this run, including failed ones with an errorCode. Only items with charged=true were billed.

# 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 = {
    "urls": [
        "https://www.tiktok.com/@pokemonlife22/video/7059698374567611694"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("tracefetch/tiktok-transcript").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 = {
    "urls": ["https://www.tiktok.com/@pokemonlife22/video/7059698374567611694"],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("tracefetch/tiktok-transcript").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 '{
  "urls": [
    "https://www.tiktok.com/@pokemonlife22/video/7059698374567611694"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call tracefetch/tiktok-transcript --silent --output-dataset

```

## MCP server setup

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

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/trnFnzoYO8fivdadL/builds/r5XCKmTrR3vkJr7w3/openapi.json
