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:| Parameter | Default | Description |
|---|---|---|
source | apple | Ranking source platform: apple or spotify. |
chart_type | top_podcasts | Chart variant within the source. Currently only top_podcasts is available. |
country | us | Lowercase ISO 3166-1 alpha-2 country code (e.g. us, gb, jp). |
category_slug | — | Category slug (e.g. comedy, business). Universal across sources. Omit for the overall “Top Podcasts” chart. |
List rankings
The workhorse list endpoint. With no parameters it returns the US Apple Top Podcasts overall chart.Response (truncated)
| Goal | Call |
|---|---|
| UK Apple Top Comedy | GET /v1/podcasts/rankings?country=gb&category_slug=comedy |
| US Spotify Top Podcasts | GET /v1/podcasts/rankings?source=spotify |
| Just the top 10 of any chart | GET /v1/podcasts/rankings?max_rank=10 |
| Ranks 11–20 of a chart | GET /v1/podcasts/rankings?min_rank=11&max_rank=20 |
| Where does a specific podcast chart? | GET /v1/podcasts/rankings?podcast_id=the-daily |
| Where does it chart in the UK? | GET /v1/podcasts/rankings?podcast_id=the-daily&country=gb |
Query parameters
| Parameter | Default | Description |
|---|---|---|
source | apple | Source platform. |
chart_type | top_podcasts | Chart variant. |
country | us | Country code. |
category_slug | — | Category slug. Omit for the overall chart. |
podcast_id | — | Slug, ID, or numeric iTunes ID. Restricts results to one podcast (and skips the implicit “overall only” default). |
min_rank | — | Optional inclusive rank floor (1–500). |
max_rank | — | Optional inclusive rank ceiling (1–500). |
limit | 25 | Page size, 1–100. |
cursor | — | Opaque cursor from the previous response. |
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 apodcast 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)
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
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 withsince / until to bound the range.
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.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)
change filter narrows to a single change type:
change | Meaning |
|---|---|
all (default) | Every change type below. Stable rows are always excluded. |
up | Entries whose rank improved (lower number). |
down | Entries whose rank dropped. |
new | Entries that appeared on the chart since the comparison snapshot. |
exit | Entries that fell off the chart. |
Query parameters
| Parameter | Default | Description |
|---|---|---|
source, chart_type, country, category_slug | apple, top_podcasts, us, — | Standard chart-slot filters. |
window_days | 1 | Comparison window in days, 1–30. The comparison snapshot is the most recent retired snapshot closest in time to (now − window_days). |
change | all | Change-type filter. |
limit | 25 | Maximum movers to return, 1–100. |
Anatomy of a ranking row
| Field | Description |
|---|---|
id | Stable identifier for this specific snapshot of this entry. |
source | apple or spotify. |
chart_type | top_podcasts. |
country | Lowercase ISO 3166-1 alpha-2 code. |
category | {slug, name, external_id, parent_slug} or null for the overall chart. |
rank | 1-based position. |
previous_rank | Source-reported prior rank when the source provides it. Apple does not currently populate this. |
growth_indicator | Source-supplied trend hint (e.g. up, down). |
chart_total | Length of the chart at this snapshot (typically 200). |
captured_at | When we captured the snapshot (UTC). Stable for every row in the same snapshot. |
source_updated_at | Timestamp the source itself reported for the chart, when present. |
external_id | Source-native chart entry id. Stable across captures. |
external_url | Canonical URL on the source platform. |
show | Show metadata captured with the entry. Always present, even when podcast is absent. |
podcast | Compact podcast object when matched in our catalog; absent otherwise. |
Choosing the right endpoint
| You want to… | Use this |
|---|---|
| The current US Apple Top Podcasts | GET /v1/podcasts/rankings |
| Top podcasts in another country | GET /v1/podcasts/rankings?country=gb |
| Top podcasts in a category | GET /v1/podcasts/rankings?category_slug=comedy |
| Where one podcast charts right now | GET /v1/podcasts/{id}/rankings |
| One-call podcast popularity card | GET /v1/podcasts/{id}/rankings/summary |
| What sources/countries/categories exist | The three discovery endpoints |
| Historical snapshots of a chart | GET /v1/podcasts/rankings/history |
| Historical rank of a podcast | GET /v1/podcasts/{id}/rankings/history |
| Trending movers / debuts / departures | GET /v1/podcasts/rankings/movers |
Related
- 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.