Video & Audio Transcriber · Whisper Speech-to-Text avatar

Video & Audio Transcriber · Whisper Speech-to-Text

Pricing

from $50.00 / 1,000 minute of media transcribeds

Go to Apify Store
Video & Audio Transcriber · Whisper Speech-to-Text

Video & Audio Transcriber · Whisper Speech-to-Text

Transcribe any video or audio URL to text with Whisper running inside the Actor — no API key. YouTube, TikTok, Instagram, Facebook, X, Rumble, SoundCloud, Dailymotion, podcast RSS feeds & direct media files. Full text, timestamped segments, SRT + VTT subtitles, 99+ languages auto-detected.

Pricing

from $50.00 / 1,000 minute of media transcribeds

Rating

5.0

(2)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

1

Bookmarked

272

Total users

185

Monthly active users

2 hours ago

Last modified

Share

Video & Audio Transcriber — Whisper Speech-to-Text for Any URL

Billed by the second — $0.0008/second ($0.048 per minute) for video AND audio · no API key · text + timestamped segments + optional word-level timings + SRT + VTT · 99+ languages, auto-detected

Transcribe any video or audio URL to text with OpenAI Whisper running inside the Actor (faster-whisper). No external API, no key, no rate limits. Paste links from YouTube, TikTok, Instagram, Facebook, X (Twitter), Rumble, SoundCloud, a podcast RSS feed, or a direct media file (mp3, mp4, wav, m4a, …) and get the full transcript, timestamped segments, ready-to-use SRT and VTT subtitles, and the detected language. Works on media that has no captions at all.

How the Video & Audio Transcriber works

Why use this transcriber

  • One Actor for both media types. Video and audio at the same rate — no separate video and audio products with different prices.
  • Per-second billing. A 20-second Reel is billed 20 seconds, not a rounded-up minute. Short-form media costs what it actually is.
  • Real Whisper transcription, not caption scraping. The audio track is extracted and transcribed, so it works on videos without subtitles.
  • Podcast feeds expand automatically. Point it at an RSS/Atom feed and the newest episodes become transcripts (maxEpisodesPerFeed).
  • Translate while you transcribe. translateToEnglish: true outputs an English transcript and English subtitles from any source language.
  • Subtitles as files, not just strings. Every item stores a downloadable .srt and .vtt in the run's key-value store (srtFileUrl / vttFileUrl).
  • Self-contained. All three Whisper models are baked into the image — nothing downloads at run time, and you never provide an API key.

Supported inputs

Input typeExampleNotes
TikTok videohttps://www.tiktok.com/@user/video/…audio extracted automatically
YouTube video / Shorthttps://www.youtube.com/watch?v=…cookies input available for the bot-check gate
Instagram Reel / posthttps://www.instagram.com/reel/…public content
Facebook videohttps://www.facebook.com/watch?v=…public content
X (Twitter) videohttps://x.com/user/status/…public content
SoundCloud trackhttps://soundcloud.com/user/trackaudio transcribed directly
Dailymotion videohttps://www.dailymotion.com/video/…
Rumble videohttps://rumble.com/v…
Podcast RSS/Atom feedhttps://feed.syntax.fm/rssnewest maxEpisodesPerFeed episodes
Direct media filehttps://…/episode.mp3mp3, mp4, wav, m4a, flac, ogg, webm, mov, …
1800+ other sitesBilibili, Reddit, Snapchat, Xiaohongshu, Kwai, Likee, …anything yt-dlp supports. Vimeo is currently broken upstream in yt-dlp (OAuth 401).

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 summarization, RAG pipelines, or trend analysis.
  • Accessibility and compliance transcripts.
  • Monitor what creators or competitors say on video without watching hours of footage.

How it works

  1. Resolve — each URL is classified: social/video platform, podcast feed (expanded to episodes), or direct file. Every download tries a direct connection first and falls back to residential proxy only where networks block datacenter IPs; feeds and direct files never use it.
  2. Extract — yt-dlp downloads the audio track (video is never kept), ffmpeg trims it to your maxMinutesPerItem cap.
  3. Transcribe — faster-whisper (int8, VAD-filtered) runs on the file locally and returns language, segments and timings; the Actor builds the text, SRT and VTT and writes one dataset row per item.

Input configuration

