---
title: "List publishers with podcasts in a bias bucket"
method: GET
path: "/v1/podcasts/bias/{result}/publishers"
tags: ["Podcast Bias", "tier:premium"]
---

# List publishers with podcasts in a bias bucket

`GET /v1/podcasts/bias/{result}/publishers`

## Request

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

Returns a paginated list of publishers whose analyzed catalog contains at least min_count podcasts in the requested bias bucket, ranked by raw count or by share of the publisher's analyzed catalog. Useful as a flip of the publisher bias profile — answers 'which publishers carry the most RIGHT-leaning shows?'.

## Path parameters

- `result` 'NOT_POLITICAL' | 'EXTREME_LEFT' | 'LEFT' | 'LEANS_LEFT' | 'CENTER' | 'LEANS_RIGHT' | 'RIGHT' | 'EXTREME_RIGHT', required: Bias bucket to flip on

## Query parameters

- `limit` integer: Results per page
- `cursor` string: Opaque pagination cursor from previous response
- `political_context` 'US' | 'UK' | 'EU' | 'CANADA' | 'AUSTRALIA' | 'INDIA' | 'OTHER' | 'UNKNOWN': Restrict the underlying corpus to a single political framework before aggregating.
- `min_count` integer: Only return publishers with at least this many podcasts in the requested bucket.
- `sort` 'count' | 'share': count ranks by raw podcasts_in_bucket; share ranks by podcasts_in_bucket / analyzed_podcasts to surface publishers whose catalog is concentrated in this bucket.

## Response `200`

OK

- PageBiasPodcastPublisherEntry
  - `cursor` string: Pass to next request for more results
  - `data` BiasPodcastPublisherEntry[], nullable, required: List of results
    - `analyzed_podcasts` integer, required: Catalog podcasts with at least one non-deleted analysis
    - `bucket_share` number, double, required: podcasts_in_bucket / analyzed_podcasts (0..1)
    - `podcast_count` integer, required: Total podcasts in the publisher's catalog (denormalized)
    - `podcasts_in_bucket` integer, required: Analyzed podcasts whose latest result matches the requested bucket
    - `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).
    - `sample_podcast_ids` string[], nullable: Up to 5 podcast IDs from the publisher whose latest result matches the requested bucket
  - `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)
