# Goodreads Reviews Scraper - Low-cost💲🔥 📚⭐ (`delectable_incubator/goodreads-reviews-scraper-low-cost`) Actor

Scrape Goodreads book reviews 📚⭐ with a powerful review scraper. Extract reviewer names, ratings, review text, review dates, and profile links from any Goodreads book page. Ideal for book market research, sentiment analysis, literary studies, reader feedback analysis, and AI/NLP datasets 📊🚀

- **URL**: https://apify.com/delectable\_incubator/goodreads-reviews-scraper-low-cost.md
- **Developed by:** [Prime Scrape](https://apify.com/delectable_incubator) (community)
- **Categories:** Automation, E-commerce, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.00005 / actor start

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

<p align="center">
<img src="https://i.ibb.co/jkNS73wX/readme.png" alt="Goodreads Review Scraper" width="100%">
</p>

---

## Goodreads Review Scraper | Bulk Goodreads Reviews Extractor | Apify Actor  📚⭐

### 🚀 Extract Goodreads Reviews in Bulk (No Code)

The **Goodreads Review Scraper** is a powerful, scalable and **SEO-optimized Goodreads data extraction tool** designed to scrape reviews from Goodreads book pages at scale.

Extract detailed review information including ratings, review text, reviewer profiles, comments, and engagement data for **book research, sentiment analysis, publishing intelligence, AI datasets, recommendation systems, and market research**.

---

### 🔥 Why This Goodreads Scraper?

✔ Best Goodreads review scraper on Apify

✔ Supports **bulk Goodreads book URLs**

✔ Fast & scalable review extraction

✔ Unlimited review collection potential

✔ Structured JSON / CSV / Excel exports

✔ Ideal for publishers, authors, researchers & marketers

✔ Perfect for AI training datasets

✔ No coding required

---

### 🎯 What This Scraper Does (Goodreads Review Extraction)

This Apify Actor extracts detailed review data directly from Goodreads book pages.

#### 📌 Core Features

✅ Scrape Goodreads reviews

✅ Bulk Goodreads URL support (SEO BOOST 🚀)

✅ Extract ratings and review text

✅ Extract reviewer information

✅ Capture review IDs and profile links

✅ Pagination handling

✅ Large-scale review collection

✅ Clean structured dataset output

✅ High-speed extraction engine

---

### ⚡ Input Configuration (Simple & Powerful)

#### 🔥 BULK URL MODE (SEO BOOST 🚀)

````

{
"book\_urls": \[
"https://www.goodreads.com/book/show/1137215",
"https://www.goodreads.com/book/show/4671",
"https://www.goodreads.com/book/show/2657"
],
"max\_items\_per\_url": 200
}

```

---

### 📊 Extracted Review Data (Structured Output)

| Field       | Description              |
| ----------- | ------------------------ |
| reviewId    | Unique review identifier |
| userName    | Reviewer name            |
| userId      | Goodreads user ID        |
| userProfile | Reviewer profile URL     |
| rating      | Review rating            |
| reviewText  | Full review text         |
| bookUrl     | Goodreads book URL       |
| reviewUrl   | Direct review URL        |
| reviewDate  | Review publication date  |
| likes       | Review engagement count  |
| comments    | Review comments count    |

---

### 💡 Use Cases (High Demand SEO Keywords)

This Goodreads scraper is perfect for:

📚 Goodreads review scraping

📊 Book sentiment analysis

🤖 AI training datasets

✍️ Author reputation monitoring

🏢 Publishing market research

📈 Reader behavior analysis

🎯 Book recommendation engines

🔍 Literary research projects

⚡ Bulk review extraction

---

### 🚀 Key Features (Apify SEO Optimized)

⚡ Bulk Goodreads URL scraping

📚 Massive review collection

📌 Smart pagination handling

🧠 Clean structured output

📊 High-speed extraction engine

🔁 Auto retry & stability system

💾 Export-ready datasets

⚙️ Scalable cloud execution

---

### 📤 Output Formats Supported

✔ JSON

✔ CSV

✔ Excel XLSX

✔ XML

✔ HTML

---

### 📦 Example Output

```

{
"reviewId": "kca://review:goodreads/amzn1.gr.review:goodreads.v1.RNDBp8w45i5aErLE3Wf0Mg",
"userName": "Nancy",
"userId": 763271,
"userProfile": "https://www.goodreads.com/user/show/763271-nancy",
"rating": 4,
"reviewText": "Dazzling inventions, air pirates, evil bad guys, underground vaults, goggles, daring rescues, gold, Blight gas, a one-armed bartender, a princess, zombies...",
"bookUrl": "https://www.goodreads.com/book/show/1137215"
}

````

---

### 🔥 Why This is the BEST Goodreads Review Scraper on Apify?

✔ Optimized for Apify marketplace ranking

✔ High-performance review extraction engine

✔ Bulk URL support

✔ Large-scale Goodreads scraping

✔ Clean structured datasets

✔ Enterprise-ready scalability

✔ Perfect for SEO visibility & lead generation

---

### 💸 Pricing

This scraper runs on a **pay-per-result pricing model**.

You only pay for successfully extracted records.

💳 **Price:** $0.99 / 1,000 results 

---

### ❓ FAQ (SEO BOOST SECTION)

#### Can I scrape multiple Goodreads books at once?

Yes — bulk URL mode is fully supported.

#### Is there a limit on reviews?

No. The scraper can extract large volumes of reviews depending on your configured limits.

#### Can I export the data?

Yes — JSON, CSV, Excel, XML and HTML are supported.

#### Is coding required?

No — this is a fully no-code Apify Actor.

#### Can I use the data for AI training?

Yes — many users export Goodreads review datasets for NLP, sentiment analysis and AI projects.

---

### ⚠️ Disclaimer

This tool is an independent scraper and is not affiliated with, endorsed by, or sponsored by Goodreads.

---

### 🔗 Related Actors (Book & Review Intelligence Suite)

We are building a complete **PrimeScrape Review Intelligence Ecosystem**.

👉 More review, marketplace, company, product and social media scrapers coming soon.

---

### 🌍 PrimeScrape Ecosystem

Built for large-scale:

📚 Review intelligence

📊 Market research

🏢 Company intelligence

🤖 AI datasets

📈 Sentiment analysis

⚙️ Data automation

🔍 Competitive monitoring

---

### 📬 Support

⭐⭐⭐⭐⭐ Leave a review if you enjoy this scraper.

📩 Contact PrimeScrape for custom scraping solutions, enterprise datasets, automation workflows, and private actor development.

# Actor input Schema

## `url_links` (type: `array`):

URLs of the books to scrape reviews from. Add one URL per line.
## `maxitems` (type: `integer`):

The maximum number of reviews to fetch per book URL

## Actor input object example

```json
{
  "url_links": [
    "https://www.goodreads.com/book/show/17408897",
    "https://www.goodreads.com/book/show/2767052"
  ],
  "maxitems": 70
}
````

# Actor output Schema

## `overview` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "url_links": [
        "https://www.goodreads.com/book/show/17408897",
        "https://www.goodreads.com/book/show/2767052"
    ],
    "maxitems": 70
};

// Run the Actor and wait for it to finish
const run = await client.actor("delectable_incubator/goodreads-reviews-scraper-low-cost").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "url_links": [
        "https://www.goodreads.com/book/show/17408897",
        "https://www.goodreads.com/book/show/2767052",
    ],
    "maxitems": 70,
}

# Run the Actor and wait for it to finish
run = client.actor("delectable_incubator/goodreads-reviews-scraper-low-cost").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "url_links": [
    "https://www.goodreads.com/book/show/17408897",
    "https://www.goodreads.com/book/show/2767052"
  ],
  "maxitems": 70
}' |
apify call delectable_incubator/goodreads-reviews-scraper-low-cost --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=delectable_incubator/goodreads-reviews-scraper-low-cost",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Goodreads Reviews Scraper - Low-cost💲🔥 📚⭐",
        "description": "Scrape Goodreads book reviews 📚⭐ with a powerful review scraper. Extract reviewer names, ratings, review text, review dates, and profile links from any Goodreads book page. Ideal for book market research, sentiment analysis, literary studies, reader feedback analysis, and AI/NLP datasets 📊🚀",
        "version": "0.0",
        "x-build-id": "UXrD4Wt8a0we7J4sJ"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/delectable_incubator~goodreads-reviews-scraper-low-cost/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-delectable_incubator-goodreads-reviews-scraper-low-cost",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/delectable_incubator~goodreads-reviews-scraper-low-cost/runs": {
            "post": {
                "operationId": "runs-sync-delectable_incubator-goodreads-reviews-scraper-low-cost",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/delectable_incubator~goodreads-reviews-scraper-low-cost/run-sync": {
            "post": {
                "operationId": "run-sync-delectable_incubator-goodreads-reviews-scraper-low-cost",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "url_links"
                ],
                "properties": {
                    "url_links": {
                        "title": "URLs of the Goodreads books to scrape reviews from 🚨",
                        "type": "array",
                        "description": "URLs of the books to scrape reviews from. Add one URL per line.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxitems": {
                        "title": "Max reviews you want to scrape per book",
                        "type": "integer",
                        "description": "The maximum number of reviews to fetch per book URL",
                        "default": 70
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
