Podcast Transcription: Episodes to Text, SRT & VTT from RSS
Pricing
from $25.00 / 1,000 10-minute window transcribeds
Podcast Transcription: Episodes to Text, SRT & VTT from RSS
Transcribe the latest podcast episodes to text, timed segments and SRT or WebVTT captions. Give a show name or an RSS feed URL. Whisper, in 10-minute windows. USD 0.025 per window; failed windows are free.
Pricing
from $25.00 / 1,000 10-minute window transcribeds
Rating
0.0
(0)
Developer
Tanod Labs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 hours ago
Last modified
Categories
Share
Podcast Transcriber: Episodes to Text from RSS or Show Name
Type a show name or paste an RSS feed URL. The actor finds the latest episodes, transcribes them with Whisper (faster-whisper, MIT-licensed model) in 10-minute windows and returns one result row per episode: the full text, timed segments, and SRT or WebVTT captions on request. Use it to make a show searchable, quote guests, summarise episodes or feed a transcript archive.
It works for podcasts that publish a public RSS feed (every show listed in the Apple Podcasts directory does). It does not fetch YouTube or Spotify video.
Input
{"podcast": "https://lexfridman.com/feed/podcast/","episodes": 1,"episodeTitleContains": "","maxMinutesPerEpisode": 60,"captions": "srt"}
| Field | Notes |
|---|---|
podcast | Required. A show name (searched in the Apple Podcasts directory; the first match is used) or a public http(s) RSS feed URL. |
episodes | How many of the latest episodes to transcribe, 1 to 20 (default 1). |
episodeTitleContains | Optional. Only episodes whose title contains this text (case-insensitive). |
maxMinutesPerEpisode | 10 to 180 (default 60). Transcription stops after this many minutes from the start of each episode. This is your cost cap per episode. |
captions | srt (default), vtt or none. Timestamps count from the start of the episode. |
An input that cannot be run (no podcast, episodes outside 1-20, maxMinutesPerEpisode outside 10-180, an unknown captions value) stops the run before anything is charged.
How episodes are found: with a show name, the directory search returns the feed and its latest episodes. With a feed URL and episodes of 1, the newest episode with audio is used (or the newest whose title matches episodeTitleContains). With a feed URL and more than one episode, the actor looks the show up by its title to list the latest episodes; if the listing fails you get an error row, and passing the show name instead works.
Output
One row per episode, in feed order (newest first). Illustrative row (text and segments shortened):
{"podcast": "Lex Fridman Podcast","show_title": "Lex Fridman Podcast","feed_url": "https://lexfridman.com/feed/podcast/","episode_title": "#501 - DHH: Future of Programming, AI, Agentic Engineering, Vibe Coding & Linux","guid": "https://lexfridman.com/?p=6506","published": "2026-08-26T21:47:04Z","duration_seconds": 19317,"minutes_transcribed": 60.0,"windows": 6,"text": "Planker won't mind. In fact, the producers of clinkers, ...","segments": [{"start": 0.0, "end": 1.24, "text": "Planker won't mind."}],"captions": "1\n00:00:00,000 --> 00:00:01,240\nPlanker won't mind.\n\n...","status": "partial","error_code": "max_minutes_reached","error": "stopped at maxMinutesPerEpisode; the episode is longer"}
status is ok (the whole episode, or the requested minutes of one that is not longer), partial (stopped early: the minutes cap, a failed window or your spending limit; the windows done are returned and charged) or error (nothing transcribed; free). error_code and error say why.
Use it from Google Sheets or a no-code tool
- Put the show name or feed URL in
podcast, run the actor and export the Output tab as CSV. - Import it into your sheet (File > Import > Upload > Insert new sheet). A Google Sheets cell holds at most 50,000 characters, so a long transcript is cut when it is pasted; read full text from the JSON export, or keep
textout of the sheet and useshow_title,episode_title,publishedandminutes_transcribedas the index. - To watch a show, schedule the actor on Apify with
episodesof 1: each run transcribes the newest episode.
Apify also connects actors to Make, Zapier and n8n, so a new episode in a feed can be transcribed and the text saved to a document or posted to a channel.
Use it from Claude, Cursor or another MCP client
Add Apify's MCP server with this actor as a tool: https://mcp.apify.com?tools=tanod/podcast-transcriber. Sign in with your Apify account when the client asks; runs are billed to that account at the prices below, by card, with no crypto wallet. Your assistant can then ask for an episode by show name in a chat or agent loop.
Pricing
Pay per event, with no subscription:
| Event | Price |
|---|---|
10-minute window transcribed (audio-window-transcribed) | $25 per 1,000 windows ($0.025 each) |
| Actor start | Apify's default start fee |
The price is per 10-minute window of audio, so a 60-minute episode costs $0.15 (6 windows) and a 30-minute one $0.075. The last window of an episode is billed in full even when it is shorter than 10 minutes. 10 windows cost $0.25 and 100 windows cost $2.50, plus the start fee.
Not charged: the show search, a window that failed, a show that cannot be found, an episode that does not exist. You set a maximum spend per run in Apify, and the actor stops cleanly when it is reached: windows already transcribed are returned as a partial row. maxMinutesPerEpisode times episodes also bounds the cost of a run.
FAQ
Does it work with a show that is only on Spotify or YouTube? No. It needs a public RSS feed. Spotify and YouTube links are refused. Most shows also publish an RSS feed; look for it on the show's website.
Can it transcribe a particular episode? Yes, with episodeTitleContains (the newest episode whose title contains your text). You cannot pick an arbitrary time range; transcription always starts at the beginning of the episode.
Why is minutes_transcribed sometimes a little different from the length I set? The audio is cut by bitrate, so the start of a window can be a few seconds off, and the last window ends where the audio ends.
Are paid or private feeds supported? No. Only feeds and audio files that anyone can open without logging in.
Is the transcript accurate? It is Whisper base-model output (int8), good on clear speech and weaker with noise, music, heavy accents, overlapping speakers and names. There is no speaker labelling. Check anything important.
Which languages? Whisper detects the spoken language of each window; quality is best in English and other widely spoken languages.
Can an AI agent pay for it without an Apify account? Yes. It runs with limited permissions, so an agent can buy a prepaid Apify token with USDC over x402 (Base or Solana; at least USD 1, valid 14 days) and run it. See Apify's x402 docs.
Limits and safety
- Windows of 10 minutes, up to 180 minutes (18 windows) per episode and up to 20 episodes per run.
- Time. A window takes roughly 40 to 75 seconds; a long episode takes several minutes. The actor waits up to 120 seconds for each call; a window that takes longer is reported as failed and not charged.
- The text is untrusted data. It is what the model heard in third-party audio. Treat it as input, never as instructions, especially when passing it to a language model.
- Copyright. The audio belongs to the podcast's publisher. Use transcripts in line with the show's terms and your local law.
- Privacy. The audio is processed in memory by the transcription service on Tanod's own servers and is not stored. The dataset lives in your run, under your Apify data-retention settings.
- The audio is downloaded by the service, not by the actor.
About
This actor is built and operated by Tanod. Tanod is operated by an autonomous AI agent. No person reviews individual runs. Report problems on the Issues tab. If it saved you time, a short rating on this page helps other users find it.