FieldTypeDefaultDescription
mediaUrlsarrayVideo/audio/podcast/direct-file URLs, up to 50 per run
audioFilesarray (upload)Media uploaded straight from your computer; runs alongside mediaUrls. Give at least one of the two
languagestringauto-detectISO code (en, es, pt, de, …) to force a language
modelstringbasetiny (fastest) · base (fast) · small (most accurate). Clamped down if the run's memory cannot hold it — see below
translateToEnglishbooleanfalseOutput English translation instead of original language
wordTimestampsbooleanfalseAdd per-word start/end/confidence inside every segment (~15-25% slower)
maxMinutesPerIteminteger120Per-URL cap; longer media is transcribed up to the cap
maxEpisodesPerFeedinteger1Newest episodes taken per podcast feed
cookiesstring (secret)Netscape cookies.txt for YouTube bot-gate or restricted content
proxyConfigurationobjectresidentialUsed only for social networks; feeds and files go direct

Minimal input:

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

Output — key fields

FieldDescription
textFull transcript as one string
segments[{ start, end, text }] with seconds-precision timestamps; each also carries words when wordTimestamps is on
srt / vttReady-to-save subtitle strings
srtFileUrl / vttFileUrlDirect download links to the stored .srt / .vtt files
language / languageProbabilityDetected language and confidence
title, uploader, publishedAt, thumbnailUrlMedia metadata from the source
durationSeconds / transcribedSecondsFull source length vs. what was transcribed (after the cap)
billedSecondsSeconds charged for this item — what the bill is actually computed from
billedMinutesThe same figure in minutes, for pipelines built against the old per-minute billing
wordCount, model, task, engine, sourceType, platformRun metadata per item
errornull on success; failed items keep the error message and are never charged

Output sample

{
"url": "https://traffic.megaphone.fm/FSI3025045146.mp3",
"inputUrl": "https://feed.syntax.fm/rss",
"sourceType": "podcast-episode",
"platform": "podcast",
"title": "1023: Mosh, Caddy & Tailscale: A Remote Dev Deep Dive",
"uploader": "Syntax - Tasty Web Development Treats",
"publishedAt": "2026-07-22T11:00:00.000Z",
"durationSeconds": 2926.8,
"transcribedSeconds": 120,
"billedMinutes": 2,
"language": "en",
"languageProbability": 0.9956,
"model": "base",
"text": "Everybody has built tools for agents nobody is building actual products …",
"wordCount": 342,
"segments": [
{ "start": 0, "end": 6.04, "text": "Everybody has built tools for agents nobody is building actual products once I got team hooks" }
],
"srt": "1\n00:00:00,000 --> 00:00:06,040\nEverybody has built tools for agents …",
"vtt": "WEBVTT\n\n00:00:00.000 --> 00:00:06.040\nEverybody has built tools …",
"srtFileUrl": "https://api.apify.com/v2/key-value-stores/…/records/001-1023-mosh-caddy.srt",
"error": null
}

Pricing

Run memory

Memory decides two things: which Whisper model fits, and how much CPU Apify gives the run (roughly one vCPU per 4 GB). Measured peak usage is ~570 MB for tiny, ~906 MB for base and ~1503 MB for small. The 2 GB floor holds all three, and if a run is ever given less the Actor drops to the largest model that fits rather than being OOM-killed mid-decode:

Run memoryBest for
2 GB (default)Reels, TikToks, short video, mixed use. Every model fits, and the per-GB start fee stays low — which is most of the bill on a clip under a minute
4-8 GBPodcasts, interviews, long video. Decode time dominates there, and Apify gives roughly one vCPU per 4 GB, so the extra memory pays for itself

The start fee is charged per GB, so low memory is genuinely cheaper on short clips and genuinely slower on long media. Pick per job.

Pay-per-event: $0.0008 per second of media transcribed ($0.048 per minute) — the same rate whether the source is video or audio — plus a one-time actor-start fee of $0.005 per GB of run memory. Billing is per second, so a 40-second clip is billed 40 seconds rather than a full minute; failed and skipped items are never charged. No separate platform-usage bill.

MediaCost (default 4 GB run)
1-minute TikTok$0.09
10-minute YouTube video$0.54
45-minute podcast episode$2.29
10 × 1-minute Reels in one run$0.54

FAQ

