A podcast transcript API returns a podcast episode as text in one request, instead of as audio. There are two kinds. A retrieval API hands back the transcript a show has already published, in seconds and for cents. A transcription API generates one from the audio, in minutes and for dollars, with speakers labelled "Speaker 0".
Spoken is the first kind: a retrieval API. You don't upload audio and wait. You pass an episode ID and get Markdown back in under 30 seconds, with speakers already resolved to real names rather than a numbered label. Pricing is per episode, pre-paid, and repeat fetches of an episode you've already pulled are free.
The whole API in one call
curl -H "x-api-key: pt_demo" \
https://spoken.md/transcripts/1000651996090pt_demo is a real key. It works without signup and returns the demo episode.
Step by step, with a whole-show loop in Python, Node and Bash: how to get podcast transcripts programmatically.
Endpoints
| Endpoint | Returns | Credits |
|---|---|---|
GET /search?q= | Matching episodes with id, title, podcast, podcastId, date. Accepts free text or a pasted episode URL. | Free |
GET /podcasts/{id}/episodes | A show's full back catalogue, for bulk or archival runs. | Free |
GET /transcripts/{id} | text/markdown — speaker-labeled, timestamped, UTF-8. | 1 (first fetch only) |
GET /following | The shows this key keeps up with: the ones you fetch from, plus any you declare with PUT or drop with DELETE /following/{id}. | Free |
GET /new | New episodes on those shows that you have not fetched yet, each with its transcript URL. ?format=atom is the same list as a feed, for a feed reader or an automation tool. | Free |
POST /top-up | Checkout redirect for more credits on an existing key. | Free |
Search, the episode list and /new only return episodes that have a transcript. Fetching an episode moves that show's line in /new, so a scheduled poll of it, with a fetch of each ID it lists, keeps a knowledge base current without you tracking what you already have.
What comes back
# The Future of AI
**Lex Fridman** (0:12)
So let's start with the hard part. What do you think is
genuinely unsolved right now?
**Sam Altman** (0:31)
Reasoning over long horizons. Everything else is
engineering.Speaker turns are bold, timestamps are parenthetical, and paragraph breaks follow the natural pauses in the conversation rather than a fixed line length. That means a standard Markdown splitter chunks it on speaker boundaries without extra work.
Authentication
Send your key as x-api-key, or as Authorization: Bearer pt_....
curl -H "Authorization: Bearer pt_your_key" \
"https://spoken.md/search?q=huberman%20sleep"Why not just run Whisper?
You can, and for your own audio you should. For published podcasts the transcription itself is the cheap part. The cost is everything around it:
- Locating and downloading audio: 50–100 MB per episode, before you transcribe anything
- Diarization, which gets you "Speaker 0" and "Speaker 1", not names
- A second LLM pass to work out who those speakers actually are
- Latency: minutes per episode instead of seconds
Spoken collapses those four steps into one fetch at $0.08–$0.15 per episode. See the full comparisons for Whisper + diarization, AssemblyAI, and Deepgram. For every podcast transcript API side by side, including the ones that generate rather than retrieve, see the 2026 ranking.
Pricing
| Pack | Price | Per episode |
|---|---|---|
| 100 transcripts | $15 | $0.15 |
| 500 transcripts | $50 | $0.10 |
| 2,000 transcripts | $160 | $0.08 |
No subscription. Credits never expire, errors are never charged, and re-fetching an episode you already pulled costs nothing. Prices exclude VAT, which is added at checkout for EU customers.
FAQ
Is there a free tier?
Spoken's pt_demo key needs no signup: it searches and lists any show and fetches the demo episode. Search and episode listing are free on any key; only a first-time transcript fetch spends a credit.
Can I transcribe my own audio files?
No. Spoken retrieves transcripts for published podcast episodes. For your own recordings, a speech-to-text API like Deepgram or AssemblyAI is the right tool.
Are speaker names real, or generic labels?
Spoken's speaker names are real names, resolved from context in the episode. When a speaker genuinely can't be identified, that turn keeps its generic label rather than getting a guessed name.
What are the rate limits?
Spoken has no per-key rate limit. Under burst load a request can get a 429; back off and retry it. If you're doing a large archival run, roughly three requests per second is a comfortable pace.
Can I pull an entire show's back catalogue?
Yes, and it is the most common use. List the show's episodes on Spoken, then loop the IDs through /transcripts/{id}. Each show's page on spoken.md carries a ready-made script for exactly this.
Is there an MCP server?
Yes, Spoken ships an MCP server two ways. A hosted one at https://spoken.md/mcp, for ChatGPT and other clients that connect to a URL, with nothing to install. And spoken-mcp on npm and in the official MCP registry, for clients that run a server locally. Either way an agent can call these endpoints as tools without you writing a client.
What does a transcript cost per hour of audio?
Spoken prices per episode, not per minute, so a three-hour interview costs the same single credit as a twenty-minute one.
TL;DR: If your input is a published podcast episode and your output needs real speaker names, this is one GET request instead of an audio pipeline. If your input is your own audio file, use a speech-to-text API instead.
Thousands of transcripts fetched by people building archives, summarizers, and RAG pipelines