Spotify API endpoint
Returns a Spotify audiobook by `uri` or `id`; Spotify identifies audiobooks with show URIs (`spotify:show:...`). The response has name, authors, narrators, publisher, description, `totalChapters`, explicit flag and cover images. Passing a podcast show instead of an audiobook returns an upstream error, and an invalid identifier returns 400.
/spotify/audiobookReturns Spotify audiobook metadata. Spotify currently exposes audiobook objects through spotify:show:* URIs.
uri: Spotify audiobook/show URI or open.spotify.com/show/... URL.id: Spotify show ID. Used when uri is omitted.include_content_capability_trait: Include content capability trait fields when Spotify returns them.include_episode_content_ratings_v2: Include content rating fields when Spotify returns them.The endpoint expects Spotify's private response type to be Audiobook. If the supplied show is a podcast rather than an audiobook, the request returns an upstream error. Invalid identifiers return 400; upstream private API failures return 503.
| Field | In the sample | Value in the sample |
|---|---|---|
| uri | Has a value | “spotify:show:40ygvasZaqVMMBkgYoUy8C” |
| id | Has a value | |
| type | Has a value | “Audiobook” |
| name | Has a value | “Atomic Habits: An Easy & Proven Way to Build Good Habits &…” |
| narrators | Has a value | 1 entry |
| publisher | Has a value | “James Clear” |
| description | Has a value | 2,040 characters |
| mediaType | Has a value | “AUDIO” |
| imageUrl | Has a value | i.scdn.co |
| images | Has a value | 3 entries |
| externalUrl | Has a value | open.spotify.com |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| uri | string | No | Spotify audiobook/show URI or open.spotify.com show URL | spotify:show:76GTo4lM62dFR11VuALF01 | |
| id | string | No | Spotify show ID | 76GTo4lM62dFR11VuALF01 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/spotify/audiobook" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"uri": "spotify:show:76GTo4lM62dFR11VuALF01",
"type": "Audiobook",
"name": "Example Audiobook",
"meta": {
"operationName": "queryShowMetadataV2",
"fetchedAt": "2026-05-13T20:41:13Z"
}
}
}Request schema
No body schema
Response schema
#/definitions/spotify.audiobookResponseDoc
| 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.AudiobookResponse | No | ||||
| data.authors | array | No | Names of the audiobook's authors. | |||
| data.description | string | No | Description text of the audiobook. | |||
| data.externalUrl | string | No | Link to the audiobook on open.spotify.com. | |||
| data.id | string | No | Spotify ID of the audiobook. | |||
| data.imageUrl | string | No | URL of the audiobook cover image. | |||
| data.images | array | No | Cover images available for the audiobook, with their sizes. | |||
| data.images[].height | integer | No | 640 | Image height in pixels. | ||
| data.images[].url | string | No | https://i.scdn.co/image/ab6765630000ba8ab0484f8ee2933eceab32bac0 | URL of the image. | ||
| data.images[].width | integer | No | 640 | Image width in pixels. | ||
| data.isExplicit | boolean | No | Whether Spotify marks the audiobook as explicit. | |||
| data.mediaType | string | No | Kind of media the audiobook carries, as Spotify labels it. | |||
| data.meta | object | No | Details about this response. | |||
| data.meta.appVersion | string | No | Version of the Spotify web player the data was read from. | |||
| data.meta.fetchedAt | string | No | Time the data was fetched, in UTC (RFC 3339). | |||
| data.meta.operationName | string | No | Name of the Spotify web player operation that returned the data. | |||
| data.name | string | No | Audiobook title as Spotify shows it. | |||
| data.narrators | array | No | Names of the audiobook's narrators. | |||
| data.publisher | string | No | Name of the audiobook's publisher. | |||
| data.totalChapters | integer | No | Total number of chapters in the audiobook. | |||
| data.type | string | No | Kind of item as Spotify labels it, for example `Audiobook`. | |||
| data.uri | string | No | Spotify URI of the audiobook. | |||
| msg | unknown | No | Msg is the message that describes the result of the request @example "Request successful" |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 503 | Service Unavailable | #/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/audiobook" \
-H "x-api-key: $CRAWLORA_API_KEY"