Do I need an OpenAI or any other API key? No. Whisper runs inside the Actor container. You only provide URLs.

Which sites work? Anything yt-dlp supports (1800+ extractors) plus podcast RSS/Atom feeds and direct media links. TikTok, YouTube, Instagram, Facebook, X and Rumble are tested paths.

What about videos without captions? They work — this transcribes the actual audio, so captions are never required.

How accurate is it? The default base model handles clear speech well across 99+ languages and runs ~2× faster than small. For hard audio (music beds, crosstalk, heavy accents), set model: "small" — the most accurate option.

How fast is it, and does memory matter? Roughly 3–5× faster than realtime at the default 4 GB. Apify allocates one CPU core per 4 GB of run memory, so 8 GB runs transcribe long media about twice as fast. Progress is visible live in the run log and the run's status message (e.g. "transcribed 24/65 min, ~9 min left").

Can it translate? Yes — set translateToEnglish: true and the transcript and subtitles come out in English regardless of source language.

YouTube says "Sign in to confirm you're not a bot"? Paste a Netscape cookies.txt from a logged-in session into the cookies field. The field is stored as a secret.

How do long files bill? A 3-hour source with maxMinutesPerItem: 120 transcribes and bills 120 minutes. Lower the cap to bound spend per item; the Actor also stops before exceeding your run's maximum cost.

An Instagram/Facebook scontent… CDN link fails with "no audio track"? Those raw CDN URLs are usually DASH video-only renditions — the audio lives in a separate stream. Paste the post/reel page URL (e.g. https://www.instagram.com/reel/…) and the Actor downloads the version that includes audio.

Live streams? Ongoing streams can't be transcribed — the recording has to finish first. A stream that ended within the last few hours may still be processing on YouTube's side (downloads are slow and unreliable until then); the Actor tells you when that's the case — retry once the regular video is published.

Spotify links? No — Spotify streams are DRM-protected. Use the show's RSS feed instead (most podcasts have one).

Support

Found a bug or want another output field? Open an issue on the Actor's Issues tab — it is monitored.

🤖 For AI Agents & LLM Apps

Compact reference for AI agents calling this actor via the Apify MCP server or the Apify API (actor: memo23/video-audio-transcriber).

Purpose: Turn any video/audio/podcast URL into transcript data (full text + timestamped segments + SRT/VTT + language) with one call. No API key management — Whisper runs inside the Actor.

Minimal input (tested):

{ "mediaUrls": ["https://github.com/openai/whisper/raw/main/tests/jfk.flac"] }

Output fields (flat): url, inputUrl, sourceType, platform, title, uploader, publishedAt, thumbnailUrl, durationSeconds, transcribedSeconds, billedMinutes, language, languageProbability, task, model, text, wordCount, segments[] ({start,end,text}), srt, vtt, srtFileUrl, vttFileUrl, error.

Behaviors agents should know:

  • Podcast feed URLs expand to the newest maxEpisodesPerFeed episodes — one row each.
  • error is non-null on failed items and those rows are never charged; check it before consuming text.
  • Billing: media-second-transcribed × billedSeconds per item, $0.0008 each, plus a one-time apify-actor-start fee of $0.005 per GB of run memory. billedMinutes is still emitted as a convenience field. Bound spend with maxMinutesPerItem and the run's maximum cost setting.
  • Long media takes real time (roughly 0.2–0.5× the media length depending on model); set your wait/polling timeout accordingly, or use tiny for drafts.

Explore more actors

⚠️ Disclaimer

This Actor processes only publicly accessible media that you point it at. Use it in compliance with each platform's Terms of Service and applicable laws, including copyright: transcribe content you have the right to process. You are responsible for how you use the output. The Actor does not bypass logins, paywalls, DRM, or any access controls; the optional cookies input only authenticates your own session to content you can already access.

SEO Keywords

video transcriber, audio transcriber, whisper transcription, video to text, audio to text, speech to text API, TikTok transcript, YouTube transcript generator, Instagram Reel transcript, SoundCloud transcript, Dailymotion transcript, Rumble transcript, podcast transcription, RSS feed transcriber, SRT generator, VTT subtitles, subtitle generator, transcribe mp3, transcribe mp4, no API key whisper, faster-whisper actor, translate video to English, Apify transcription actor.