Podcast Transcription API — RSS feeds to episode transcripts avatar

Podcast Transcription API — RSS feeds to episode transcripts

Under maintenance

Pricing

Pay per event

Go to Apify Store
Podcast Transcription API — RSS feeds to episode transcripts

Podcast Transcription API — RSS feeds to episode transcripts

Under maintenance

Transcribe podcast episodes straight from an RSS feed. Pick the newest N per show, only episodes after a date, or only titles matching a phrase. Whisper runs inside the Actor — no API key. Show and episode metadata, text, SRT + VTT. Failed or silent episodes are never billed.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Dos

Dos

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

2 days ago

Last modified

Share

Point it at a podcast RSS feed and get transcripts of the episodes you actually want — the newest N of each show, everything published after a date, or only episodes whose title matches a phrase. Whisper runs inside the Actor (faster-whisper, int8, CPU), so there is no API key, no external service, and no per-provider markup. 99 languages, auto-detected. Optional translation to English.

Every item carries the show and episode metadata from the feed — show title, author, episode number, season, publish date, GUID — next to the transcript, so a podcast pipeline never has to resolve enclosure URLs or re-fetch the feed to find out what it just transcribed.

Built for podcast search, show-notes generation, clip finding, media monitoring and AI agents that need episodes as text.

What you get

One dataset item per episode:

{
"feed_title": "Gravity Assist",
"feed_author": "Brian Dunbar",
"episode_title": "Season 5, Episode 32: Finale",
"episode_number": 32,
"season": 5,
"published": "2022-08-12T18:21:00+00:00",
"episode_guid": "…",
"url": "https://www.nasa.gov/…/gafinale081222.mp3",
"status": "ok",
"language": "en",
"duration_seconds": 1864.3,
"billed_minutes": 32,
"n_segments": 214,
"n_words": 4930,
"text": "Full transcript as one string …",
"segments": [
{ "start": 0.0, "end": 6.48, "text": "Welcome back to the show." }
],
"srt": "1\n00:00:00,000 --> 00:00:06,480\nWelcome back to the show.\n",
"vtt": "WEBVTT\n\n00:00:00.000 --> 00:00:06.480\nWelcome back to the show.\n"
}

Episode selection

FieldDefaultWhat it does
feed_urlsup to 10 RSS/Atom feeds, 40 MB each
episodes_per_feed3how many matching episodes to take per show
published_after2026-08-01, or an ISO timestamp
title_containscase-insensitive substring match on the title
episode_urlsextra direct audio URLs, transcribed alongside the feeds

Filters combine: published_after and title_contains must both match. Selection runs in feed order — which is newest-first for virtually every show — and then takes the first episodes_per_feed.

Two deliberate behaviours worth knowing:

  • An episode whose feed gives no usable date survives a published_after filter. Dropping it would hide episodes because the publisher's XML is sloppy, which is not your problem to debug.
  • A direct episode URL pasted into feed_urls is detected and transcribed as a single episode instead of failing as a malformed feed.

Up to 50 episodes are queued per run, however the feeds divide it up.

Pricing — pay only for delivered transcripts

EventPriceCharged when
episode-transcribed$0.005an episode delivered a non-empty transcript
transcription-minute$0.008per started minute of audio transcribed

A 30-minute episode costs $0.245. A weekly show, 4 episodes a month, runs about $1.

There is no actor-start fee — a start fee bills you for failed runs, and this family never charges one.

The billing rule is deliberate: episodes that fail to download, cannot be decoded, or contain no recognizable speech are never billed — not even the per-episode fee. A feed that will not parse is reported in the dataset and costs nothing. Your cost ceiling per episode = $0.005 + $0.008 × Max minutes per episode (default 120).

Transcription options

FieldDefaultNotes
modelbasetiny / base / small — accuracy vs speed
languageautoISO code (en, ar, es, …) skips detection
tasktranscribetranslate = English text from any language
vad_filtertrueskip silence — faster, fewer hallucinated lines
max_minutes_per_episode120hard cost/length cap; longer episodes flagged truncated

tiny and base are baked into the image and start instantly; small downloads once at the start of the run (~1 minute extra).

Re-running without paying twice

Each run checkpoints the episode URLs it finished, so a migrated or resumed run never re-transcribes — and never re-charges — work it already delivered. Across runs, deduplicate on episode_guid: it is the identifier the feed itself considers stable.

Limits, stated plainly

  • CPU transcription: roughly 5–15 seconds of processing per audio minute with base, more with small. A 60-minute run timeout comfortably covers three 45-minute episodes with base; raise the timeout for longer batches or for small.
  • 10 feeds per run, 25 episodes per feed, 50 episodes per run, 250 MB per episode, 480 minutes max per episode.
  • Video podcasts work — the audio track is what gets transcribed.
  • Feeds behind a paywall or private RSS token work only if the enclosure URL itself is fetchable without a login.

The family

ActorUse it for
Podcast Transcription API (this one)RSS feeds → episode transcripts + metadata
Whisper Transcriberany audio/video file → transcript text
SRT Subtitles Generatormedia → finished .srt / .vtt caption files
PDF OCR Extractorscanned PDFs, Arabic + English OCR

Issues and requests

Open an issue on the actor's Issues tab — I read all of them.