---
title: "List publishers for a sponsor"
method: GET
path: "/v1/podcasts/advertising/sponsors/{id}/publishers"
tags: ["Podcast Advertising", "tier:premium"]
---

# List publishers for a sponsor

`GET /v1/podcasts/advertising/sponsors/{id}/publishers`

## Request

- Base URL: `https://api.particle.pro`
- URL: `https://api.particle.pro/v1/podcasts/advertising/sponsors/{id}/publishers`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

Returns the podcast publishers a sponsor advertises across, ordered by podcast coverage (the count of distinct publisher podcasts where the sponsor appears). Surfaces the bundle-buy signature: a sponsor showing 60–100% coverage on multiple publishers is doing network buys, not per-show buys.

## Path parameters

- `id` string, required: Sponsor ID, company ID, company domain, or company slug. When the value resolves to a company (not a specific sponsor), the response aggregates across every sponsor linked to that company — the canonical 'where does this advertiser buy?' view. When it resolves to a sponsor ID, the response is scoped to that single deduped sponsor.

## Query parameters

- `limit` integer: Results per page
- `cursor` string: Opaque pagination cursor from previous response

## Response `200`

OK

- PageSponsorPublisherEntry
  - `cursor` string: Pass to next request for more results
  - `data` SponsorPublisherEntry[], nullable, required: List of results
    - `ad_count` integer, required: Ads from this sponsor on the publisher's catalog
    - `coverage_share` number, double, required: podcast_coverage / publisher.total_podcasts (0..1). A sponsor with coverage_share >= 0.25 on a publisher is doing a network buy across the catalog.
    - `episode_reach` integer, required: Distinct episodes featuring the sponsor on the publisher's catalog
    - `first_seen_at` string, date-time: Earliest detected ad appearance
    - `last_seen_at` string, date-time: Most recent ad appearance
    - `podcast_coverage` integer, required: Distinct podcasts in the publisher where the sponsor appears
    - `publisher` PodcastPublisherCompact, required
      - `id` string, required: Publisher ID
      - `name` string, required: Publisher name
      - `slug` string: Human-readable slug identifier (e.g., 'goalhanger', 'iheartpodcasts'). When present, accepted in place of the ID anywhere a publisher reference is taken in the API. Occasionally absent on publishers whose name doesn't slugify (e.g., scripts not representable in ASCII URL slugs).
    - `publisher_podcast_count` integer, required: Total podcasts in the publisher's catalog
  - `has_more` boolean, required: Whether more results exist

## Other responses

- `402`: Payment Required. Read error_code. payment_required is the x402 path: either a keyless request being challenged — pay $0.03 in USDC per request (requirements in the PAYMENT-REQUIRED header) or send a pp_ API key — or a supplied payment that failed settlement (details in the PAYMENT-RESPONSE header; retry the same signature before signing a new one). See https://docs.particle.pro/x402. Any other code means the credential was accepted but does not cover this request (a plan or session gate such as premium_required or paid_plan_confirmation_required); its resolve says how to obtain access, and no payment header is sent.
- `default`: Error

---

[API](https://skmtc.dev/particle/apis/particle-api.md) · [All operations](https://skmtc.dev/particle/apis/particle-api/llms.txt) · [OpenAPI document](https://skmtc.dev/particle/apis/particle-api/revisions/416ba82ab9d7?raw)
