Podcast & Audio Transcriber — Whisper Large-v3, SRT, RSS
Pricing
Pay per usage
Podcast & Audio Transcriber — Whisper Large-v3, SRT, RSS
Transcribe podcasts, audio and video to text with Whisper large-v3. Paste an RSS feed, Apple Podcasts link or file URL and get timestamped transcripts, SRT/VTT subtitles and the spoken language. Uses the publisher's own transcript when there is one, and monitors shows for new episodes.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Reza Baghestani
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Share
Podcast & Audio Transcriber
Transcribe podcasts, audio and video files to text with Whisper large-v3. Paste a podcast RSS feed, an Apple Podcasts link or a direct link to a file. You get the full transcript, timestamped segments, the spoken language and SRT/VTT subtitle files, one row per episode.
- Podcast-aware: give it a feed or an Apple Podcasts show and it picks the newest episodes, with real episode titles, show names and publish dates.
- Publisher transcripts first: many podcast hosts publish a timed transcript in the feed. When one exists, it is returned straight away, without transcribing the audio, at a small flat price.
- Accurate model: Whisper large-v3, the most accurate open Whisper model, or large-v3 turbo when speed matters more.
- Long episodes: audio is split at pauses into pieces of about 10 minutes and transcribed in parallel, so a 90-minute episode takes about a minute.
- Monitoring: turn on
onlyNewand run it on a schedule. Each new episode is transcribed exactly once. - Subtitles: SRT and WebVTT files for every transcript.
- Built for AI agents: flat, predictable rows that agents can use through Apify's MCP server or API.
Use cases
- Show notes, blog posts and SEO from podcast episodes.
- Search and RAG over a podcast's back catalogue or a set of shows.
- Media monitoring: follow shows in your industry and get a transcript of each new episode.
- Research and analysis of interviews, lectures and talks.
- Subtitles and accessibility for audio and video you publish.
You can run it on a schedule, call it from the Apify API (Python, JavaScript or plain HTTP), or connect it to n8n, Make, Zapier and other Apify integrations.
Input
| Field | Default | What it does |
|---|---|---|
mediaUrls | required | Podcast RSS feeds, Apple Podcasts show or episode links, and direct links to audio/video files, in any mix |
maxEpisodesPerFeed | 1 | Newest episodes to take from each feed or Apple show (up to 100) |
publishedAfter | – | Only episodes published after a date (2026-10-01) or a period back from now (30 days, 12 hours) |
onlyNew | false | Skip episodes already transcribed by this monitor; only episodes newer than the newest one already done count as new |
stateName | default | Name of the monitor, so separate monitors don't interfere |
usePublisherTranscripts | true | Use the feed's own timed transcript (VTT, SRT or JSON) when there is one |
language | auto | ISO 639-1 code (en, de, fa, …) if you already know the language |
quality | accurate | accurate = Whisper large-v3, fast = large-v3 turbo |
vocabulary | – | Names and terms to expect, comma-separated, so they are spelled right more often |
maxMinutesPerItem | 120 | Only the first N minutes of each episode are transcribed and billed (up to 600) |
subtitles | true | Save SRT and VTT files and link them from each row |
Example input
{"mediaUrls": ["https://feeds.npr.org/510289/podcast.xml","https://podcasts.apple.com/us/podcast/the-daily/id1200361736","https://example.com/interview.mp3"],"maxEpisodesPerFeed": 2,"onlyNew": true,"stateName": "weekly-shows","vocabulary": "Lex Fridman, Kubernetes, Tehran"}
Output
Every row has a row_type:
row_type | Meaning | Charged |
|---|---|---|
transcript | One episode or file | yes |
error | Bad link, unsupported site, unreadable feed or file, transcription failure | no |
notice | Expected outcome, e.g. no_new_episodes in monitoring mode | no |
Example transcript row (shortened)
{"row_type": "transcript","title": "Should we all be getting tariff refunds right now?","show_title": "Planet Money","published_at": "2026-10-09T21:07:00+00:00","feed_url": "https://feeds.npr.org/510289/podcast.xml","media_url": "https://…/default.mp3","source_duration_sec": 2011.66,"transcribed_sec": 2011.66,"truncated": false,"chunks": 4,"language": "en","transcript_source": "whisper","model": "whisper-large-v3","text": "Support comes from … This is Planet Money …","segments": [{"start": 0.0, "end": 6.2, "text": "Support comes from our 2026 lead sponsor …", "speaker": null}],"srt_url": "https://api.apify.com/v2/key-value-stores/…/records/subtitles-….srt","vtt_url": "https://api.apify.com/v2/key-value-stores/…/records/subtitles-….vtt"}
Rows from a publisher transcript have transcript_source: "publisher", the transcript's link in publisher_transcript_url, and speaker names in segments[].speaker when the publisher labels them.
Error codes: invalid_input, invalid_url, unsupported_source, not_media, download_failed, file_too_large, feed_unavailable, invalid_feed, episode_not_found, stt_busy, transcription_failed. Notice codes: no_new_episodes, no_matching_episodes, no_episodes, too_many_episodes, charge_limit_reached.
Pricing
Free during early access: you only pay Apify's usual platform usage for your own runs. Pay-per-event pricing (per second of audio transcribed, and a small flat fee per publisher transcript) will be introduced later. Error and notice rows will always be free.
Limits, stated plainly
- Not supported: YouTube, Spotify, TikTok, Instagram, Facebook, X and SoundCloud links. Use the show's RSS feed or Apple Podcasts link, or a direct file link.
- Accuracy depends on the audio and the language. English is very good. Some languages, Persian for example, come back with more spelling mistakes. The
vocabularyfield helps with names, but does not guarantee them. - No speaker labels for transcribed audio. Speaker names appear only when the publisher's transcript has them.
- Apple episode links work for the 200 newest episodes Apple lists for a show.
- Busy service: when the speech-to-text service is at capacity, the episode gets a free
stt_busyerror row. Try again later.
Privacy
To transcribe it, the audio (converted to compressed mono speech) is sent to Groq's speech-to-text API. Groq's own data policy applies to the audio it receives. Publisher transcripts are fetched from the publisher. This Actor keeps nothing beyond the run's own dataset and key-value store. Only transcribe audio you have the right to use.
FAQ
How do I transcribe a podcast episode?
Paste the show's RSS feed or Apple Podcasts link into mediaUrls. The newest episode is transcribed. Raise maxEpisodesPerFeed for more, or paste an Apple episode link for one specific episode.
How do I get a transcript of every new episode automatically?
Turn on onlyNew, give the monitor a stateName, and run the Actor on an Apify schedule (for example daily). Each run transcribes only episodes published since the last one.
Can I get subtitles? Yes. Every transcript row links to an SRT and a WebVTT file.
Which languages are supported?
Whisper detects and transcribes about 100 languages. Set language if you know it, to skip detection.
Why did an episode come back so fast?
The feed had a publisher transcript, so no audio was transcribed. Set usePublisherTranscripts to false to transcribe the audio anyway.
Development
python -m venv .venv && .venv/Scripts/pip install -r requirements-dev.txt # or .venv/bin/pip.venv/Scripts/python -m pytest # offline tests; ffmpeg comes from imageio-ffmpeg
The speech-to-text client speaks the OpenAI transcription API, so the provider is chosen by env vars: GROQ_API_KEY or STT_API_KEY (secret), and STT_BASE_URL (default https://api.groq.com/openai/v1). scripts/deploy_source.py <actorId> uploads the source to Apify and builds it.