# Video & Audio Transcriber · Whisper Speech-to-Text, SRT & VTT (`blackfalcondata/video-audio-transcriber`) Actor

Whisper speech-to-text for any video, audio or podcast URL: full transcript with timestamped segments plus SRT/VTT subtitles, 99+ languages auto-detected. Works on YouTube and TikTok links, podcast RSS feeds and direct media files with no API key needed.

- **URL**: https://apify.com/blackfalcondata/video-audio-transcriber.md
- **Developed by:** [Black Falcon Data](https://apify.com/blackfalcondata) (community)
- **Categories:** AI, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $30.00 / 1,000 minute of media 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?

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

### What does Video & Audio Transcriber do?

Video & Audio Transcriber turns any video, audio or podcast URL into text. Paste links from YouTube, TikTok, Instagram, Facebook, X, Rumble, SoundCloud, Dailymotion, Twitch and 1,800+ other sites, a podcast RSS feed, or a direct media file, and get the full transcript, timestamped segments, ready-to-save SRT and VTT subtitles and the detected language. The audio track itself is transcribed, so it works on videos that have no captions at all, and there is no API key to manage.

**New to Apify?** [Sign up free](https://console.apify.com/sign-up?fpr=1h3gvi) and use the included $5 monthly platform credit to test this actor.

### Key features

- **🎙️ Any video, audio or podcast URL to text:** Paste links from YouTube, TikTok, Instagram, Facebook, X, Rumble, SoundCloud, Dailymotion, Twitch and 1,800+ other sites, a podcast RSS or Atom feed, or a direct file (mp3, mp4, wav, m4a, flac, ogg, webm, mov). The audio track is transcribed, so videos without captions work too.
- **📝 Transcript, timestamped segments, SRT and VTT:** every item carries the full `text`, a `segments` array with start and end times, ready-to-save `srt` and `vtt` strings, and downloadable `.srt` / `.vtt` files in the run's key-value store. Turn on `wordTimestamps` to get per-word timing inside each segment.
- **🌍 99+ languages, detected automatically:** the spoken language is detected per item and returned as an ISO 639-1 code, or force it with `language`. Set `translateToEnglish` to get an English transcript and English subtitles from any source language.
- **🎧 Podcast feeds expand to episodes:** give it an RSS or Atom feed URL and the newest `maxEpisodesPerFeed` episodes are transcribed as separate rows, each with the episode title and publish date.
- **💸 Pay only for transcribed minutes:** `maxMinutesPerItem` caps what is transcribed per URL, `billedMinutes` shows what each item cost, failed items are never charged, and when the run's maximum cost is reached the remaining URLs are skipped instead of failing the run. Long files are processed in chunks so an hour of audio does not take an hour.
- **🧹 Empty-field stripping:** drop null, empty-string, and empty-array fields from each record before push. Smaller payloads for AI agents and dashboards that already handle missing fields gracefully.

### What data can you get for each media URL?

One record per media item (podcast feeds expand to one record per episode):

- **Transcript** — `text` (full transcript), `wordCount`, `segments` (`[{ start, end, text }]` with second-precision timestamps, plus `words` when `wordTimestamps` is on)
- **Subtitles** — `srt` and `vtt` strings, and `srtFileUrl` / `vttFileUrl` download links
- **Language** — detected `language` (ISO 639-1) and `task` (`transcribe` or `translate`). `languageProbability` carries a detection confidence only when the in-container engine ran; the hosted speech API does not report one
- **Source metadata** — `title`, `uploader`, `publishedAt`, `thumbnailUrl`, `platform`, `sourceType`, `url`, `inputUrl`
- **Billing transparency** — `durationSeconds` (full source), `transcribedSeconds` (after the per-item cap), `billedMinutes`
- **Failures** — `error` is `null` on success; failed items carry a short reason and are never charged

### Input

Configure the actor through the input schema in Apify Console.

Key parameters:

- **`mediaUrls`** — Video, audio, podcast-feed or direct-file URLs to transcribe (up to 50 per run). Works with YouTube, TikTok, Instagram, Facebook, X, Rumble, SoundCloud, Dailymotion, Twitch and 1,800+ other sites, podcast RSS/Atom feeds (newest episodes are expanded automatically) and direct media files (mp3, mp4, wav, m4a, flac, ogg, webm, mov).
- **`language`** — ISO 639-1 code of the spoken language, e.g. `en`, `es`, `de`, `pt`. Leave empty to auto-detect — 99+ languages are recognised. (default: `""`)
- **`translateToEnglish`** — Output an English translation of the speech instead of a transcript in the original language. Subtitles are translated too. (default: `false`)
- **`wordTimestamps`** — Add a `words` array with start/end times for every word to each segment. Useful for karaoke-style captions and precise clipping. (default: `false`)
- **`maxMinutesPerItem`** — Per-URL cap on how many minutes of media are transcribed and billed (max 300). Longer media is transcribed up to the cap; you pay only for transcribed minutes. Free-plan runs are additionally limited to 30 minutes of media per run in total. Runs with a cap of 30 minutes or less use 1024 MB of memory, longer caps use 2048 MB. (default: `120`)
- **`maxEpisodesPerFeed`** — When a URL is a podcast RSS/Atom feed, transcribe this many of the newest episodes. Each episode becomes one output item. (default: `1`)
- **`cookies`** — Contents of a `cookies.txt` exported from a logged-in browser session. Needed for YouTube's "Sign in to confirm you're not a bot" gate and for age- or region-restricted content. Stored as a secret; leave empty for public media.
- **`excludeEmptyFields`** — Drop null, empty-string and empty-array fields from every output record to keep exports compact. (default: `false`)

### Input examples

**Basic transcription** — One YouTube video, language auto-detected.

→ Full transcript, timestamped segments, SRT and VTT for the video.

```json
{
  "mediaUrls": [
    "https://www.youtube.com/watch?v=jNQXAC9IVRw"
  ]
}
```

**Podcast feed, newest episodes** — Transcribe the three newest episodes of a podcast, at most 60 minutes each.

→ One row per episode with title, publish date, transcript and subtitles.

```json
{
  "mediaUrls": [
    "https://feed.syntax.fm/rss"
  ],
  "maxEpisodesPerFeed": 3,
  "maxMinutesPerItem": 60
}
```

**Translate to English with word timing** — A direct audio file, translated to English, with per-word timestamps.

→ English transcript and subtitles; every segment carries a `words` array.

```json
{
  "mediaUrls": [
    "https://github.com/openai/whisper/raw/main/tests/jfk.flac"
  ],
  "translateToEnglish": true,
  "wordTimestamps": true
}
```

### Output

Each run produces a dataset of structured transcript records. Results can be downloaded as JSON, CSV, or Excel from the Dataset tab in Apify Console.

### Example transcript record

```json
{
  "url": "https://traffic.megaphone.fm/FSI5284996555.mp3",
  "inputUrl": "https://feed.syntax.fm/rss",
  "sourceType": "podcast-episode",
  "platform": "podcast",
  "title": "1035: Why everyone is moving to Stylex?",
  "publishedAt": "2026-09-02T11:00:00.000Z",
  "durationSeconds": 1596.656325,
  "transcribedSeconds": 119.1,
  "billedMinutes": 2,
  "language": "en",
  "task": "transcribe",
  "text": "Stylex. Everybody's talking about Stylex. We're going to do an episode on it. If you've ever opened up a meta property, Facebook, whatever, you'll see that their classes just have all these random cla...",
  "wordCount": 405,
  "segments": [
    {
      "start": 0.24,
      "end": 24.18,
      "text": "Stylex. Everybody's talking about Stylex. We're going to do an episode on it. If you've ever opened up a meta property, Facebook, whatever, you'll see that their classes just have all these random cla..."
    },
    {
      "start": 24.21,
      "end": 32.43,
      "text": "It's great for agents. There's some pros, the cons. We're going to go into all of it, what people are saying about it, as well as some of the alternative.  Let's get on into it. You ready, Scott?"
    },
    {
      "start": 34.65,
      "end": 56.31,
      "text": "I'm as ready as I can be, Wes, because honestly, there's a lot about Stylex I find to be fairly grotesque, but I'm keeping an open mind.  This is me keeping an open mind.  Folks, you can change and yo..."
    },
    {
      "start": 56.34,
      "end": 57.2,
      "text": "And today,"
    },
    {
      "start": 57.27,
      "end": 83.53,
      "text": "We're going to be talking about that. We're going to talk about how great it is. Yes. Yes. Yeah. But before we get into that, we are going to be doing a meetup in San Francisco, Tuesday, October 27th...."
    },
    "... 2 more items"
  ],
  "srt": "1\n00:00:00,240 --> 00:00:04,327\nStylex. Everybody's talking about Stylex. We're going to do an episode on it.\n\n2\n00:00:04,327 --> 00:00:08,415\nIf you've ever opened up a meta property, Facebook, whate...",
  "vtt": "WEBVTT\n\n00:00:00.240 --> 00:00:04.327\nStylex. Everybody's talking about Stylex. We're going to do an episode on it.\n\n00:00:04.327 --> 00:00:08.415\nIf you've ever opened up a meta property, Facebook, w...",
  "srtFileUrl": "https://api.apify.com/v2/key-value-stores/RWVAUaz4U3bnaArgy/records/001-549f63d4-fsi5284996555-mp3.srt?signature=JA2EuWWJYX0mmgPNRHMW",
  "vttFileUrl": "https://api.apify.com/v2/key-value-stores/RWVAUaz4U3bnaArgy/records/001-549f63d4-fsi5284996555-mp3.vtt?signature=tYSYwVssQ3h5ON9oUnBe",
  "scrapedAt": "2026-09-04T06:53:39.016Z"
}
```

### How to transcribe media URLs

1. Go to [Video & Audio Transcriber](https://apify.com/blackfalcondata/video-audio-transcriber?fpr=1h3gvi) in Apify Console.
2. Configure the input.
3. Click **Start** and wait for the run to finish.
4. Export the dataset as JSON, CSV, or Excel.

### Use cases

- Turn TikToks, Reels and Shorts into searchable, quotable text at scale.
- Generate SRT/VTT subtitles for repurposing clips across platforms.
- Transcribe podcast back-catalogs straight from the RSS feed for search, show notes or SEO pages.
- Feed spoken content into summarisation, RAG pipelines or trend analysis.
- Monitor what creators or competitors say on video without watching hours of footage.
- Accessibility and compliance transcripts for published media.

### How much does it cost to transcribe media URLs?

Video & Audio Transcriber uses [pay-per-event](https://docs.apify.com/platform/actors/paid-actors/pay-per-event) pricing. You pay a small fee when the run starts and then for each result that is actually produced.

- **Run start:** $0.01 per run
- **Per minute of media transcribed:** $0.03

Example costs:

- 10 minutes: **$0.31**
- 30 minutes: **$0.91**
- 60 minutes: **$1.81**
- 120 minutes: **$3.61**
- 600 minutes: **$18.01**

### FAQ

#### How many media URLs can I check per run?

Up to 50 URLs per run, each transcribed up to `maxMinutesPerItem` minutes (default 120). Podcast feeds add `maxEpisodesPerFeed` episodes each, and a run delivers at most 200 items in total once feeds are expanded — the run log says so when your URLs expand past it, so split them across runs. Long media is processed in chunks, so an hour of audio does not take an hour to transcribe. Free-plan runs are limited to 30 minutes of media per run.

#### Can I integrate Video & Audio Transcriber with other apps?

Yes. Video & Audio Transcriber works with Apify's [integrations](https://apify.com/integrations?fpr=1h3gvi) to connect with tools like Zapier, Make, Google Sheets, Slack, and more. You can also use webhooks to trigger actions when a run completes.

#### Can I use Video & Audio Transcriber with the Apify API?

Yes. You can start runs, manage inputs, and retrieve results programmatically through the [Apify API](https://docs.apify.com/api/v2). Client libraries are available for JavaScript, Python, and other languages.

#### Can I use Video & Audio Transcriber through an MCP Server?

Yes. Apify provides an [MCP Server](https://apify.com/apify/actors-mcp-server?fpr=1h3gvi) that lets AI assistants and agents call this actor directly. Use `excludeEmptyFields` to keep payloads manageable for LLM context windows.

#### Is it legal to transcribe media URLs?

This actor queries publicly available data for the media URLs you provide. You remain responsible for ensuring your use complies with applicable laws, source terms, and downstream obligations.

#### Your feedback

If you have questions, need a feature, or found a bug, please [open an issue](https://apify.com/blackfalcondata/video-audio-transcriber/issues?fpr=1h3gvi) on the actor's page in Apify Console. Your feedback helps us improve.

### You might also like

- [Douyin Hot Search Scraper](https://apify.com/blackfalcondata/douyin-scraper?fpr=1h3gvi) — Scrape douyin.com real-time trending boards — hot search, seeding, entertainment, social.
- [Facebook Ads Library Scraper \[💰$0.05/1k\]](https://apify.com/blackfalcondata/facebook-ads-library-scraper?fpr=1h3gvi) — Scrape facebook.com/ads/library by keyword or advertiser: ad copy, image and video URLs, landing.
- [Meta Ads Library Scraper \[💰$0.05/1k\]](https://apify.com/blackfalcondata/meta-ads-library-scraper?fpr=1h3gvi) — Scrape Meta's Ad Library across Facebook, Instagram, WhatsApp, Threads, Messenger and Audience.
- [Pexels Scraper — Photos, Videos & Engagement Data](https://apify.com/blackfalcondata/pexels-scraper?fpr=1h3gvi) — This Pexels scraper extracts photos and videos by search, curated feed, photo ID, user, collection,.
- [Pinterest Scraper — Pins, Boards, Profiles & Engagement](https://apify.com/blackfalcondata/pinterest-scraper?fpr=1h3gvi) — Scrape Pinterest pins, boards and profiles by keyword or start URL — images, videos, engagement.
- [Reddit Scraper — Posts & Full Comment Threads](https://apify.com/blackfalcondata/reddit-scraper?fpr=1h3gvi) — Scrape Reddit posts with full nested comment threads, or search any subreddit or keyword across.
- [YouTube Comment Scraper — Comments, Replies, Likes](https://apify.com/blackfalcondata/youtube-comment-scraper?fpr=1h3gvi) — Scrape YouTube comments and their reply threads from any video, channel, or search query. Each.
- [YouTube Scraper $2/1K — Videos, Channels, Comments, Transcripts](https://apify.com/blackfalcondata/youtube-data-scraper?fpr=1h3gvi) — Scrape YouTube videos, channels, comments, and transcripts in one tool — by keyword or by video,.

### Getting started with Apify

New to Apify? [Create a free account with $5 credit](https://console.apify.com/sign-up?fpr=1h3gvi) — no credit card required.

1. Sign up — $5 platform credit included
2. Open this actor and configure your input
3. Click **Start** — export results as JSON, CSV, or Excel

Need more later? [See Apify pricing](https://apify.com/pricing?fpr=1h3gvi).

### Disclaimer

This actor transcribes media from URLs you supply and stores only what its run produces. You are responsible for having the right to transcribe the content, for how you use the transcripts — in particular any personal information spoken in them — and for complying with the source platforms' terms and applicable law. Video & Audio Transcriber is not affiliated with, endorsed by, or connected to YouTube, TikTok, Instagram, Facebook, X or any other platform whose media it can read.

### Search keywords

youtube scraper, youtube api, apify youtube, youtube data extraction, video & audio transcriber scraper, video & audio transcriber api, apify video & audio transcriber, video & audio transcriber data extraction, youtube.com scraper, youtube.com data, youtube.com api, social media scraper, video data, creator data, video transcriber, audio transcriber, speech to text, video to text, audio to text, youtube transcript, transcribe youtube video, tiktok transcript, instagram reel transcript, podcast transcription, transcribe podcast episodes, srt subtitle generator, vtt subtitles, whisper transcription, ai transcription.

# Actor input Schema

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

Video, audio, podcast-feed or direct-file URLs to transcribe (up to 50 per run). Works with YouTube, TikTok, Instagram, Facebook, X, Rumble, SoundCloud, Dailymotion, Twitch and 1,800+ other sites, podcast RSS/Atom feeds (newest episodes are expanded automatically) and direct media files (mp3, mp4, wav, m4a, flac, ogg, webm, mov).

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

ISO 639-1 code of the spoken language, e.g. `en`, `es`, `de`, `pt`. Leave empty to auto-detect — 99+ languages are recognised.

## `translateToEnglish` (type: `boolean`):

Output an English translation of the speech instead of a transcript in the original language. Subtitles are translated too.

## `wordTimestamps` (type: `boolean`):

Add a `words` array with start/end times for every word to each segment. Useful for karaoke-style captions and precise clipping.

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

Per-URL cap on how many minutes of media are transcribed and billed (max 300). Longer media is transcribed up to the cap; you pay only for transcribed minutes. Free-plan runs are additionally limited to 30 minutes of media per run in total. Runs with a cap of 30 minutes or less use 1024 MB of memory, longer caps use 2048 MB.

## `maxEpisodesPerFeed` (type: `integer`):

When a URL is a podcast RSS/Atom feed, transcribe this many of the newest episodes. Each episode becomes one output item.

## `cookies` (type: `string`):

Contents of a `cookies.txt` exported from a logged-in browser session. Needed for YouTube's "Sign in to confirm you're not a bot" gate and for age- or region-restricted content. Stored as a secret; leave empty for public media.

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

Proxy settings for media platforms that limit automated access. The default works for most sources; change it only if a platform keeps refusing downloads.

## `excludeEmptyFields` (type: `boolean`):

Drop null, empty-string and empty-array fields from every output record to keep exports compact.

## Actor input object example

```json
{
  "mediaUrls": [
    "https://www.youtube.com/watch?v=jNQXAC9IVRw"
  ],
  "language": "",
  "translateToEnglish": false,
  "wordTimestamps": false,
  "maxMinutesPerItem": 120,
  "maxEpisodesPerFeed": 1,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  },
  "excludeEmptyFields": false
}
```

# Actor output Schema

## `transcripts` (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 = {
    "mediaUrls": [
        "https://www.youtube.com/watch?v=jNQXAC9IVRw"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("blackfalcondata/video-audio-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://www.youtube.com/watch?v=jNQXAC9IVRw"],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("blackfalcondata/video-audio-transcriber").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 '{
  "mediaUrls": [
    "https://www.youtube.com/watch?v=jNQXAC9IVRw"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call blackfalcondata/video-audio-transcriber --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,blackfalcondata/video-audio-transcriber"
        }
    }
}

```

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/e5PHtFrUTbWRys5Uc/builds/7dINR0fejharYNIDk/openapi.json
