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

# reviews-scraper

`POST /api/reviews-scraper`

## Reviews Scraper

Scrapes reader reviews for a book from a Goodreads book page using a direct book URL. Returns structured review data including reviewer details, ratings, and review text.

---

## Request

**Method:** `POST`  
**URL:** `{{Instance Domain}}/api/reviews-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 reviews from (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 reviews for the specified book.

```json
{
  "status": "Received",
  "statusCode": 200,
  ...
}
```

### Response Field Descriptions

| Field | Type | Description |
| --- | --- | --- |
| status | string | Human-readable status message |
| statusCode | number | HTTP status code of the response |
| reviews | array | List of reader reviews, each with reviewer name, star rating, review text, and date |

## Request body

- object
  - `resourceID` string, required
  - `legacyBookID` unknown
  - `nextPageToken` unknown

## Response `200`

OK

- object
  - `status` string, required
  - `statusCode` integer, required
  - `source` string, uri, required
  - `scrapeURL` string, uri, required
  - `totalCount` integer, required
  - `nextPageToken` string, required
  - `prevPageToken` string, required
  - `reviews` object[], required
    - `id` string, required
    - `reviewer` object, required
      - `id` integer, required
      - `name` string, required
      - `url` string, required
      - `avatar` string, uri, required
      - `isAuthor` boolean, required
      - `reviewCount` integer, required
      - `followerCount` integer, required
    - `rating` integer, required
    - `text` string, required
    - `createdAt` string, required
    - `updatedAt` string, required
    - `spoiler` boolean, required
    - `likeCount` integer, required
    - `commentCount` integer, required
    - `recommendFor` string, required
    - `shelf` string, required
    - `reviewURL` 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-13** `ff140c26cd55` — 1 breaking, 2 info
  - the `legacyBookID` request property type/format changed from `integer`/`` to `null`/``
  - the request property `legacyBookID` became nullable
  - the request property `legacyBookID` became optional

[Full history](https://skmtc.dev/nesaku/apis/api-endpoints/changes/api/reviews-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)
