particle_podcast_list_episodes (person, company, entity, podcast, keyword, guests’ expertise, language, duration, transcript availability) per day, week, or month, plus range totals. keyword_search additionally counts matching transcript segments per bucket — exact counts, no pagination floors. semantic_search does the same by meaning — same embedding and similarity threshold as particle_podcast_search_transcripts, so the counts agree with search results (for pathologically broad queries the mention counts can be lower bounds); it requires published_after and cannot be combined with keyword_search.
Use this for trend charts instead of paging particle_podcast_list_episodes or particle_podcast_find_mentions once per period. Buckets are UTC-aligned, zero-filled, and Monday-aligned for weeks; a published_after/published_before inside a bucket produces a partial first or last bucket labeled with the full bucket’s start date. Omitting published_after aggregates all time — except with semantic_search, which always requires the lower bound. Ranges are capped at 1000 buckets.
At least one subject filter is required: podcast_slug, person_slug, company_slug, entity_slug, keyword_search, semantic_search, guest_occupation, or guest_field.
The guest_ filters count episodes by their guests’ expertise, with codes from particle_expertise_resolve. guest_occupation and guest_field count as a subject: guest_field alone charts how often a field’s experts are booked, and with company_slug it charts the company’s episodes featuring those experts. The other guest_ filters (guest_standing, guest_seniority, guest_capacity, guest_practicing, guest_in_field) only narrow a subject, so on their own they return missing_parameter; so does a guest_occupation that names a capacity, such as founders. Resolve the words to codes with particle_expertise_resolve first; on unresolved_reference, resolve and retry.
The guest_ filters are episode-level and never check who spoke. With keyword_search, a matching segment counts when its episode had such a guest, even if the host said the words, so the count is not “what the experts said”. For who said a keyword, use particle_podcast_get_share_of_voice with keyword_search.
Inputs
All
guest_ filters describe the same guest, so guest_occupation="cardiologists" with guest_practicing=true keeps episodes where one guest is a practicing cardiologist. A broad code covers everything below it. A word no occupation names may name a field or a capacity instead, and filters by it: guest_occupation="oncologists" is field 3211, guest_occupation="founders" is guest_capacity="executive_founder". An occupation or field that names nothing returns unresolved_reference with the closest codes as did-you-mean suggestions; guest_practicing without a detailed SOC 2018 guest_occupation returns validation_error.
Output
A markdown document with## Episode timeseries — per <interval>, **Range:**, **Total episodes:**, and **Distinct podcasts:** rows (plus **Total mentions:** when keyword_search or semantic_search is set, and a **Counts:** row when a broad semantic_search matched more segments than it could count in time, so the counts are lower bounds), followed by a table of buckets — Bucket | Episodes columns, with a Mentions column added when keyword_search or semantic_search is set. Buckets are contiguous and zero-filled in ascending order.
Sample (person_slug="sam-altman", interval="week", truncated):
Example
Related
- REST equivalent:
GET /v1/podcasts/episodes/timeseries. - For how often a person, company or brand is mentioned, with ad reads left out and the shows carrying the mentions, use
particle_podcast_get_mention_trends. This tool counts an episode for a company or entity named only in its ad reads, so for a brand that advertises heavily most of its count can be the brand’s own ads. - To split the mentions themselves by the speakers’ occupations or fields, use
particle_podcast_get_share_of_voice. - For the underlying episodes, use
particle_podcast_list_episodes; for the dialogue lines themselves,particle_podcast_find_mentions.