ApplePodcasts API endpoint
Returns Apple Podcasts chart rankings from the modern podcasts.apple.com charts page, covering chart algorithms (`top`, `top-subscriber`, `top-series`) crossed with entity types (`podcasts`, `podcast-episodes`, `podcast-channels`) and an optional genre filter. A richer, differently-sourced capability than the legacy RSS-based `/apple-podcasts/charts` endpoint.
/apple-podcasts/charts/rankingsMCP tool: apple_podcasts_charts_rankings
Query parameters:
chart — chart algorithm. Allowed values: top, top-subscriber, top-series. Default top.type — entity type. Allowed values: podcasts, podcast-episodes, podcast-channels. Default podcasts.genre — optional Apple Podcasts genre ID to filter the chart, e.g. 1303 for Comedy.country — two-letter storefront country code. Default us.limit — number of chart entries to return, default 24, max 200.show_id/show_name are populated only for type=podcast-episodes (the episode's parent show). genres/artist_name are empty for type=podcast-channels.
| Field | Filled in, of 24 checked | Values in the sample |
|---|---|---|
| rank | 24 | 1 to 24, median 12 |
| id | 24 | |
| kind | 24 | podcast in all 24 |
| name | 24 | “The Daily” and 23 other values |
| artist_name | 24 | “The New York Times” and 22 other values |
| url | 24 | podcasts.apple.com |
| artwork_url | 24 | is1-ssl.mzstatic.com |
| genres | 24 | median 3 entries |
| release_date | 24 | 2026-10-06 to 2026-11-04 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| chart | string | No | Chart algorithm. Allowed values: `top`, `top-subscriber`, `top-series`. Default `top`. | top | |
| type | string | No | Entity type. Allowed values: `podcasts`, `podcast-episodes`, `podcast-channels`. Default `podcasts`. | podcasts | |
| genre | integer | No | Optional Apple Podcasts genre ID to filter the chart, e.g. 1303 for Comedy | 1303 | |
| country | string | No | Two-letter storefront country code | us | |
| limit | integer | No | Number of chart entries to return, default 24, max 200 | 24 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/apple-podcasts/charts/rankings?country=us&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"display_name": "Top Shows",
"chart": "top",
"type": "podcasts",
"items": [
{
"rank": 1,
"id": 1200361736,
"kind": "podcast",
"name": "The Daily",
"artist_name": "The New York Times",
"url": "https://podcasts.apple.com/us/podcast/the-daily/id1200361736",
"artwork_url": "https://is1-ssl.mzstatic.com/image/thumb/.../mza_.jpg/{w}x{h}bb.{f}",
"genres": [
"Daily News",
"Podcasts",
"News"
],
"release_date": "2026-07-21T09:45:00Z"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/applepodcasts.chartRankingsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | applepodcasts.ChartRankingsResult | No | ||||
| data.chart | string | No | Chart algorithm that was returned: `top`, `top-subscriber` or `top-series`. | |||
| data.display_name | string | No | Chart title as Apple Podcasts shows it, for example `Top Shows`. | |||
| data.items | array | No | Chart entries in rank order. | |||
| data.items[].artist_name | string | No | Name of the show's publisher or creator. Empty for channels. | |||
| data.items[].artwork_url | string | No | Artwork URL template. Replace `{w}`, `{h}` and `{f}` with the width, height and image format you want. | |||
| data.items[].genres | array | No | Genre names the entry is filed under. Empty for channels. | |||
| data.items[].id | integer | No | Apple Podcasts id of the show, episode or channel. | |||
| data.items[].kind | string | No | "podcast" | "episode" | "channel" | |||
| data.items[].name | string | No | Name of the show, episode or channel. | |||
| data.items[].rank | integer | No | Position of the entry in the chart, starting at 1. | |||
| data.items[].release_date | string | No | Release time of the entry, in ISO 8601 (UTC). | |||
| data.items[].show_id | integer | No | Apple Podcasts id of the show an episode belongs to. Set only for episode charts. | |||
| data.items[].show_name | string | No | Name of the show an episode belongs to. Set only for episode charts. | |||
| data.items[].url | string | No | Apple Podcasts page URL of the entry. | |||
| data.type | string | No | Kind of entry in the chart: `podcasts`, `podcast-episodes` or `podcast-channels`. | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Missing or invalid parameters | #/definitions/app.Response |
| 429 | Rate limit exceeded | #/definitions/app.Response |
| 500 | Internal server error | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/apple-podcasts/charts/rankings?country=us&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"