Goodreads API endpoint
Searches Goodreads for books by title or author using `q`, returning up to `limit` results (default 10, max 50). Each result has its id, title, author and author id, average rating, ratings count, page count, a truncated description, cover image URL and Goodreads URL. Only books are returned, not authors or lists.
/goodreads/searchQuery parameters:
q (required) — search query.limit (optional, default 10, max 50).Response includes results[]: id, title, author, author_id, average_rating, ratings_count, pages, description (truncated), image_url, uri.
| Field | Filled in, of 5 checked | Values in the sample |
|---|---|---|
| id | 5 | |
| title | 5 | |
| author | 5 | |
| author_id | 5 | |
| average_rating | 5 | 4 to 4.49, median 4.36 |
| ratings_count | 5 | 1,316,316 to 10,316,078, median 3,891,739 |
| pages | 5 | 374 to 541, median 391 |
| description | 5 | median 178 characters |
| image_url | 5 | i.gr-assets.com |
| uri | 5 | goodreads.com |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| q | string | Yes | Search query | hunger games | |
| 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/goodreads/search?q=hunger+games&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"query": "hunger games",
"results": [
{
"id": "2767052",
"title": "The Hunger Games",
"author": "Suzanne Collins",
"author_id": "153394",
"average_rating": 4.35,
"ratings_count": 10177818,
"pages": 374,
"description": "Winning means fame and fortune. Losing means certain death. The Hunger Games have begun...",
"image_url": "https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1586722975i/2767052._SX50_.jpg",
"uri": "https://www.goodreads.com/book/show/2767052-the-hunger-games"
}
],
"source_url": "https://www.goodreads.com/book/auto_complete?format=json&q=hunger+games"
}
}Request schema
No body schema
Response schema
#/definitions/goodreads.searchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | goodreads.SearchResponse | No | ||||
| data.query | string | No | Search query that was run. | |||
| data.results | array | No | Books matching the query. | |||
| data.results[].author | string | No | Name of the book's author. | |||
| data.results[].author_id | string | No | Goodreads author id. | |||
| data.results[].average_rating | number | No | 4.35 | Average rating of the book out of 5. | ||
| data.results[].description | string | No | Book description, shortened to a short excerpt. | |||
| data.results[].id | string | No | Goodreads book id. | |||
| data.results[].image_url | string | No | URL of the book cover image. | |||
| data.results[].pages | integer | No | Number of pages in the book. | |||
| data.results[].ratings_count | integer | No | Number of ratings the book has received. | |||
| data.results[].title | string | No | Title of the book as Goodreads shows it. | |||
| data.results[].uri | string | No | Goodreads URL of the book page. | |||
| data.source_url | string | No | URL the data was read from. | |||
| 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/goodreads/search?q=hunger+games&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"