AppleBooks API endpoint
Returns the 40 audiobook rows Apple currently serves in its paid top chart for one storefront. `genre_id` narrows the page using an ID from `GET /apple-books/genres?media=audiobook`. The upstream page has no free/paid selector or pagination.
/apple-books/audiobook/chartsMCP tool: apple_books_audiobook_charts
Returns the 40 ranked audiobook resources from Apple's public storefront chart
page. The upstream currently serves one paid top-audiobooks chart. It does not
offer a free/paid choice or a continuation page here. Results include position
and the audiobook fields available in Apple's chart payload, including title,
artist, artwork, genres, price, rating, narrator, duration and preview when the
storefront supplies them.
Query parameters:
country: optional two-letter storefront code; defaults to us.genre_id: optional numeric audiobook category ID. Allowed values are
50000042 (Biographies & Memoirs), 50000043 (Business & Personal Finance),
50000040 (Fiction), 50000049 (History), 50000044 (Kids & Young Adults),
50000051 (Mysteries & Thrillers), 50000052 (Nonfiction), 50000053
(Religion & Spirituality), 50000069 (Romance), 50000055 (Sci-Fi & Fantasy),
50000054 (Science & Nature), and 50000056 (Self-Development).Use /apple-books/genres?media=audiobook to discover current category names,
slugs and canonical URLs. Audiobook IDs are a separate namespace from ebook
genre IDs. The service reads the anonymous page's chartsList FastBoot payload;
Apple's marketing-tools audiobooks feed paths return 404.
| Field | Filled in, of 40 checked |
|---|---|
| artist_id | 40 |
| artist_name | 40 |
| artwork_url | 40 |
| currency | 40 |
| duration_seconds | 39 |
| free | 40 |
| genres | 40 |
| id | 40 |
| name | 40 |
| narrator | 39 |
| position | 40 |
| preview_url | 39 |
| price | 40 |
| rating | 37 |
| rating_count | 37 |
| rating_histogram | 40 |
| release_date | 40 |
| url | 40 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| country | string | No | Two-letter storefront code, default us | ||
| genre_id | string | No | Audiobook genre ID. Allowed values: 50000042, 50000043, 50000040, 50000049, 50000044, 50000051, 50000052, 50000053, 50000069, 50000055, 50000054, 50000056 Allowed values: 50000042, 50000043, 50000040, 50000049, 50000044, 50000051, 50000052, 50000053, 50000069, 50000055, 50000054, 50000056. | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/apple-books/audiobook/charts?country=us&genre_id=50000042" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": [
{
"position": 1,
"id": 1882772196,
"name": "A Court of Splintered Harmony",
"artist_name": "Sarah J. Maas",
"url": "https://books.apple.com/us/audiobook/a-court-of-splintered-harmony/id1882772196",
"genres": [
"Fiction"
]
}
]
}Request schema
No body schema
Response schema
#/definitions/applebooks.audiobookChartsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | array | No | ||||
| data[].artist_id | integer | No | Apple Books id of the author. | |||
| data[].artist_name | string | No | Name of the author as Apple Books lists it. | |||
| data[].artist_url | string | No | Apple Books page URL of the author. | |||
| data[].artwork_url | string | No | URL of the audiobook cover artwork. | |||
| data[].book_id | integer | No | Apple Books id of the matching ebook edition, when one exists. | |||
| data[].currency | string | No | Currency code of `price`, such as `USD`. | |||
| data[].description | string | No | Audiobook description as shown on Apple Books. | |||
| data[].duration_seconds | integer | No | Length of the audiobook, in seconds. | |||
| data[].free | boolean | No | Whether the audiobook is free, meaning its price is 0. | |||
| data[].genres | array | No | Genres Apple Books files the audiobook under. | |||
| data[].id | integer | No | Apple Books audiobook id. | |||
| data[].name | string | No | Title of the audiobook as Apple Books shows it. | |||
| data[].narrator | string | No | Name of the narrator. | |||
| data[].position | integer | No | ||||
| data[].preview_url | string | No | URL of an audio preview sample. | |||
| data[].price | number | No | Audiobook price in the currency given by `currency`. | |||
| data[].provider | string | No | Publisher or provider Apple Books credits for the audiobook. | |||
| data[].rating | number | No | Average customer rating of the audiobook. | |||
| data[].rating_count | integer | No | Number of customer ratings the audiobook has received. | |||
| data[].rating_histogram | object | No | Number of ratings for each star value, keyed `1` to `5`. | |||
| data[].release_date | string | No | Release date of the audiobook, in ISO 8601 format. | |||
| data[].series_id | integer | No | Apple Books id of the series the audiobook belongs to. | |||
| data[].series_name | string | No | Name of the series the audiobook belongs to. | |||
| data[].url | string | No | Apple Books page URL of the audiobook. | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/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/apple-books/audiobook/charts?country=us&genre_id=50000042" \
-H "x-api-key: $CRAWLORA_API_KEY"