Datasets API endpoint
Searches named public ebook, audiobook, author, and series records stored from Apple's public catalog. `kind` values: `book`, `audiobook`, `author`, `series`, `audiobook_series`. Unavailable records are excluded. Sort: `relevance` (requires q), `rating_count_desc`, `rating_desc`, `release_date_desc`, `name_asc`, `crawled_at_desc`. Billing: 1 credit per returned record, minimum 2.
/datasets/apple-books/searchMCP tool: datasets_apple_books_search
Searches named ebook, audiobook, author, ebook-series and audiobook-series records stored from Apple's public catalog. This is the collected dataset, not a live Apple request. Unavailable crawl placeholders and records without a name are excluded.
Query parameters:
q: optional full-text query over name, artist, series, narrator and
description; max 256 characters.kind: optional enum book, audiobook, author, series,
audiobook_series.genre, artist, artist_id, publisher, series, narrator,
provider, currency, country, discovery_source: optional exact filters,
max 128 characters each. Use the facets endpoint to discover stored labels.free: optional boolean filter.min_rating: optional 0 through 5.min_rating_count: optional nonnegative integer.sort: relevance (requires q), rating_count_desc (default without q),
rating_desc, release_date_desc, name_asc, or crawled_at_desc.page: 1-based, default 1. page_size: default 20, maximum 100. The maximum
result window is 10,000 (page * page_size <= 10000).The result contains dataset, items, page, page_size, total, and sort.
Each item includes its kind and numeric Apple Books id. Item details avoid
internal retry/error fields. Billing is one credit per record returned, minimum
two.
| Field | Filled in, of 5 checked |
|---|---|
| artist_id | 5 |
| artist_name | 5 |
| artist_url | 5 |
| artwork_url | 5 |
| book_id | 5 |
| crawled_at | 5 |
| currency | 5 |
| description | 5 |
| discovery_country | 5 |
| discovery_source | 5 |
| duration_seconds | 5 |
| free | 5 |
| genres | 5 |
| id | 5 |
| kind | 5 |
| name | 5 |
| narrator | 5 |
| preview_url | 5 |
| price | 5 |
| provider | 5 |
| rating | 5 |
| rating_count | 5 |
| rating_histogram | 5 |
| release_date | 5 |
| url | 5 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| q | string | No | Full-text query over name, artist, series, narrator and description; max 256 characters | ||
| kind | string | No | Record kind: book, audiobook, author, series, audiobook_series Allowed values: book, audiobook, author, series, audiobook_series. | ||
| genre | string | No | Exact Apple Books genre label; use facet=genres to discover values, max 128 characters | ||
| artist | string | No | Exact author or artist name, max 128 characters | ||
| artist_id | string | No | Exact numeric Apple Books artist ID, max 128 characters | ||
| publisher | string | No | Exact ebook publisher, max 128 characters | ||
| series | string | No | Exact series name, max 128 characters | ||
| narrator | string | No | Exact audiobook narrator, max 128 characters | ||
| provider | string | No | Exact audiobook provider, max 128 characters | ||
| currency | string | No | Exact currency code, max 128 characters | ||
| country | string | No | Exact discovery storefront country, max 128 characters | ||
| discovery_source | string | No | Exact crawl source, max 128 characters | ||
| free | boolean | No | Filter for free titles | ||
| min_rating | number | No | Minimum average rating from 0 through 5 | ||
| min_rating_count | integer | No | Minimum rating count, 0 or greater | ||
| sort | string | No | Sort: relevance, rating_count_desc, rating_desc, release_date_desc, name_asc, crawled_at_desc Allowed values: relevance, rating_count_desc, rating_desc, release_date_desc, name_asc, crawled_at_desc. | ||
| page | integer | No | 1-based page, default 1; page * page_size must be <= 10000 | ||
| page_size | integer | No | Page size, default 20, max 100 | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/datasets/apple-books/search?q=coffee&kind=book&country=us&free=true&sort=relevance&page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"dataset": "apple-books",
"items": [
{
"id": "1882772196",
"kind": "audiobook",
"name": "Example Audiobook"
}
],
"page": 1,
"page_size": 20,
"total": 1,
"sort": "relevance"
}
}Request schema
No body schema
Response schema
#/definitions/datasets.appleBooksSearchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | datasets.AppleBooksSearchResponse | No | ||||
| data.dataset | string | No | ||||
| data.items | array | No | AppleBooksDatasetItem record, 36 fields: artist_id, artist_name, artist_url, artwork_url, audience, audiobook_id, audiobook_ids, book_id, book_ids, crawled_at, currency, description and 24 more. Described under Get an Apple Books dataset item API. | |||
| data.page | integer | No | ||||
| data.page_size | integer | No | ||||
| data.sort | string | No | ||||
| data.total | integer | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/datasets/apple-books/search?q=coffee&kind=book&country=us&free=true&sort=relevance&page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"