# Video Transcriber — Video to Text (Whisper), Any Network (`viralanalyzer/video-transcriber`) Actor

Transcribe video to text with Whisper running locally — no API key. Give any video URL (TikTok, YouTube, Instagram, Kwai, Facebook, X) or a direct file and get text, timestamped segments, SRT subtitles and auto-detected language. Pay per minute transcribed.

- **URL**: https://apify.com/viralanalyzer/video-transcriber.md
- **Developed by:** [viralanalyzer](https://apify.com/viralanalyzer) (community)
- **Categories:** AI, Videos
- **Stats:** 84 total users, 73 monthly users, 83.3% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$25.00 / 1,000 minute of 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/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

## 🎬 Video Transcriber — Video to Text (Whisper) for TikTok, YouTube, Kwai & More

> **$0.025 per minute transcribed** · 🔒 no API key needed · 🌍 any language (auto-detect) · 📝 text + SRT + timestamps
> 🔗 [View on Apify Store](https://apify.com/viralanalyzer/video-transcriber) · 🇺🇸 English · [🇧🇷 Português](#-português)

Transcribe **video to text** using OpenAI **Whisper running locally inside the Actor** (faster-whisper) — **no external API, no key, no rate limits**. Give any video URL — **TikTok, YouTube, Instagram, Kwai, Facebook, X (Twitter)** — or a direct video-file link, and get accurate **text, timestamped segments, SRT subtitles and auto-detected language**. The audio is extracted from the video automatically; it works even on videos that have **no captions**.

**Who it's for:** social-media & content teams, video editors, market/OSINT researchers, accessibility teams, and developers building search, summarization or subtitles on top of video.

▶️ Click **Try for free** — your first run returns a real transcript in seconds.

### ✨ Features

- 🎯 **Real Whisper transcription** (not just captions) — works on any video, even without subtitles.
- 🌐 **Any network** — TikTok, YouTube, Instagram, Kwai, Facebook, X, and 1800+ sites (or a direct file).
- 🌍 **99+ languages**, auto-detected (or force one with the `language` field).
- 📝 **Rich output** — full text, timestamped segments, ready-to-use **SRT**, word count, language.
- 🔒 **Self-contained** — Whisper runs in the container; you never need an API key.
- 💸 **Fair pricing** — pay per minute of video actually transcribed.

### 📥 Input

| Field | Type | Required | Description |
|---|---|---|---|
| `mediaUrls` | array | ✅ | Video URLs (TikTok/YouTube/Instagram/Kwai/… or a direct video file) |
| `language` | string | ❌ | ISO code (`en`, `pt`, `es`…). Empty = auto-detect |
| `model` | string | ❌ | `tiny` | `base` (default) | `small` — speed vs. accuracy |
| `maxMinutesPerItem` | integer | ❌ | Safety cap on minutes per URL (default 120) |
| `proxyConfiguration` | object | ❌ | RESIDENTIAL by default — networks block datacenter IPs on media download |

### 📤 Output (per item)

```json
{
  "url": "https://www.tiktok.com/@user/video/…",
  "title": "…",
  "language": "en",
  "durationSeconds": 47.2,
  "billedMinutes": 1,
  "text": "Full transcript text …",
  "segments": [{ "start": 0.0, "end": 4.2, "text": "…" }],
  "srt": "1\n00:00:00,000 --> 00:00:04,200\n…",
  "wordCount": 120
}
```

### 🎯 Use cases

- Turn TikTok/Reels/Shorts into searchable, quotable text.
- Generate SRT subtitles for repurposing clips across platforms.
- Feed video speech into summarization / RAG / trend analysis.
- Accessibility transcripts and compliance.

### ❓ FAQ

**Q: Do I need an API key (OpenAI, etc.)?** A: No. Whisper runs inside the Actor — you only provide URLs.

**Q: Which networks work?** A: Anything yt-dlp supports (1800+ sites) — TikTok, YouTube, Instagram, Kwai, Facebook, X — plus direct video links. Residential proxy is on by default because networks block datacenter IPs.

**Q: How is it billed?** A: **$0.025 per minute** of video transcribed (rounded up per item). A 4-minute video = $0.10.

**Q: Videos without captions?** A: Yes — this transcribes the actual audio, so captions are not required.

### 💰 Pricing

**Pay-per-event: $0.025 per minute transcribed.** No platform-usage charges — a fixed price per minute of real video audio. Examples: 1 min = $0.025 · 5 min = $0.125 · 20 min = $0.50.

### 🔗 Related actors

- [Audio Transcriber](https://apify.com/viralanalyzer/audio-transcriber) — podcasts, social audio & uploads.
- [YouTube Fast Scraper](https://apify.com/viralanalyzer/youtube-fast-scraper) — metadata + captions.

### 📝 Changelog

- **v1.0** — local Whisper (faster-whisper) transcription from any network; text + segments + SRT; per-minute pricing.

***

## 🇧🇷 Português

> **$0.025 por minuto transcrito** · 🔒 sem chave de API · 🌍 qualquer idioma (detecção automática) · 📝 texto + SRT + timestamps
> [🇺🇸 English](#-video-transcriber--video-to-text-whisper-for-tiktok-youtube-kwai--more) · 🇧🇷 Português

Transcreva **vídeo em texto** com o **Whisper rodando localmente no Actor** (faster-whisper) — **sem API externa, sem chave, sem rate limit**. Passe qualquer URL de vídeo — **TikTok, YouTube, Instagram, Kwai, Facebook, X** — ou um link direto de arquivo, e receba **texto, segmentos com timestamps, legendas SRT e idioma detectado**. O áudio é extraído do vídeo automaticamente; funciona mesmo em vídeos **sem legendas**.

**Para quem é:** times de redes sociais e conteúdo, editores de vídeo, pesquisadores de mercado/OSINT, times de acessibilidade e desenvolvedores que constroem busca, resumo ou legendas sobre vídeo.

▶️ Clique em **Testar grátis** — sua primeira execução retorna uma transcrição real em segundos.

### ✨ Recursos

- 🎯 **Transcrição Whisper real** (não só legendas) — funciona em qualquer vídeo, mesmo sem legendas.
- 🌐 **Qualquer rede** — TikTok, YouTube, Instagram, Kwai, Facebook, X e 1800+ sites (ou arquivo direto).
- 🌍 **99+ idiomas**, detectados automaticamente.
- 📝 **Saída rica** — texto completo, segmentos com tempo, **SRT** pronto, contagem de palavras, idioma.
- 🔒 **Autossuficiente** — o Whisper roda no container; você nunca precisa de chave de API.
- 💸 **Preço justo** — pague por minuto de vídeo realmente transcrito.

### 💰 Preço

**Pay-per-event: $0.025 por minuto transcrito.** Sem cobrança de uso de plataforma — preço fixo por minuto de áudio do vídeo. Exemplos: 1 min = $0.025 · 5 min = $0.125 · 20 min = $0.50.

### ❓ FAQ

**P: Preciso de chave de API?** R: Não. O Whisper roda dentro do Actor — você só fornece URLs.

**P: Como é cobrado?** R: **$0.025 por minuto** de vídeo transcrito (arredondado por item). Um vídeo de 4 min = $0.10.

**P: Vídeos sem legenda?** R: Sim — transcrevemos o áudio real, então legendas não são necessárias.

### 📝 Changelog

- **v1.0** — transcrição local com Whisper (faster-whisper) de qualquer rede; texto + segmentos + SRT; preço por minuto.

# Actor input Schema

## `mediaUrls` (type: `array`):

Video URLs to transcribe — TikTok, YouTube, Instagram, Kwai, Facebook, X (audio is extracted automatically) or a direct video/audio file link.

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

ISO code (e.g. 'en', 'pt', 'es'). Leave empty to auto-detect.

## `model` (type: `string`):

Accuracy vs. speed. 'small' (default, more accurate), 'base' (faster) or 'tiny' (fastest). Larger models cost a bit more compute time.

## `maxMinutesPerItem` (type: `integer`):

Safety cap on how many minutes of audio to transcribe per URL.

## `youtubeCookies` (type: `string`):

Paste the contents of a Netscape cookies.txt exported from a logged-in YouTube session to reliably download YouTube (avoids the 'Sign in to confirm you're not a bot' gate). Leave empty for other networks / direct files.

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

Residential proxy by default — social networks (YouTube/TikTok/Instagram) block datacenter IPs when downloading media. Keep RESIDENTIAL unless your source is a plain audio file that accepts datacenter.

## Actor input object example

```json
{
  "mediaUrls": [
    "https://github.com/openai/whisper/raw/main/tests/jfk.flac"
  ],
  "language": "",
  "model": "small",
  "maxMinutesPerItem": 120,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

Dataset with one transcript per input URL (text, segments, SRT, language).

# 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 = {
    "mediaUrls": [
        "https://github.com/openai/whisper/raw/main/tests/jfk.flac"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("viralanalyzer/video-transcriber").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 = {
    "mediaUrls": ["https://github.com/openai/whisper/raw/main/tests/jfk.flac"],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("viralanalyzer/video-transcriber").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 '{
  "mediaUrls": [
    "https://github.com/openai/whisper/raw/main/tests/jfk.flac"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call viralanalyzer/video-transcriber --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/vMfs7nISHLwC87Zgg/builds/YhGHQOweNqHcY6yDU/openapi.json
