Audible API endpoint
Searches Audible's audiobook catalog by keyword, title, author, narrator, or category id. At least one filter is required.
/audible/searchSearches Audible's audiobook catalog.
Query parameters:
q (optional) — free-text query matched across title, subtitle, and author.title (optional) — match by title.author (optional) — match by author name.narrator (optional) — match by narrator name.category_id (optional) — restrict to a category id from GET /audible/categories.sort_by (optional) — one of Relevance, Title, -Title, ReleaseDate, -ReleaseDate, RuntimeLength, -RuntimeLength, ContentLevel, -ContentLevel, AmazonEnglish, AvgRating, BestSellers, ProductSiteLaunchDate, Heuristic, -Heuristic. A leading - reverses the sort (e.g. -ReleaseDate is newest first).page (optional, default 0) — zero-based result page.limit (optional, default 10, max 50).At least one of q, title, author, narrator, or category_id is required.
Response includes total_results and results[]: asin, title, subtitle, release_date, runtime_minutes, language, format_type, uri.
Common presets, using the fields already on this response:
sort_by=BestSellers (+ optional category_id).sort_by=-ReleaseDate (+ optional category_id); each result's release_date lets a caller draw their own "coming soon" (future dates) vs. "recently released" (past dates) cutoff client-side — the upstream API has no server-side date-boundary filter to do this for you.Not supported: duration/length, language, format, abridgment, and "featured" facets. These are not exposed as parameters.
| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| asin | 20 | |
| title | 20 | “Project Hail Mary” and 18 other values |
| release_date | 20 | 2006-02-28 to 2026-11-05 |
| runtime_minutes | 19 | 198 to 1,227, median 794 |
| language | 20 | english (17), italian (2), spanish (1) |
| format_type | 20 | unabridged in all 20 |
| product_state | 20 | AVAILABLE (18), AVAILABLE_FOR_PREORDER (2) |
| uri | 20 | audible.com |
| is_preorderable | 2 | true in 2 of 2 |
| subtitle | 8 | “An Operating Manual for the Human Body” and 6 other values |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| q | string | No | Free-text query matched across title, subtitle, and author | ||
| title | string | No | Match by title | ||
| author | string | No | Match by author name | ||
| narrator | string | No | Match by narrator name | ||
| category_id | string | No | Restrict to a category id from GET /audible/categories | ||
| page | integer | No | Zero-based result page, default 0 | ||
| limit | integer | No | Max results, default 10, max 50 | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/audible/search?q=coffee&page=1&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"query": "dune",
"page": 0,
"limit": 2,
"total_results": 1486,
"results": [
{
"asin": "B002V1OF70",
"title": "Dune",
"subtitle": "Book One in the Dune Chronicles",
"release_date": "1965-08-01",
"runtime_minutes": 1262,
"language": "english",
"format_type": "unabridged",
"uri": "https://www.audible.com/pd/B002V1OF70"
},
{
"asin": "B002V8H660",
"title": "Dune Messiah",
"subtitle": "Book Two in the Dune Chronicles",
"release_date": "1969-10-01",
"runtime_minutes": 378,
"language": "english",
"format_type": "unabridged",
"uri": "https://www.audible.com/pd/B002V8H660"
}
],
"source_url": "https://api.audible.com/1.0/catalog/products?keywords=dune&num_results=2&page=0&response_groups=product_desc,product_attrs"
}
}Request schema
No body schema
Response schema
#/definitions/audible.searchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | audible.SearchResponse | No | ||||
| data.author | string | No | ||||
| data.category_id | string | No | ||||
| data.limit | integer | No | ||||
| data.narrator | string | No | ||||
| data.page | integer | No | ||||
| data.query | string | No | ||||
| data.results | array | No | ||||
| data.results[].asin | string | No | ||||
| data.results[].format_type | string | No | unabridged | |||
| data.results[].is_preorderable | boolean | No | IsPreorderable and ProductState are what actually distinguishes a "coming soon" preorder title from an already-released one — there is no upstream query filter for this, so combine sort_by=-ReleaseDate with filtering results on IsPreorderable yourself to build a "coming soon" view. | |||
| data.results[].language | string | No | ||||
| data.results[].product_state | string | No | AVAILABLE_FOR_PREORDER | |||
| data.results[].release_date | string | No | 2021-05-04 | |||
| data.results[].runtime_minutes | integer | No | ||||
| data.results[].subtitle | string | No | ||||
| data.results[].title | string | No | ||||
| data.results[].uri | string | No | ||||
| data.sort_by | string | No | ||||
| data.source_url | string | No | ||||
| data.title | string | No | ||||
| data.total_results | integer | 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/search?q=coffee&page=1&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"