Available to MCP agents in the opt-in
podcast_advertising category as particle_company_get_podcast_ad_presence, particle_podcast_get_sponsors, and particle_podcast_get_sponsor_leaderboard.Per-company advertising
The fastest way to see how a single company shows up as a sponsor:Response (truncated)
read_type_breakdown distinguishes host-reads from pre-recorded spots. placement_type distinguishes PRE_ROLL / MID_ROLL / POST_ROLL. recent_ads includes per-product attribution where the read called out a specific product line, plus segment timing within the episode — see Per-episode ads below for details.
To see which podcast publishers a company advertises across — and how much of each publisher’s catalog it covers — use the sponsor→publishers flip and pass the company’s slug or domain as the {id} path parameter. When the value resolves to a company (not a specific sponsor), the response aggregates every ad with sponsor_company_id = <company> across all the company’s deduped sponsors. Pass a specific sponsor ID to scope to that single alias instead.
Per-podcast advertising summary
Same idea, inverted — for a single podcast, who’s sponsoring it?Response (truncated)
Sponsors a podcast could pitch
GET /v1/podcasts/{id}/recommendations/sponsors flips the question for a show selling its own
inventory: which advertisers buy shows like mine, but not mine yet? It takes the show’s
precomputed related shows, collects the sponsors those shows run, and
ranks each sponsor by how related the venues are, how much it buys there, and how recently,
dropping anything already on the show’s own roster. It is a prospecting list, not a
prediction: the right reading is “advertisers your peer shows carry that you do not.”
The podcast detail embeds the first five with include=recommended_sponsors on
GET /v1/podcasts/{id}, gated the
same way as this endpoint.
Response (truncated)
A show whose related set has not been computed yet gets
200 with an empty data array.
Who sponsors this show is GET /v1/podcasts/{id}/advertising;
a sponsor’s full footprint is GET /v1/podcasts/advertising/sponsors/{id}/podcasts.
MCP: include: ["recommended_sponsors"] on particle_podcast_resolve.
Shows a company could advertise on next
GET /v1/companies/{id}/podcast/recommendations is the buy side: which shows are most like the
ones a company already advertises on, that it does not buy yet? It takes the shows the company’s
sponsors run ads on, weights each by how much the company advertises there, follows each one’s
precomputed related shows, and ranks every show the company has never bought
by the compounded relatedness. In the temporal holdout it recovered the shows advertisers went on
to buy at 13× the rate of category-by-popularity and 8× the rate of “most-bought shows overall”.
Premium, like the rest of the company advertising surface.
Response (truncated)
A company with no podcast advertising, or whose bought shows have no computed related sets yet,
gets
200 with an empty data array. Where the company advertises today is
GET /v1/companies/{id}/podcast/advertising/podcasts.
MCP: include: ["podcast_recommendations"] on particle_company_get.
Per-episode ads
When you already have an episode in hand — for example, drilling in afterlist-episodes or after a transcript-based search — fetch the individual ad reads detected in that episode:
Response (truncated)
company resolves the sponsor read to a knowledge-graph company so you can join against company endpoints. Network promos (cross-promotion of other shows in the same network) are filtered out. For rolled-up views across episodes, see Per-podcast advertising summary and the Sponsor leaderboard below.
company.slug is the knowledge-graph slug and the stable key to build links from; company.id stays domain-preferred (okx.com).
Each ad carries the segment timing — start_seconds, end_seconds, duration_seconds — measured against the episode timeline. That’s enough to align ads with the transcript, measure read length, or join with the raw audio offset for downstream analysis.
Sponsor leaderboard
The most-active sponsors across the catalog:Response (truncated)
metric (ad_count, podcast_reach, or episode_reach) to change the ranking dimension; by since / until to scope to a time window; by company_id to constrain results to one sponsor’s brand family; or by publisher_id (slug or ID) to restrict the leaderboard to ads on one publisher’s catalog — useful for asking “who are the top sponsors within iHeartPodcasts.”
Sponsor co-occurrence
Which sponsors run alongside each other on the same episodes — a useful signal for media-buying overlap, attribution analysis, or competitive positioning:Response (truncated)
Sponsor lookup
Resolve a sponsor by domain, slug, or canonical ID, then list the podcasts they sponsor:Sponsor ad segments
List the individual ad segments attributed to a sponsor — newest episodes first — optionally scoped to a single podcast. Results agree with thead_count values from the sponsor podcasts endpoint, so a podcast reporting 30 ads yields exactly 30 segments here. Network promos are excluded.
read_type, timecodes, audio_url, and the parent episode. Use since/until to window by episode publication date.
Publisher-level rollups
To roll up ads across every podcast a publisher owns — total ads, network buyers, top sponsors with podcast coverage — see Publisher advertising. That page covers the publisher profile, the publisher sponsors list (the bundle-buy signal), the sponsor→publishers flip, and the cross-publisher leaderboard.Related
- Publisher advertising — bundle-buy intelligence rolled up across a publisher’s catalog
- Companies → Overview — resolve any company by ticker, domain, or CIK before pulling its ad presence
- Concepts → Pricing weight — advertising endpoints are priced higher per call
- Knowledge graph → Entities — sponsors map to entities for cross-content tracking