Skip to main content
The rankings endpoints expose podcast chart data captured daily from Apple Podcasts and Spotify. We refresh roughly 1.7 million chart positions every day across 170+ countries × 100+ categories × ranks 1–200, so the data you query is always the live snapshot — yesterday’s charts are already historical and addressable through the history endpoints. Every chart slot is identified by the same four-field vocabulary — source, chart_type, country, category_slug — and that vocabulary works the same way on every endpoint. Learn it once and you know the whole surface. The simplest call needs no parameters at all:
returns the first page of the US Apple Top Podcasts chart, ordered by rank ascending. Charts run to rank 200; the default page size is 25 (raise it up to 100 with limit, or paginate with cursor). Use these endpoints when you want to:
  • Render a chart leaderboard for any country or category.
  • See where a specific podcast currently ranks across every source/country/category.
  • Track historical chart positions over time.
  • Surface trending podcasts — chart debuts, departures, and the biggest rank movers.

Identifying a chart slot

A “chart slot” is the unit of analysis: one (source × chart_type × country × category) tuple, refreshed daily. Every browse and history endpoint accepts the same query parameters to pin or scope a slot: Use the discovery endpoints to enumerate the available sources, countries, and categories.

List rankings

The workhorse list endpoint. With no parameters it returns the US Apple Top Podcasts overall chart.
Response (truncated)
Common shapes of the call:

Query parameters

About the linked podcast

We track tens of thousands of the highest-ranked podcasts in the catalog — every show that consistently charts is in there, with full transcripts, sponsors, mentions, and the rest of the Particle Pro surface. Those rows carry a podcast field that links straight into the catalog (GET /v1/podcasts/{slug} and friends). For the long tail of intermittent or hyper-local entries — chart slots in 170+ countries surface a lot of one-day wonders — podcast is omitted and the response still carries a complete show block with name, publisher, artwork, and feed URL. Treat show as the canonical identity for every row and use podcast to cross-link into the catalog whenever it’s present.

List current rankings for a podcast

Returns every live chart slot a podcast appears on, across sources and countries. Rows are clustered by (source, country, category) — overall charts come before sub-categories within each (source, country) group — so iterating the response naturally walks the podcast’s footprint without re-sorting.
Response (truncated)
Returns 404 when the podcast can’t be resolved by slug, ID, or numeric iTunes ID. Pagination is opt-in via limit and cursor; by default every chart slot the podcast occupies is returned in one response (typically dozens, occasionally a few hundred for very popular shows charting in many countries).

Summarize a podcast’s chart presence

A one-call aggregate: how many distinct chart slots, sources, countries, and categories the podcast is on right now, plus its single best (lowest-numbered) rank.
Response
When multiple chart placements tie at the same rank, best_rank (and each appearances_by_source[*].best_*) prefers the higher-priority market — us > gb > ca > au > de > fr > es > it > mx > br > jp > ie > nl > se > nz, then alphabetical. A US #1 always wins over a tied #1 in a smaller market. Within a country, the overall chart wins over a sub-category placement.

Discovery endpoints

These let you enumerate which sources, countries, and categories actually have data right now — without paginating through millions of rows.

List sources

GET /v1/podcasts/rankings/sources returns each (source, chart_type) pair currently available, with row counts and freshness:

List countries

GET /v1/podcasts/rankings/countries returns every country with current data. Each entry carries the human-readable name (when known) and the count of distinct chart slots.

List categories

GET /v1/podcasts/rankings/categories returns every category currently represented. For Apple sub-categories the response includes parent_slug so you can render the hierarchy.
external_id is the source-native category id. When a category is reported by multiple sources (Apple’s iTunes genre id “1303” and Spotify’s slug-as-id “comedy” both map to comedy), the response prefers Apple’s id; pin a single source via ?source=spotify if you need the Spotify-native form. category_slug is the universal handle and works as a filter on every endpoint regardless of source.

History

History endpoints reach beyond the live snapshot to surface chart positions over time.

Chart slot history

Returns historical snapshots for a chart slot, ordered most-recent first. Combine with since / until to bound the range.
Each row in the response is a PodcastRanking object — the same shape as the list endpoint, just with older captured_at values. Pin podcast_id to filter to a single podcast within the slot.

Per-podcast history

Returns the full historical chart record for a single podcast, optionally narrowed by chart slot or date range.
When category_slug is set on this endpoint, source must also be set (returns 422 otherwise) — category slugs aren’t unique across sources at the wire level, so a Spotify “comedy” filter would otherwise silently exclude Apple matches and vice versa.

Movers

GET /v1/podcasts/rankings/movers returns the chart entries whose rank changed between the live snapshot and a comparison snapshot window_days ago. Use it to surface trending movement, new arrivals, and departures — all from one endpoint.
Response (truncated)
The change filter narrows to a single change type:

Query parameters

Anatomy of a ranking row

Choosing the right endpoint

  • Podcasts overview — full Podcast object.
  • Publishers — pivot from a chart entry’s publisher to its catalog.
  • Episodes — drill from a charting podcast into its episodes.
  • Ratings & reviews — user-generated star ratings and review text, the complement to chart position.