SpotifyPodcasts API endpoint
Returns the episodes of a Spotify podcast by show URI, with `offset` and `limit` (1-50). Each episode has its name, description, release date, duration in milliseconds, explicit and playable flags, Spotify URI, external URL and images; `total` gives the show's episode count.
/spotify-podcasts/show/episodes| Field | Filled in, of 40 checked | Values in the sample |
|---|---|---|
| uri | 40 | “spotify:episode:5KXGqN5XKXUR1glKTDlByL” and 39 other values |
| type | 40 | Episode in all 40 |
| name | 40 | “C03 - Ep. 53 - Under Oondar Fire - Headin' to the Weddin'” and 39 other values |
| description | 40 | median 639 characters |
| releaseDate | 40 | 2025-05-14 to 2026-09-30 |
| durationMs | 40 | 4,113,984 to 9,686,909, median 5,394,560 |
| isPlayable | 40 | true in 40 of 40 |
| imageUrl | 40 | i.scdn.co |
| images | 40 | median 3 entries |
| externalUrl | 40 | open.spotify.com |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| uri | string | No | Spotify show URI | spotify:show:1QQJ7FElLE0K6CIfZNCxU4 | |
| offset | integer | No | Episode offset | 0 | |
| limit | integer | No | Episode limit, clamped to 1-50 | 50 | |
| include_episode_content_ratings_v2 | boolean | No | Include Spotify episode content ratings v2 | false | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/spotify-podcasts/show/episodes?limit=10&include_episode_content_ratings_v2=true" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"uri": "spotify:show:1QQJ7FElLE0K6CIfZNCxU4",
"offset": 0,
"limit": 50,
"total": 42,
"episodes": [
{
"uri": "spotify:episode:example",
"type": "Episode",
"name": "Example Episode",
"description": "A normalized episode description.",
"releaseDate": "2026-05-01",
"durationMs": 123456,
"externalUrl": "https://open.spotify.com/episode/example"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/spotify.showEpisodesResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | Code is the HTTP status code or a custom code used to indicate the result of the request @example 200 | |||
| data | spotify.PodcastEpisodesResponse | No | ||||
| data.episodes | array | No | Episodes returned for the show. | |||
| data.episodes[].description | string | No | A new adventure from the Stinky Dragon crew. | Description text of the episode. | ||
| data.episodes[].durationMs | integer | No | 3600000 | Episode length in milliseconds. | ||
| data.episodes[].externalUrl | string | No | https://open.spotify.com/episode/2C2Y5kNq7qCVOVhbA0G3os | Link to the episode on open.spotify.com. | ||
| data.episodes[].imageUrl | string | No | https://i.scdn.co/image/ab6765630000ba8ab0484f8ee2933eceab32bac0 | URL of the main cover image for the episode. | ||
| data.episodes[].images | array | No | Cover images available for the episode, with their sizes. | |||
| data.episodes[].images[].height | integer | No | 640 | Image height in pixels. | ||
| data.episodes[].images[].url | string | No | https://i.scdn.co/image/ab6765630000ba8ab0484f8ee2933eceab32bac0 | URL of the image. | ||
| data.episodes[].images[].width | integer | No | 640 | Image width in pixels. | ||
| data.episodes[].isExplicit | boolean | No | false | Whether Spotify marks the episode as explicit. | ||
| data.episodes[].isPlayable | boolean | No | true | Whether the episode can be played. | ||
| data.episodes[].name | string | No | Tales from the Stinky Dragon | Episode title as Spotify shows it. | ||
| data.episodes[].releaseDate | string | No | 2026-05-13 | Date the episode was released, as Spotify returns it. | ||
| data.episodes[].type | string | No | Episode | Kind of item as Spotify labels it, for example `Episode`. | ||
| data.episodes[].uri | string | No | spotify:episode:2C2Y5kNq7qCVOVhbA0G3os | Spotify URI of the episode. | ||
| data.limit | integer | No | 20 | Maximum number of episodes requested. | ||
| data.meta | object | No | Details about this response. | |||
| data.meta.appVersion | string | No | 1.2.90.403.gf901f20f | Version of the Spotify web player the data was read from. | ||
| data.meta.fetchedAt | string | No | 2026-05-13T20:41:13Z | Time the data was fetched, in UTC (RFC 3339). | ||
| data.meta.operationName | string | No | queryPodcastEpisodes | Name of the Spotify web player operation that returned the data. | ||
| data.offset | integer | No | 0 | Position of the first episode returned. | ||
| data.total | integer | No | 202 | Total number of episodes the show has on Spotify. | ||
| data.uri | string | No | spotify:show:1QQJ7FElLE0K6CIfZNCxU4 | Spotify URI of the show whose episodes are listed. | ||
| msg | unknown | No | Msg is the message that describes the result of the request @example "Request successful" |
| Status | Description | Schema |
|---|---|---|
| 400 | Missing or invalid parameters | #/definitions/app.Response |
| 429 | Rate limit exceeded | #/definitions/app.Response |
| 503 | Spotify upstream request failed | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/spotify-podcasts/show/episodes?limit=10&include_episode_content_ratings_v2=true" \
-H "x-api-key: $CRAWLORA_API_KEY"