Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.particle.pro/llms.txt

Use this file to discover all available pages before exploring further.

Particle API analyzes every well-classified podcast against a seven-point political bias scale, calibrated against a regional political framework (US, UK, EU, CANADA, AUSTRALIA, INDIA, or OTHER). The publisher-level endpoints described here roll those per-podcast verdicts up across every podcast a publisher controls, so advertisers, researchers, and platforms can reason about a publisher’s full footprint rather than evaluating shows one at a time.
Publisher-level bias intelligence is a Premium endpoint. The per-podcast bias rating remains available on the standard tier through GET /v1/podcasts//bias.

What the profile gives you

A bundle-buy decision (or a publisher-fit audit) needs more than the modal lean of a single show. Particle’s publisher bias profile captures the catalog along five dimensions:
  • Coverage (coverage block) — total_podcasts, analyzed_podcasts, and analyzed_coverage so callers know how much of the catalog the verdict draws from. Backfill is in flight; a value of coverage.analyzed_coverage materially below 1.0 means there are still un-analyzed shows.
  • Political content (political_content block) — political_content.share is the fraction of analyzed podcasts the agent rated as political (i.e. not NOT_POLITICAL). Distinguishes news-heavy publishers from entertainment-heavy publishers.
  • Lean (lean block, absent from the response when the publisher has no political content) — lean.avg_score on a –3 (extreme left) to +3 (extreme right) ordinal scale, restricted to political content.
  • Diversitylean.stddev, the standard deviation of the lean across political podcasts. Low values indicate a monolithic publisher (e.g. The Daily Wire, MeidasTouch); high values indicate a heterogeneous catalog (iHeartPodcasts spans EXTREME_RIGHT to LEFT).
  • Distributions (distributions block) — bucket-level counts across the seven directional buckets plus NOT_POLITICAL, and a per-region breakdown by political_context so callers can audit the verdict directly.

The bias scale

BucketScoreDescription
EXTREME_LEFT–3Far-left content with overt partisan framing.
LEFT–2Clearly left-leaning editorial perspective.
LEANS_LEFT–1Center-left orientation; mild partisan signal.
CENTER0Even-handed treatment of political topics.
LEANS_RIGHT+1Center-right orientation; mild partisan signal.
RIGHT+2Clearly right-leaning editorial perspective.
EXTREME_RIGHT+3Far-right content with overt partisan framing.
NOT_POLITICALNot substantively political content.
The numeric score is exposed so callers can sort, average, and visualize across podcasts; it is not a substitute for the literal bucket and NOT_POLITICAL content is excluded from score-based metrics.

Get a publisher’s bias profile

curl "https://api.particle.pro/v1/podcasts/publishers/iheartpodcasts/bias" \
  -H "X-API-Key: $PARTICLE_API_KEY"
Response
{
  "publisher": { "id": "...", "slug": "iheartpodcasts", "name": "iHeartPodcasts" },
  "coverage": {
    "total_podcasts": 210,
    "analyzed_podcasts": 85,
    "analyzed_coverage": 0.4048
  },
  "political_content": {
    "podcasts": 17,
    "share": 0.20,
    "avg_topic_percentage": 0.41
  },
  "lean": {                  // absent when political_content.podcasts == 0
    "avg_score": -0.47,
    "stddev": 1.62,
    "dominant_bias": "LEANS_LEFT"
  },
  "distributions": {
    "bias": [
      { "result": "NOT_POLITICAL", "count": 68 },
      { "result": "LEANS_LEFT", "count": 9 },
      { "result": "LEFT", "count": 4 },
      { "result": "RIGHT", "count": 3 },
      { "result": "EXTREME_RIGHT", "count": 1 }
    ],
    "region": [
      { "political_context": "UNKNOWN", "count": 68 },
      { "political_context": "US", "count": 17 }
    ]
  },
  "last_evaluated_at": "2026-04-12T18:33:21Z"
}
The response is intentionally grouped: coverage is “how much of the catalog the verdict draws from”, political_content is “how political the catalog is”, and lean is “where the political content sits on the ideological axis”. When a publisher has no political content at all (e.g. a sports-only network), the lean block is absent from the response — a single "lean" in obj check answers “is there a lean signal at all?”. Leaderboard entries share the same nested shape minus distributions.

List a publisher’s analyzed podcasts

Drill into the underlying podcasts that drove the profile. Filter by bias bucket(s) (comma-separated) or political_context, exclude NOT_POLITICAL podcasts, and sort by lean, recency, or name.
curl "https://api.particle.pro/v1/podcasts/publishers/npr/bias/podcasts?bias=LEFT,LEANS_LEFT&sort=lean_score&order=asc" \
  -H "X-API-Key: $PARTICLE_API_KEY"
Sort options:
SortDescription
lean_score-3..+3 ordinal lean. Default.
evaluated_atMost recent analysis first (or oldest with order=asc).
nameAlphabetical.

Cross-publisher leaderboard

Rank publishers by a chosen bias metric. Useful for discovery (what are the most right-leaning podcast publishers in the US?) and reporting (which publishers are most catalog-diverse?). Score-based metrics gate small-sample publishers via min_analyzed_podcasts and min_political_podcasts.
curl "https://api.particle.pro/v1/podcasts/bias/publishers/leaderboard?metric=most_right_leaning&political_context=US&min_political_podcasts=5" \
  -H "X-API-Key: $PARTICLE_API_KEY"
Available metrics:
MetricDescription
most_left_leaningLowest lean.avg_score first. Requires ≥ min_political_podcasts political podcasts.
most_right_leaningHighest lean.avg_score first. Requires ≥ min_political_podcasts political podcasts.
most_politicalHighest political_content.share first. Distinguishes news publishers from entertainment publishers.
most_diverseHighest lean.stddev first — publishers whose catalog spans a wide political range.
most_monolithicLowest lean.stddev first — publishers whose catalog is tightly clustered around one lean.
most_analyzedHighest coverage.analyzed_coverage first — publishers whose catalog is closest to fully analyzed.

Flip view: which publishers carry the most podcasts in a given bias bucket?

The symmetric “given a bucket, which publishers?” lens. Useful when the question is “who carries the most RIGHT-leaning content?” rather than “where does publisher X stand?”.
curl "https://api.particle.pro/v1/podcasts/bias/RIGHT/publishers?sort=share&min_count=3" \
  -H "X-API-Key: $PARTICLE_API_KEY"
sort=count ranks by raw podcasts_in_bucket; sort=share ranks by podcasts_in_bucket / analyzed_podcasts. Use share to surface publishers whose catalog is concentrated in the bucket regardless of catalog size; count to surface the largest absolute footprints. Every entry includes up to five sample_podcast_ids so callers can spot-check the verdict without an extra request.

Methodology notes

  • Latest analysis only. Every aggregate is computed from the most recent non-deleted analysis per podcast (DISTINCT ON (podcast_id) ORDER BY evaluated_at DESC). Historical analyses are kept for audit but never contribute to the rolled-up profile.
  • NOT_POLITICAL is not 0. NOT_POLITICAL content is excluded from lean.avg_score, lean.stddev, and lean.dominant_bias. Including it as a CENTER proxy would silently muddy the lean signal for entertainment-heavy publishers.
  • Sample standard deviation. lean.stddev is the sample standard deviation (Bessel’s correction, n−1). It is null when there is fewer than two political podcasts.
  • Coverage caveat. Analysis backfill is in flight. Treat coverage.analyzed_coverage as a confidence proxy on the rolled-up verdict — publishers with low coverage should be re-checked once the backfill completes.