Goodreads API endpoint
Returns a Goodreads Listopia list (ranked book list) by id, paginated.
/goodreads/list/{id}Returns a Goodreads Listopia list (a community-ranked book list) by id, paginated. About 100 books per page.
Path parameters:
id (required) — Goodreads list id (numeric; a trailing .Name is tolerated, e.g. 1.Best_Books_Ever).Query parameters:
page (optional, default 1).Response includes title, page, and books[] (id, title, author, average_rating, ratings_count, uri) in the list's ranked order.
| Field | Filled in, of 100 checked | Values in the sample |
|---|---|---|
| id | 100 | |
| title | 100 | |
| author | 100 | |
| average_rating | 100 | 3.68 to 4.62, median 4.16 |
| ratings_count | 100 | 45,852 to 11,866,997, median 1,722,942 |
| uri | 100 | goodreads.com |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| id (path) | string | Yes | Goodreads list id | 1 | |
| page | integer | No | 1-based page number, default 1 | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/goodreads/list/1?page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"id": "1",
"title": "Best Books Ever",
"page": 1,
"books": [
{
"id": "2767052",
"title": "The Hunger Games (The Hunger Games, #1)",
"author": "Suzanne Collins",
"average_rating": 4.35,
"ratings_count": 10177818,
"uri": "https://www.goodreads.com/book/show/2767052-the-hunger-games"
},
{
"id": "1885",
"title": "Pride and Prejudice",
"author": "Jane Austen",
"average_rating": 4.3,
"ratings_count": 4953851,
"uri": "https://www.goodreads.com/book/show/1885.Pride_and_Prejudice"
}
],
"source_url": "https://www.goodreads.com/list/show/1?page=1"
}
}Request schema
No body schema
Response schema
#/definitions/goodreads.listResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | goodreads.ListResponse | No | ||||
| data.books | array | No | ||||
| data.books[].author | string | No | ||||
| data.books[].average_rating | number | No | 4.35 | |||
| data.books[].id | string | No | ||||
| data.books[].ratings_count | integer | No | ||||
| data.books[].title | string | No | ||||
| data.books[].uri | string | No | ||||
| data.id | string | No | ||||
| data.page | integer | No | ||||
| data.source_url | string | No | ||||
| data.title | string | No | Best Books Ever | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/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/list/1?page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"