Skip to main content
List episodes across the catalog with rich filters: by podcast, person, company, language, date range, duration, or transcript availability. Use this for episode-level discovery when you only need metadata (title, duration, speakers, counts). For dialogue around a person in any episode, use particle_podcast_find_mentions. For ranked retrieval by topic, use particle_podcast_search_transcripts.

Inputs

FieldTypeRequiredDefaultDescription
podcast_slugstringnoPodcast slug, internal ID, or numeric iTunes ID. Restrict to one podcast.
person_slugstringnoPerson slug from particle_person_resolve or particle_entity_resolve (e.g. "sam-altman"). Episodes featuring or mentioning the person. Also accepts a bare entity slug for non-person entities like places.
company_slugstringnoCompany slug, domain, or ID. Resolves to the linked entity.
rolestringnoRole filter when person_slug or company_slug is set. One of: guest, host, panelist, correspondent, mention.
published_afterstringnoISO 8601 date or date-time.
published_beforestringnoISO 8601 date or date-time.
languagestringnoISO 639-1 language code (e.g. "en").
has_transcriptbooleannofalseWhen true, return only episodes with a completed transcript. false or omitted means no transcript filter.
min_durationinteger (≥0)noMinimum episode duration in seconds.
max_durationinteger (≥0)noMaximum episode duration in seconds.
limitinteger (1–50)no10Episodes per page.
cursorstringnoOpaque pagination cursor.

Output

A markdown document with ## Episodes (N) and one ### Episode title section per episode. Each section carries bulleted KV rows: - **Podcast:**, - **Published:**, - **Episode slug:**, - **Duration:**, - **Counts:** (segments / clips / entities), and - **Speakers:**. The Speakers row is a comma-separated list with up to 6 names; entries with linked entities render as Name (entity_slug). When more pages exist, a horizontal rule and a **Cursor:** <value> line are appended; pass that value back as cursor to fetch the next page. Sample (podcast_slug="6-minute-english", limit=2):
## Episodes (2)

### Should we eat ultra-processed food?

- **Podcast:** 6 Minute English
- **Published:** 2026-04-30
- **Episode slug:** should-we-eat-ultra-processed-food
- **Duration:** 402s
- **Counts:** 12 segments, 0 clips, 5 entities
- **Speakers:** Hannah Gelbart (hannah-gelbart), Pippa, speaker_2, speaker_3, Phil, Annabel Rackham (annabel-rackham)

### Why are we all so stressed?

- **Podcast:** 6 Minute English
- **Published:** 2026-04-23
- **Episode slug:** why-are-we-all-so-stressed
- **Duration:** 402s
- **Counts:** 9 segments, 0 clips, 4 entities
- **Speakers:** Iqra Farooq, Neil, Becca, Claudia Hammond (claudia-hammond)
---

**Cursor:** r.4gfFC6
The string after - **Episode slug:** is what you pass back as episode_slug to particle_podcast_get_episode or particle_podcast_find_mentions.

Example

Agent calls: particle_podcast_list_episodes {
  "person_slug": "marc-andreessen",
  "role": "guest",
  "published_after": "2025-01-01",
  "has_transcript": true,
  "limit": 20
}