{"slug":"api-particle-pro-v1-podcasts-episodes-search-006047","title":"Search podcast episode content","host":"api.particle.pro","method":"GET","resource":"https://api.particle.pro/v1/podcasts/episodes/search","category":"search","description":"Search podcast episode content. To find podcasts (shows) by name or topic, use /v1/podcasts/search?q=….","price_listed":0.03,"price_asked":0.03,"state":"answering","state_label":"Answering","checks_7d":1,"answered_7d":1,"latency_ms_median":151,"reported_calls_30d":16,"reported_payers_30d":2,"networks":["eip155:8453"],"badge":"unverified","paid_checks_7d":0,"paid_ok_7d":0,"example_input":{"method":"GET","queryParams":{"language":"fr","since":"2024-01-01","until":"2024-06-01"},"type":"http"},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"method":{"enum":["GET"],"type":"string"},"queryParams":{"properties":{"company_id":{"description":"Optional company slug, domain, or ID. Resolves to the company's linked entity and applies as a filter.","type":"string"},"context":{"description":"Lines of surrounding dialogue around each matched line (1-15, default 1). Widens each match's transcript window in place — request more context instead of fetching the full transcript. Window size stays bounded even at the maximum.","format":"int64","type":"integer"},"cursor":{"description":"Opaque cursor from a previous response.","type":"string"},"entity_id":{"description":"Optional entity slug or ID. Filters results to episodes featuring this entity. For 'every line about X', use /v1/podcasts/mentions instead.","type":"string"},"entity_type":{"description":"Optional entity category slug. Filters to episodes that *mention* any entity in that category (e.g. 'company', 'school', 'book'). Speakers are always people, so this filter only narrows mentioned entities. Cannot be combined with 'role'. Ignored when entity_id resolves to a specific entity. See GET /v1/entities/types for the available slugs.","type":"string"},"episode_id":{"description":"Filter to a specific episode by slug or ID.","type":"string"},"keyword_match":{"description":"How unquoted keyword_search terms are applied. 'required' (default) filters to segments containing every term, so results are guaranteed to contain what you typed — this also constrains semantic_search, making a hybrid query an intersection of the two. 'ranked' instead lets unquoted terms only boost BM25 relevance without excluding anything, which widens recall for loose bag-of-words queries but returns segments that may contain none of them. Quoted phrases are unaffected: they filter in BOTH modes, so to relax a phrase remove its quotes. Ignored when keyword_search is empty.","enum":["required","ranked"],"type":"string"},"keyword_search":{"description":"BM25 lexical search over dialogue. Use when an exact token must appear verbatim — tickers, drug names, product codes. By default every token must appear somewhere in the matched segment (see keyword_match). Wrap any token sequence in double quotes (e.g. \"machine learning\") to additionally require those words adjacent and in order in the segment's spoken dialogue — a speaker's own name is not indexed as dialogue, so quoting a person's name finds segments where the name appears in what was said, not segments they speak in. Adjacency spans consecutive lines, so a phrase may rarely straddle a line break. Multiple quoted phrases AND together (e.g. \"central bank\" \"interest rates\"). There is no boolean OR — a bare OR is treated as an ordinary word, so pass alternatives as separate requests.","type":"string"},"language":{"description":"Restrict to episodes of podcasts in this language (ISO 639-1 code, e.g. 'fr'). Matches the podcast's primary language subtag, so 'fr' covers 'fr-FR'.","type":"string"},"limit":{"description":"Results per page (1-100, default 25).","format":"int64","type":"integer"},"podcast_id":{"description":"Podcast slug, internal ID, or numeric iTunes ID.","type":"string"},"role":{"description":"How the entity must relate to the episode. Speaking roles: 'guest', 'host', 'panelist', 'correspondent', or 'speaker' for any of them. 'mention' means the entity is talked about rather than speaking. Omit to match both. Matches the role values on /v1/podcasts/episodes.","enum":["guest","host","panelist","correspondent","speaker","mention"],"type":"string"},"semantic_search":{"description":"Vector-similarity search by meaning. Express the query the way you'd describe the topic to a colleague — paraphrase tolerant, finds segments that express the same idea in different vocabulary. Combine with keyword_search for hybrid ranking. Describe a topic, not a name: to find a specific person or company, filter with entity_id / company_id (or use /v1/podcasts/mentions for every line about them) — and for an exact token like a ticker, use keyword_search.","type":"string"},"since":{"description":"Only segments from episodes published after this date.","type":"string"},"sort":{"description":"Sort order. Defaults to relevance.","enum":["relevance","recency"],"type":"string"},"type":{"description":"Segment type filter.","enum":["INTRO","PERSONAL_BANTER","TOPIC_DISCUSSION","INTERVIEW","TRANSITION","AD","OUTRO"],"type":"string"},"until":{"description":"Only segments from episodes published on or before this date. A bare date includes that whole day.","type":"string"}},"type":"object"},"type":{"const":"http","type":"string"}},"required":["type","method"],"type":"object"}},"required":["input"],"type":"object"},"history":[{"day":"2026-09-24","reachable":true,"status":402,"valid_402":true,"asked_usdc":0.03,"price_match":true,"latency_ms":151,"error":null}],"description_full":"Search podcast episode content. To find podcasts (shows) by name or topic, use /v1/podcasts/search?q=….","last_updated":"2026-09-20T01:02:52.541Z","schemes":["exact"]}