# Social Video Transcript: TikTok, Reels, YouTube, X & Facebook (`pnda/social-video-transcript`) Actor

Get the transcript of Instagram Reels, TikTok, Facebook, X (Twitter) and YouTube videos from their URLs: full text, timestamped segments, language and duration. Uses the platform captions when they exist, Whisper large-v3 AI otherwise. Pay per video.

- **URL**: https://apify.com/pnda/social-video-transcript.md
- **Developed by:** [PNDA](https://apify.com/pnda) (community)
- **Categories:** Social media, AI, Videos
- **Security:** Limited permissions
- **Stats:** 5 total users, 5 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $12.60 / 1,000 ai transcript (first minute included)s

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

## Social Video Transcript: TikTok, Reels, YouTube, X & Facebook

Get the transcript of Instagram Reels, TikTok, Facebook, X (Twitter) and YouTube videos from their URLs: full text, timestamped segments, detected language and duration. Uses the platform captions when they exist, Whisper large-v3 AI otherwise. No login, no API key. Pay per video.

### What you get

| Network | Example URL | How it is transcribed |
|---|---|---|
| Instagram Reels | `https://www.instagram.com/reel/...` | Whisper large-v3 AI |
| TikTok | `https://www.tiktok.com/@user/video/...` | TikTok captions when present, AI otherwise |
| YouTube (videos and Shorts) | `https://www.youtube.com/watch?v=...` | YouTube captions when present, AI otherwise |
| X (Twitter) | `https://x.com/user/status/...` | Whisper large-v3 AI |
| Facebook videos and reels | `https://www.facebook.com/reel/...` | Whisper large-v3 AI |

One row per video:

```json
{
  "url": "https://www.instagram.com/reel/DfBUU0nDswI",
  "network": "instagram",
  "status": "success",
  "transcriptSource": "ai-whisper",
  "language": "en",
  "durationSeconds": 40.92,
  "transcribedSeconds": 41.08,
  "truncated": false,
  "text": "I think by far the scariest thing in the universe is a black hole. You want to avoid them...",
  "wordCount": 123,
  "title": "Avoiding black holes is pretty easy on Earth...",
  "author": "natgeoscience",
  "publishedAt": "2026-10-28T13:00:02.000Z"
}
```

With **timestamped segments** on, each row also carries `segments` (start, end, text).

Videos that are private, deleted or without audio come back with `status: "failed"` and a reason, and are **not charged**.

### How to use it

1. Paste the video URLs in **Video URLs** (mix networks freely).
2. Optional: force a **language** (otherwise detected), turn off **timestamped segments**, cap the **max duration per video**.
3. Run, then export the dataset as JSON, CSV or Excel.

Input example:

```json
{
  "urls": [
    "https://www.instagram.com/reel/DfBUU0nDswI",
    "https://x.com/nasa/status/2114463017043624059"
  ],
  "includeSegments": true,
  "maxDurationMinutes": 30
}
```

### Pricing (pay per event)

| Event | Price |
|---|---|
| Video transcribed by AI, first minute of audio included | $0.0126 ($12.60 / 1,000 videos) |
| Each extra minute of audio beyond the first | $0.0048 |
| Video transcript read from the platform captions (YouTube, TikTok) | $0.005 ($5 / 1,000 videos) |
| Actor start (once per run) | $0.01 |

Examples: a 30 s Reel = $0.0126; a 45 s TikTok with captions = $0.005; a 3 min X video = $0.0126 + 2 × $0.0048 = $0.0222.
The run never spends more than your **max charge per run**: videos that the remaining budget cannot pay for are skipped, and long audio is cut to what the budget covers (`truncated: true`).

### Use cases

- **Content research**: read what top creators say in their Reels and TikToks without watching them.
- **Repurposing**: turn videos into blog posts, captions, threads or newsletters.
- **Brand and ad monitoring**: search spoken mentions of a brand or product across networks.
- **Datasets for AI**: build text corpora from short-form video.

### FAQ

**Which language?** Whisper detects about 100 languages automatically; set `language` to force one.

**How accurate is it?** Whisper large-v3 is OpenAI's most accurate open speech model. Platform captions are used as-is when they exist (cheaper and instant).

**Is it legal?** The actor only reads public videos, like a visitor without an account. You are responsible for how you use the transcripts (copyright, personal data under GDPR / CCPA).

**Free plan?** Apify Free accounts can test with a few short videos per run.

# Actor input Schema

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

Public video URLs, one per line: Instagram reels / video posts, TikTok videos, Facebook reels / videos, X (Twitter) posts with a video, YouTube videos / Shorts.

## `preferPlatformCaptions` (type: `boolean`):

YouTube and TikTok often publish captions: they are used first (cheaper, exact). Turn off to transcribe TikTok videos with AI even when captions exist. YouTube always uses its captions.

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

Two-letter code (en, fr, es...) to help the AI transcription. Leave empty for automatic detection.

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

Longer videos are transcribed up to this length only (and billed for it only).

## `maxVideos` (type: `integer`):

Hard limit on the number of videos processed (and on the cost) of the run.

## `includeSegments` (type: `boolean`):

Adds the list of segments (start, end in seconds, text) to each result.

## Actor input object example

```json
{
  "urls": [
    "https://www.tiktok.com/@nasa/video/7699974130153590029",
    "https://www.youtube.com/watch?v=jNQXAC9IVRw"
  ],
  "preferPlatformCaptions": true,
  "maxDurationMinutes": 30,
  "maxVideos": 100,
  "includeSegments": true
}
```

# Actor output Schema

## `dataset` (type: `string`):

All transcripts (JSON, CSV, Excel).

# 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/@nasa/video/7699974130153590029",
        "https://www.youtube.com/watch?v=jNQXAC9IVRw"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("pnda/social-video-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/@nasa/video/7699974130153590029",
        "https://www.youtube.com/watch?v=jNQXAC9IVRw",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("pnda/social-video-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/@nasa/video/7699974130153590029",
    "https://www.youtube.com/watch?v=jNQXAC9IVRw"
  ]
}' |
apify call pnda/social-video-transcript --silent --output-dataset

```

## MCP server setup

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