Podcast transcript API

One GET request returns a published podcast episode as clean Markdown — real speaker names, timestamps, no audio handling.

Last updated August 2026

Spoken is a transcript retrieval API, not a speech-to-text 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 "Speaker 0". 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/1000651996090

pt_demo is a real key. It works without signup and returns the demo episode, so you can check the output shape before paying for anything.

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)
POST /top-up?key= Checkout redirect for more credits on an existing key. Free

Both search endpoints only return episodes that are actually fetchable, so an ID they hand you resolves to a transcript rather than a 404.

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_... — same credential, same privileges.

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:

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 transcripts rather than retrieve them — see the 2026 ranking.

Pricing

PackPricePer 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?

The pt_demo key works on every endpoint without signup. 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 — meetings, calls, interviews — a speech-to-text API like Deepgram or AssemblyAI is the right tool.

Are speaker names real, or generic labels?

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?

There's no per-key rate limit, but the service is capped fleet-wide against burst load. If you're doing a large archival run, roughly three requests per second is a comfortable pace; a 429 means back off and retry.

Can I pull an entire show's back catalogue?

Yes — that's the most common use. List the show's episodes, then loop the IDs through /transcripts/{id}. Each show's page carries a ready-made script for exactly this.

Is there an MCP server?

Yes. spoken-mcp is on npm and in the official MCP registry, so an agent can call these endpoints as tools without you writing a client.

What does a transcript cost per hour of audio?

Pricing is 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

No signup required — use API key pt_demo on any endpoint.

Price my show's archive

Full reference: llms.txt · auth.md