ApplePodcasts API endpoint
Searches Apple Podcasts episodes by `term`, which is required. `country`, `lang`, `limit` and `page` (1-based) refine the search. Each episode has its `title`, `show_name`, `show_id`, `description`, `duration_millis`, `release_date`, `episode_url`, `preview_url`, `feed_url`, genres and artwork.
/apple-podcasts/episodes/searchMCP tool: apple_podcasts_episodes_search
Returns Apple Podcasts episode results for a query.
| Field | Filled in, of 40 checked | Values in the sample |
|---|---|---|
| id | 40 | |
| show_id | 40 | |
| show_name | 40 | Dan Carlin's Hardcore History:… (23), Dan Carlin's Hardcore History (13), The Lore Vault: Hardcore Histor… (3) and 1 more |
| title | 40 | “Boring History For Sleep | 24 Hours in Ancient Rome (A Day…” and 39 other values |
| url | 40 | podcasts.apple.com |
| show_url | 40 | itunes.apple.com |
| feed_url | 40 | feeds.acast.com and 2 other hosts |
| episode_url | 40 | sphinx.acast.com and 1 other host |
| preview_url | 40 | sphinx.acast.com and 1 other host |
| episode_guid | 40 | |
| description | 40 | median 255 characters |
| short_description | 40 | median 232 characters |
| release_date | 40 | 2017-10-19 to 2026-10-04 |
| duration_millis | 39 | 952,000 to 20,752,000, median 5,866,000 |
| content_advisory_rating | 40 | Clean in all 40 |
| country | 40 | USA in all 40 |
| artwork_url_60 | 40 | is1-ssl.mzstatic.com |
| artwork_url_160 | 40 | is1-ssl.mzstatic.com |
| artwork_url_600 | 40 | is1-ssl.mzstatic.com |
| episode_file_extension | 40 | mp3 in all 40 |
| episode_content_type | 40 | audio in all 40 |
| closed_captioning | 40 | none in all 40 |
| genres | 40 | median 1 entry |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| term | string | Yes | Search term | hardcore history | |
| country | string | No | Two-letter storefront country code | us | |
| lang | string | No | Result language tag | en-us | |
| limit | integer | No | Number of episodes per page | 50 | |
| page | integer | No | Search page number (1-based) | 1 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/apple-podcasts/episodes/search?term=hardcore+history&country=us&lang=en&limit=10&page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": [
{
"id": 1000415837465,
"show_id": 173001861,
"show_name": "Dan Carlin's Hardcore History",
"title": "Supernova in the East I",
"url": "https://podcasts.apple.com/us/podcast/supernova-in-the-east-i/id173001861?i=1000415837465&uo=4",
"duration_millis": 16097000
}
]
}Request schema
No body schema
Response schema
#/definitions/applepodcasts.episodeSearchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | array | No | ||||
| data[].artwork_url_160 | string | No | URL of the episode artwork image, 160 pixels wide. | |||
| data[].artwork_url_60 | string | No | URL of the episode artwork image, 60 pixels wide. | |||
| data[].artwork_url_600 | string | No | URL of the episode artwork image, 600 pixels wide. | |||
| data[].closed_captioning | string | No | Closed captioning flag Apple reports for the episode. | |||
| data[].content_advisory_rating | string | No | Content advisory rating Apple gives the episode. | |||
| data[].country | string | No | Storefront country code of the episode. | |||
| data[].description | string | No | Full episode description. | |||
| data[].duration_millis | integer | No | Episode length in milliseconds. | |||
| data[].episode_content_type | string | No | Media type of the episode file. | |||
| data[].episode_file_extension | string | No | File extension of the episode media file. | |||
| data[].episode_guid | string | No | Episode GUID from the show's feed. | |||
| data[].episode_url | string | No | URL of the episode media file. | |||
| data[].feed_url | string | No | URL of the show's RSS feed. | |||
| data[].genres | array | No | Genres the episode is filed under. | |||
| data[].genres[].id | string | No | Apple genre id. | |||
| data[].genres[].name | string | No | Genre name as Apple Podcasts shows it. | |||
| data[].id | integer | No | Apple Podcasts id of the episode. | |||
| data[].preview_url | string | No | URL of the episode audio or video preview. | |||
| data[].release_date | string | No | Date and time the episode was released, as Apple returns it. | |||
| data[].short_description | string | No | Short episode description. | |||
| data[].show_id | integer | No | Apple Podcasts id of the show the episode belongs to. | |||
| data[].show_name | string | No | Name of the show the episode belongs to. | |||
| data[].show_url | string | No | Apple Podcasts page URL of the show. | |||
| data[].title | string | No | Episode title as shown on Apple Podcasts. | |||
| data[].url | string | No | Apple Podcasts page URL of the episode. | |||
| 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/episodes/search?term=hardcore+history&country=us&lang=en&limit=10&page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"