Audible API endpoint
Returns one page of an Audible chart — a ranked list with real chart position, price, and rating. This endpoint is less stable than the rest of this family. Its own filters (category, access level, language, duration, Audible-Originals-only) were individually verified to actually change results. category_id, access_level, and content_type=podcasts are mutually exclusive.
/audible/chartsReturns one page of an Audible chart (audible.com/charts) — a ranked list with real chart position, price, and star rating that has no equivalent on api.audible.com's public JSON API. This is an HTML scrape of audible.com, not api.audible.com — a different, less stable source class than the rest of the Audible family (see GET /audible/list/{list} for the other one). Unlike the JSON API's filters, this page's own filters were individually cold-replay-verified to actually change results.
Query parameters:
chart (optional, default most_listened) — one of most_listened, bestselling.content_type (optional, default audiobooks) — one of audiobooks, podcasts. (A third upstream option, "authors", returns a fundamentally different item shape — people, not titles — and isn't covered by this endpoint.)category_id (optional) — a category id from GET /audible/categories.access_level (optional, default all) — one of all, free, plus, premium.language (optional, default all) — one of all, danish, english, french, german, italian, japanese, polish, portuguese, russian, spanish, swedish.duration (optional, default all) — one of all, oneHourLess, oneToThreeHour, threeToSixHour, sixToTenHour, tenToTwentyHour, twentyHourMore.originals_only (optional, bool) — restrict to Audible Originals.page (optional, default 1) — 1-based, 20 results per page.category_id, access_level (non-all), and content_type=podcasts are mutually exclusive — audible.com's own chart page 404s if more than one of these path-level facets is combined in the same request (cold-replay-verified), so this endpoint rejects that combination with a 400 instead of guessing.
Response includes title (the page's own chart title), results_text (the page's own raw "1 - 20 of N results" string), and entries[]: rank, asin, title, authors[], narrators[], series, runtime_text + runtime_minutes, release_date, language, rating, ratings_count, price_text, uri. Podcast entries only populate rank/asin/title/rating/ratings_count — audible.com doesn't show release date, runtime, or price on podcast chart rows. A legitimate empty chart (e.g. chart=bestselling&content_type=podcasts on a day with no bestselling-podcast data) returns 200 with an empty entries[], not an error.
| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| rank | 20 | 1 to 20, median 10 |
| asin | 20 | |
| title | 20 | “Bram Stoker's Dracula” and 19 other values |
| authors | 20 | median 1 entry |
| narrators | 20 | median 2 entries |
| runtime_text | 20 | “5 hrs and 57 mins” and 19 other values |
| runtime_minutes | 20 | 338 to 1,720, median 792 |
| release_date | 20 | 2019-05-07 to 2026-10-06 |
| language | 20 | English in all 20 |
| rating | 20 | 4.4 to 4.9, median 4.8 |
| ratings_count | 20 | 163 to 147,314, median 16,779 |
| price_text | 20 | “$15.95” and 18 other values |
| uri | 20 | audible.com |
| series | 12 | “He Who Fights with Monsters, Book 13” and 11 other values |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| chart | string | No | Chart type, default most_listened Allowed values: most_listened, bestselling. | ||
| content_type | string | No | Content type, default audiobooks Allowed values: audiobooks, podcasts. | ||
| category_id | string | No | Restrict to a category id from GET /audible/categories | ||
| access_level | string | No | Membership access level, default all Allowed values: all, free, plus, premium. | ||
| language | string | No | Language filter, default all Allowed values: all, danish, english, french, german, italian, japanese, polish, portuguese, russian, spanish, swedish. | ||
| duration | string | No | Runtime-length filter, default all Allowed values: all, oneHourLess, oneToThreeHour, threeToSixHour, sixToTenHour, tenToTwentyHour, twentyHourMore. | ||
| originals_only | boolean | No | Restrict to Audible Originals only | ||
| page | integer | No | 1-based result page, default 1, 20 results per page | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/audible/charts?chart=most_listened&content_type=audiobooks&access_level=all&language=en&duration=all&originals_only=true&page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"chart": "most_listened",
"content_type": "audiobooks",
"title": "Most Listened",
"access_level": "all",
"language": "all",
"duration": "all",
"page": 1,
"results_text": "1 - 20 of 100 results",
"entries": [
{
"rank": 1,
"asin": "B0H9SX9ZN4",
"title": "Harker",
"authors": [
"James Patterson",
"Duane Swierczynski"
],
"narrators": [
"Christina Ricci",
"David Oyelowo",
"David Denman",
"Marcus Henderson",
"full cast"
],
"runtime_text": "3 hrs and 3 mins",
"runtime_minutes": 183,
"release_date": "2026-08-13",
"language": "English",
"rating": 4.5,
"ratings_count": 1396,
"price_text": "$13.54",
"uri": "https://www.audible.com/pd/B0H9SX9ZN4"
}
],
"source_url": "https://www.audible.com/charts"
}
}Request schema
No body schema
Response schema
#/definitions/audible.chartsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | audible.ChartsResponse | No | ||||
| data.access_level | string | No | ||||
| data.category_id | string | No | ||||
| data.chart | string | No | ||||
| data.content_type | string | No | ||||
| data.duration | string | No | ||||
| data.entries | array | No | ||||
| data.entries[].asin | string | No | ||||
| data.entries[].authors | array | No | ||||
| data.entries[].language | string | No | ||||
| data.entries[].narrators | array | No | ||||
| data.entries[].price_text | string | No | $13.54 | |||
| data.entries[].rank | integer | No | ||||
| data.entries[].rating | number | No | 4.5 | |||
| data.entries[].ratings_count | integer | No | ||||
| data.entries[].release_date | string | No | 2026-08-13 | |||
| data.entries[].runtime_minutes | integer | No | ||||
| data.entries[].runtime_text | string | No | 3 hrs and 3 mins | |||
| data.entries[].series | string | No | ||||
| data.entries[].title | string | No | ||||
| data.entries[].uri | string | No | ||||
| data.language | string | No | ||||
| data.originals_only | boolean | No | ||||
| data.page | integer | No | ||||
| data.results_text | string | No | 1 - 20 of 100 results | |||
| data.source_url | string | No | ||||
| data.title | string | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 500 | Internal Server Error | #/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/audible/charts?chart=most_listened&content_type=audiobooks&access_level=all&language=en&duration=all&originals_only=true&page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"