ApplePodcasts API endpoint
Returns one Apple Podcasts show by its Apple show `id`, together with a list of its episodes. `limit` sets how many episodes to return; `country` and `lang` choose the storefront and language. Episodes have `title`, `description`, `duration_millis`, `release_date`, `episode_url` and `episode_guid`.
/apple-podcasts/show/{id}/episodesMCP tool: apple_podcasts_show_episodes
Returns an Apple Podcasts show and its public episodes by Apple show ID.
| Field | Filled in, of 13 checked | Values in the sample |
|---|---|---|
| id | 13 | |
| show_id | 13 | |
| show_name | 13 | Dan Carlin's Hardcore History in all 13 |
| title | 13 | “Mania for Subjugation IV” and 12 other values |
| url | 13 | podcasts.apple.com |
| show_url | 13 | itunes.apple.com |
| feed_url | 13 | feeds.feedburner.com |
| episode_url | 13 | dts.podtrac.com |
| preview_url | 13 | dts.podtrac.com |
| episode_guid | 13 | |
| description | 13 | median 230 characters |
| short_description | 13 | median 230 characters |
| release_date | 13 | 2018-07-14 to 2026-07-31 |
| duration_millis | 12 | 12,754,000 to 20,752,000, median 15,099,000 |
| content_advisory_rating | 13 | Clean in all 13 |
| country | 13 | USA in all 13 |
| artwork_url_60 | 13 | is1-ssl.mzstatic.com |
| artwork_url_160 | 13 | is1-ssl.mzstatic.com |
| artwork_url_600 | 13 | is1-ssl.mzstatic.com |
| episode_file_extension | 13 | mp3 in all 13 |
| episode_content_type | 13 | audio in all 13 |
| closed_captioning | 13 | none in all 13 |
| genres | 13 | median 1 entry |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| id (path) | string | Yes | Apple Podcasts show ID | 173001861 | |
| country | string | No | Two-letter storefront country code | us | |
| lang | string | No | Result language tag | en-us | |
| limit | integer | No | Number of episodes to return | 50 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/apple-podcasts/show/173001861/episodes?country=us&lang=en&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"show": {
"id": 173001861,
"collection_name": "Dan Carlin's Hardcore History"
},
"episodes": [
{
"id": 1000742374669,
"show_id": 173001861,
"title": "Mania for Subjugation III",
"duration_millis": 15253000
}
]
}
}Request schema
No body schema
Response schema
#/definitions/applepodcasts.showEpisodesResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | applepodcasts.ShowEpisodesResult | No | ||||
| data.episodes | array | No | Episodes of the show. | |||
| data.episodes[].artwork_url_160 | string | No | URL of the episode artwork image, 160 pixels wide. | |||
| data.episodes[].artwork_url_60 | string | No | URL of the episode artwork image, 60 pixels wide. | |||
| data.episodes[].artwork_url_600 | string | No | URL of the episode artwork image, 600 pixels wide. | |||
| data.episodes[].closed_captioning | string | No | Closed captioning flag Apple reports for the episode. | |||
| data.episodes[].content_advisory_rating | string | No | Content advisory rating Apple gives the episode. | |||
| data.episodes[].country | string | No | Storefront country code of the episode. | |||
| data.episodes[].description | string | No | Full episode description. | |||
| data.episodes[].duration_millis | integer | No | Episode length in milliseconds. | |||
| data.episodes[].episode_content_type | string | No | Media type of the episode file. | |||
| data.episodes[].episode_file_extension | string | No | File extension of the episode media file. | |||
| data.episodes[].episode_guid | string | No | Episode GUID from the show's feed. | |||
| data.episodes[].episode_url | string | No | URL of the episode media file. | |||
| data.episodes[].feed_url | string | No | URL of the show's RSS feed. | |||
| data.episodes[].genres | array | No | Genres the episode is filed under. | |||
| data.episodes[].genres[].id | string | No | Apple genre id. | |||
| data.episodes[].genres[].name | string | No | Genre name as Apple Podcasts shows it. | |||
| data.episodes[].id | integer | No | Apple Podcasts id of the episode. | |||
| data.episodes[].preview_url | string | No | URL of the episode audio or video preview. | |||
| data.episodes[].release_date | string | No | Date and time the episode was released, as Apple returns it. | |||
| data.episodes[].short_description | string | No | Short episode description. | |||
| data.episodes[].show_id | integer | No | Apple Podcasts id of the show the episode belongs to. | |||
| data.episodes[].show_name | string | No | Name of the show the episode belongs to. | |||
| data.episodes[].show_url | string | No | Apple Podcasts page URL of the show. | |||
| data.episodes[].title | string | No | Episode title as shown on Apple Podcasts. | |||
| data.episodes[].url | string | No | Apple Podcasts page URL of the episode. | |||
| data.show | object | No | Show the episodes belong to. | |||
| data.show.artist_id | integer | No | Apple id of the show's publisher or creator. | |||
| data.show.artist_name | string | No | Name of the show's publisher or creator. | |||
| data.show.artist_url | string | No | Apple Podcasts page URL of the publisher or creator. | |||
| data.show.artwork_url_100 | string | No | URL of the show artwork image, 100 pixels wide. | |||
| data.show.artwork_url_30 | string | No | URL of the show artwork image, 30 pixels wide. | |||
| data.show.artwork_url_60 | string | No | URL of the show artwork image, 60 pixels wide. | |||
| data.show.artwork_url_600 | string | No | URL of the show artwork image, 600 pixels wide. | |||
| data.show.collection_explicitness | string | No | Explicitness label Apple gives the show collection. | |||
| data.show.collection_name | string | No | Show name as listed in the collection. | |||
| data.show.content_advisory_rating | string | No | Content advisory rating Apple gives the show. | |||
| data.show.country | string | No | Storefront country code of the show. | |||
| data.show.currency | string | No | Currency code Apple lists for the show. | |||
| data.show.feed_url | string | No | URL of the show's RSS feed. | |||
| data.show.genre_ids | array | No | Apple genre ids the show is filed under. | |||
| data.show.genres | array | No | Names of the genres the show is filed under. | |||
| data.show.id | integer | No | Apple Podcasts id of the show. | |||
| data.show.primary_genre_name | string | No | Name of the show's main genre. | |||
| data.show.release_date | string | No | Release date and time Apple lists for the show, as Apple returns it. | |||
| data.show.track_count | integer | No | Number of episodes Apple reports for the show. | |||
| data.show.track_explicitness | string | No | Explicitness label Apple gives the show's track entry. | |||
| data.show.track_name | string | No | Show name as listed on the track entry. | |||
| data.show.url | string | No | Apple Podcasts page URL of the show. | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Missing or invalid parameters | #/definitions/app.Response |
| 404 | Show not found | #/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/show/173001861/episodes?country=us&lang=en&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"