Goodreads API endpoint
Returns a work's paginated edition list (per-edition book id, format, page count, publication date, publisher, ISBN/ISBN13/ASIN, language, and rating) — every other translation, printing, and format of the requested book id. Goodreads keys editions by a separate "work id", not the book id in the path; requests against a book with no editions data return an upstream error.
/goodreads/book/{id}/editionsGoodreads keys editions by a separate "work id", not the book id in the path (the same numeric value can mean a different book in each id space), so this endpoint makes one extra internal request against the book page to resolve the work id before fetching the editions listing.
Path parameters:
id (required) — Goodreads book id, e.g. 2767052.Query parameters:
page (optional, default 1). About 10 editions per page.Response includes book_id (the requested id), work_id (the resolved work id), title, page, and editions[] (book_id, title, authors[], format, pages, publication_date, publisher, isbn, isbn13, asin, language, average_rating, ratings_count, uri). Any per-edition field may be absent — publishers don't fill in every field for every edition (e.g. many ebook editions have no ISBN).
| Field | Filled in, of 10 checked | Values in the sample |
|---|---|---|
| book_id | 10 | |
| title | 10 | |
| authors | 10 | median 1 entry |
| format | 10 | |
| pages | 10 | 352 to 458, median 387 |
| publication_date | 10 | |
| publisher | 10 | |
| isbn | 3 | |
| isbn13 | 3 | |
| asin | 10 | |
| language | 10 | |
| average_rating | 10 | 4.33 to 4.61, median 4.43 |
| ratings_count | 10 | 10,390 to 9,889,517, median 18,135 |
| uri | 10 | goodreads.com |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| id (path) | string | Yes | Goodreads book id | 2767052 | |
| 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/book/2767052/editions?page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"book_id": "2767052",
"work_id": "2792775",
"title": "The Hunger Games",
"page": 1,
"editions": [
{
"book_id": "2767052",
"title": "The Hunger Games (The Hunger Games, #1)",
"authors": [
"Suzanne Collins"
],
"format": "Hardcover",
"pages": 374,
"publication_date": "October 14th 2008",
"publisher": "Scholastic Press",
"isbn": "0439023483",
"isbn13": "9780439023481",
"asin": "0439023483",
"language": "English",
"average_rating": 4.35,
"ratings_count": 9771855,
"uri": "https://www.goodreads.com/book/show/2767052-the-hunger-games"
}
],
"source_url": "https://www.goodreads.com/work/editions/2792775?page=1"
}
}Request schema
No body schema
Response schema
#/definitions/goodreads.editionsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | goodreads.EditionsResponse | No | ||||
| data.book_id | string | No | Goodreads book id that was requested. | |||
| data.editions | array | No | Editions of the work on this page. | |||
| data.editions[].asin | string | No | Amazon ASIN of the edition. | |||
| data.editions[].authors | array | No | Names of the authors credited on the edition. | |||
| data.editions[].average_rating | number | No | 4.35 | Average rating of the edition out of 5. | ||
| data.editions[].book_id | string | No | Goodreads book id of this edition. | |||
| data.editions[].format | string | No | Hardcover | Binding or format of the edition, such as `Hardcover`. | ||
| data.editions[].isbn | string | No | ISBN-10 of the edition. | |||
| data.editions[].isbn13 | string | No | ISBN-13 of the edition. | |||
| data.editions[].language | string | No | Language the edition is published in. | |||
| data.editions[].pages | integer | No | Number of pages in the edition. | |||
| data.editions[].publication_date | string | No | October 14th 2008 | Publication date as Goodreads shows it, such as `October 14th 2008`. | ||
| data.editions[].publisher | string | No | Publisher of the edition. | |||
| data.editions[].ratings_count | integer | No | Number of ratings the edition has received. | |||
| data.editions[].title | string | No | Title of the edition. | |||
| data.editions[].uri | string | No | Goodreads URL of the edition's book page. | |||
| data.page | integer | No | Page number of editions returned. | |||
| data.source_url | string | No | URL the data was read from. | |||
| data.title | string | No | Title of the work as shown on the editions page. | |||
| data.work_id | string | No | Goodreads work id shared by all the editions listed. | |||
| 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/book/2767052/editions?page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"