---
title: "book-scraper"
method: POST
path: "/api/book-scraper"
---

# book-scraper

`POST /api/book-scraper`

## Book Scraper

Scrapes detailed book metadata from a Goodreads book page using a direct book URL. Returns structured information about the book including title, author(s), cover image, series details, and more.

---

## Request

**Method:** `POST`  
**URL:** `{{Instance Domain}}/api/book-scraper`

### Headers

| Key | Value | Description |
| --- | --- | --- |
| Content-Type | application/json | Indicates the request body is JSON |

### Body

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| queryURL | string | Yes | The full Goodreads book page URL to scrape (e.g. `https://www.goodreads.com/book/show/5907`) |

**Example Body:**

``` json
{
  "queryURL": "https://www.goodreads.com/book/show/5907"
}

 ```

---

## Response

### 200 Success

Returns a JSON object containing the scraped book metadata.

``` json
{
  "status": "Received",
  "statusCode": 200,
  "source": "string (GitHub source URL)",
  "scrapeURL": "string (the Goodreads book URL that was scraped)",
  "legacyBookID": "number",
  "bookID": "string (KCA book ID)",
  "resourceID": "string (KCA work ID)",
  "cover": "string (image URL)",
  "series": "string",
  "seriesURL": "string",
  "seriesPosition": "string",
  "workURL": "string",
  "title": "string",
  "author": [
    {
      "id": "number",
      "name": "string",
      "role": "string (e.g. Author, Editor, Illustrator)",
      "url": "string"
    }
  ]
}

 ```

### Response Field Descriptions

| Field | Type | Description |
| --- | --- | --- |
| status | string | Human-readable status message (e.g. `"Received"`) |
| statusCode | number | HTTP status code of the scrape operation |
| source | string | URL pointing to the GitHub source of the scraper |
| scrapeURL | string | The Goodreads book URL that was scraped |
| legacyBookID | number | The legacy numeric Goodreads book ID |
| bookID | string | KCA-format book identifier |
| resourceID | string | KCA-format work identifier |
| cover | string | URL of the book's cover image |
| series | string | Name of the series the book belongs to (if any) |
| seriesURL | string | URL to the series page on Goodreads |
| seriesPosition | string | Position of the book within the series |
| workURL | string | URL to the book's work page on Goodreads |
| title | string | Title of the book |
| author | array | List of contributors (authors, editors, illustrators, etc.) |
| author\[\].id | number | Goodreads author ID |
| author\[\].name | string | Full name of the contributor |
| author\[\].role | string | Role of the contributor (e.g. `Author`, `Editor`, `Illustrator`) |
| author\[\].url | string | URL to the contributor's Goodreads profile |

## Request body

- object
  - `queryURL` string, uri, required

## Response `200`

OK

- object
  - `status` string, required
  - `statusCode` integer, required
  - `source` string, uri, required
  - `scrapeURL` string, uri, required
  - `legacyBookID` integer, required
  - `bookID` string, required
  - `resourceID` string, required
  - `cover` string, uri, required
  - `series` string, required
  - `seriesURL` string, required
  - `seriesPosition` string, required
  - `workURL` string, uri, required
  - `title` string, required
  - `author` object[], required
    - `id` integer, required
    - `name` string, required
    - `role` string, required
    - `url` string, required
  - `rating` string, required
  - `ratingCount` string, required
  - `reviewsCount` string, required
  - `desc` string, required
  - `genres` string[], required
  - `bookEdition` string, required
  - `publishDate` string, required
  - `publisher` string, required
  - `language` string, required
  - `asin` string, required
  - `isbn` unknown
  - `isbn13` unknown
  - `related` unknown[], required
    - unknown
  - `reviews` unknown[], required
    - unknown
  - `reviewBreakdown` object, required
    - `rating1` string, required
    - `rating2` string, required
    - `rating3` string, required
    - `rating4` string, required
    - `rating5` string, required
  - `quotes` string, required
  - `quotesURL` string, required
  - `questions` string, required
  - `questionsURL` string, required
  - `lastScraped` string, date-time, required

## Changes

- **2026-06-15** `6ef082114b12` — 1 info
  - endpoint added
- **2026-06-15** `9188f0ce7be6` — 1 breaking
  - api path removed without deprecation
- **2026-06-15** `6ef082114b12` — 1 info
  - endpoint added
- **2026-06-14** `539ea0e4fa2a` — 1 breaking
  - api path removed without deprecation
- **2026-06-14** `fb7e3c915bdd` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/nesaku/apis/api-endpoints/changes/api/book-scraper/post.md)

---

[API](https://skmtc.dev/nesaku/apis/api-endpoints.md) · [All operations](https://skmtc.dev/nesaku/apis/api-endpoints/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/nesaku/api-endpoints/revisions/182d9252d879/schema)
