Skip to main content
The cross-podcast episode endpoint is the primary discovery tool. Filter by podcast, entity, company, language, date range, or duration. Every episode comes with sub-resources for transcripts, segments, clips, speakers, entities, and topics.
Tracking new episodes as they’re ingested? Don’t poll this list with since — use the episode feed, a resumable poll that returns each new episode exactly once, or the real-time episode stream (Enterprise).
Available to MCP agents as particle_podcast_list_episodes and (per-episode) particle_podcast_get_episode.

List episodes

Response (truncated)
The has_transcript, segment_count, clip_count, and entity_count fields tell you what enrichment data is available before you fetch any sub-resource. transcript_status says where the episode stands on the way to a transcript; see transcript status and the back catalogue.

Filter parameters

Holding an Apple Podcasts episode ID (the ?i= value in an Apple Podcasts URL) or a Spotify or YouTube episode link instead? That resolves through GET /v1/podcasts/episodes/lookup, not a filter here. Combine freely — for long-form transcribed Sam Altman episodes from this month, for example:

Get a single episode

The full Episode response is documented in the API reference.

Which audio URL to use

Each episode carries two audio URLs:
  • url is the audio file as the podcast’s feed publishes it. It often passes through a measurement or ad-insertion service such as Podtrac, which counts the download and can insert different ads each time. Use it to play the whole episode to a listener, so the publisher’s downloads and ad impressions are counted.
  • audio_url is our CDN copy, and every timestamp in our responses (transcript lines, segments, clips, mentions) is measured against it. Use it when no one will listen, and whenever you play or cut audio from a specific point: the ads inserted into url can vary in length, so its timing won’t match ours.

Episodes for a specific podcast

A convenience shape of list-episodes filtered by podcast:

Transcript status and the back catalogue

Every episode carries transcript_status: When a show joins the catalog we ingest and transcribe its newest episodes, and every episode it publishes after that. Its older episodes — up to the 1,000 most recent PodcastIndex lists, plus anything else its own feed still carries — are its back catalogue: listed with their feed metadata, but with no transcript, speakers, entities, topics, segments or clips. The episode lists leave the back catalogue out unless you ask for it with transcript_status, so an integration that pages through episodes to fetch transcripts sees exactly what it always has. To see a show’s whole history, pass podcast_id and one of:
  • any: every episode we know of, newest first, transcribed or not.
  • untranscribed: episodes without a transcript, whether processing, unavailable, or in the back catalogue.
  • requestable: back-catalogue episodes only, including those already queued.
A back-catalogue episode in the response (example):
Its duration_seconds is the length the publisher declares, and it has no slug or audio_url until it is transcribed. Until it is transcribed, which you can request, its transcript, segments, speakers, entities, topics, ads, clips and related episodes answer 409 transcript_not_available rather than 404, so an episode that exists but is untranscribed is never mistaken for one that does not exist. An unavailable one answers 422 episode_audio_unavailable. GET /v1/podcasts/episodes/{id} returns it by id, and episode lookup resolves its Apple Podcasts ID, feed guid or PodcastIndex ID. Filters that select transcript-derived content — entity_id, person_id, company_id, fully_ingested — match no back-catalogue episodes. To see how much of a show’s history exists and how much is transcribed without paging its episodes, request GET /v1/podcasts/{id}?include=coverage. The coverage section counts discovered episodes by transcript_status and by year, as of counted_at (the counts refresh hourly; each episode’s own transcript_status is always current), and says whether the show’s back catalogue has been imported and whether it is complete (back_catalogue.complete is false when PodcastIndex listed its maximum of 1,000 episodes, so older ones may exist that neither source lists):
episode_count on the podcast counts only the episodes we have ingested; use coverage.discovered_episode_count for the show’s whole known history, and remember that counts derived from transcripts, such as sponsors or guest appearances, cover only the transcribed episodes.

Sub-resources

Every episode exposes its enrichment data as sub-resources:

Speakers

Response (truncated)
By default this returns the people taking part in the conversation — HOST, GUEST, PANELIST and CORRESPONDENT. Use role to widen or narrow the set; values are case-insensitive, and roles always come back in uppercase.
Response (truncated)

Speaker roles

Every speaker carries exactly one of these roles. The four in the default set are marked; the rest require naming them in role.
This list is exhaustive and stable, across the whole archive — you can branch on role without a fallback case.
The entity_slug (when present) bridges to the knowledge graph.

Entities

Returns people, organizations, places, products, and concepts mentioned in the episode, ranked by salience — a relative relevance score for that episode where higher values indicate the entity is more central to the discussion.
Response (truncated)
For the actual dialogue around mentions, see transcripts → mentions.

Topics

Topics are drawn from the hierarchical topics taxonomy — useful for routing episodes to category-specific feeds.