Goodreads holds the largest public record of what readers actually think: ratings, reviews, and personal shelves for millions of titles. The catch is getting it out. The Goodreads API closed to new developers in 2020 and has been winding down ever since, so if your key stopped working, the official route to book and review data is closed.
If you want to build on this data with AI, you have to supply it yourself. A language model can't see this week's ratings or a book that came out yesterday. It needs a live data layer, and Goodreads no longer hands you one.
Goodreads Scraper is one of the ready-made Apify tools you can use as an unofficial Goodreads API: pull book details and thousands of reader reviews for any genre, author, or list, export them as JSON or a spreadsheet, and feed it straight to your app or AI tool. No API key needed.
How Goodreads Scraper works
Goodreads Scraper takes the keywords or Goodreads URLs you give it, works through the matching pages, and collects everything into a structured dataset. For each book, it pulls two layers of data. The first is book-level metadata, such as title, author, page count, or publisher. The second is review-level data: the text of individual reader reviews, each with its own star rating, like count, and date.
Actors have access to platform features such as built-in proxy management, anti-bot evasion support, integrated storage with structured CSV/Excel/JSON exports, and standardized input parameters (URLs, keywords, limits, etc.). Actors integrate easily with tools like Make, n8n, or into AI workflows, so you can send your data directly into analysis pipelines without manual handling.
How to collect Goodreads data, step by step
Running Goodreads Scraper takes just a few steps, from setup to exporting data you can analyze. You don't need to write any code or configure proxies to follow along.
Step 1: Set up the Actor
Open Goodreads Scraper in Apify Store and click Try for free. If you don't have an account yet, you can create one with your email, Google, or GitHub account.

You can use keywords or Goodreads URLs as input. In this example, we want book-level and review-level data from the mystery genre, so paste the genre URL into the Start URLs field:
https://www.goodreads.com/genres/mystery?ref=nav_brws_genres

Use the toggle to include book reviews. You can also set the maximum number of items to collect and the last page you want to reach.

Click Start to run the Actor.
Step 2: Run the Actor and export your data
The Actor works through your keywords or URLs and collects every matching book, then pushes the results to a dataset. When the run finishes, open the Output tab and export as JSON (to feed an application, pipeline, or AI tool) or CSV/Excel (to open in any spreadsheet or BI tool).


Each record is one book, with its metadata and an array of reviews attached. From here, the analysis is yours to run however you want.
- API client for JavaScript
- API client for Python
To use the Apify API, you’ll need an Apify account and your API token, found in Integrations settings in Apify Console.
Step 3 (optional): Schedule automated runs
Instead of clicking Start by hand, you can set up automated runs in Apify Console. Configure the Actor, then click Save as a new task in the top-right corner.


Give the task a name and save it. Open Schedules in the left-hand navigation, click Create a schedule, add your task, and choose how often it should run: daily, weekly, monthly, or any cadence that fits.


Click Save & enable to finish. From now on, each run drops a fresh dataset you can analyze and compare over time.
What one Actor run returns
The two tables below map the highest-value fields to the intelligence each one enables.
Book-level fields
| Field | What it holds | Intelligence it enables |
|---|---|---|
title / authorName |
Book and author identity | Base entity for every join, ranking, and comparison |
rating |
Average Goodreads score | Quality ranking; correlate against every other field |
numberOfRatings |
Popularity and volume | Popularity axis; hidden-gem vs. overhyped quadrant |
numberOfReviews |
Written-review count | Engagement depth vs. passive ratings |
numberOfPages |
Length | Length-vs-rating correlation |
firstPublishedDate / publishedDate |
Original vs. edition date | Recency, backlist vs. new-release cohorts |
publishedBy |
Publisher or imprint | Publisher performance benchmarking |
Series |
Series membership | Series vs. standalone performance |
Literary Awards |
Awards listed | Award-vs-rating check |
authorAbout |
Author bio | Author profiling and backlist context |
description |
Book blurb | Topic and theme modeling, positioning |
ISBN |
Identifier | Cross-linking to retail or library data |
buyLinks |
Retailer URLs | Commercial and availability signal |
Review-level fields
| Field | What it holds | Intelligence it enables |
|---|---|---|
text |
Full review body | Sentiment, theme mining, praise and complaint drivers |
rating |
Per-review stars | Sentiment distribution; polarization per book |
shelves |
Reader tags | De-facto genres and moods, with no genre field needed |
numOfLikes |
Review popularity | Surface the most influential reviews |
date |
Review date | Review velocity, buzz timing, and recency |
author / userUrl |
Reviewer identity | Reviewer-level analysis, superfan and critic detection |
Analyze your findings
A single run for the mystery genre returns one JSON file: 45 books and 33,656 individual reviews, roughly 748 reviews per book, and capped at 1,000 for the biggest titles. That's the raw material for a book intelligence pipeline.
The book-level metadata is complete across all 45 titles, while optional fields fill in only where Goodreads shows them (ISBN on 36 of 45, awards on 22, series on 17), so you build reliable analysis on the core fields and handle the rest as optional.
The fastest way to turn that file into insight is to hand it to an AI tool. Drop the JSON export into Claude, and ask it to analyze the file.


Claude's analysis based on the pulled Goodreads data
Here's what came out of this run:
- Quality vs. popularity. Average rating sits in a tight band, from 3.33 to 4.41, with a mean of 3.98. The genre's top positions by volume, such as Gone Girl, The Silent Patient, and The Girl with the Dragon Tattoo (each around 3.5M ratings), land at 4.15 to 4.18. But the highest-rated books are ones far fewer people have picked up: Ironwood by Michael Connelly (4.41) and Storm Tide by Paul Doiron (4.40). The most talked-about book isn't the best-loved one, and the data points you straight to the hidden gems.
- Sentiment split. Across the 32,939 reviews that carry a star rating, 70.8% are 4 or 5 stars, and only 10.4% are 1 or 2 stars. The words people used split cleanly by rating: "twist," "gripping," "couldn't put it down," and "atmospheric" fill the glowing reviews, while "boring," "predictable," and "slow" run through the harsh ones.
- The influential reviews. The reviews in this run carry 926,736 likes between them. Sorting by
numOfLikessurfaces the voices that shape opinion. The single most-liked review here is a 1-star with 10,086 likes, a reminder that critical reviews often travel furthest.
The book metadata is the surface layer; the review text, shelves, likes, and dates are what turn a lookup into intelligence, and that's exactly the layer scraping gives you.
Start building your book intelligence pipeline
Pick a single genre, author page, or list you care about. Pull the data, export the JSON, and hand it to your AI tool of choice, or wire it in through Apify MCP so your app pulls fresh book and review data on demand. Within a few minutes, you'll have an analysis of ratings, sentiment, and reader buzz that no official API can give you anymore.
FAQ
Is it legal to collect data from Goodreads?
Collecting publicly available data is permissible, and the book and review data on Goodreads is public. Never scrape personal or private data unless you have a legitimate reason to do so. If you're unsure whether your specific use case is allowed, talk to a lawyer.
Can I feed Goodreads data to Claude or ChatGPT?
Yes. Export the scraped data as JSON and drop it straight into an AI tool to rank books, mine review sentiment, or spot reading trends. To skip the manual export, connect through Apify MCP, which lets Claude, ChatGPT, or any MCP-compatible client call the Actor and pull fresh Goodreads data on demand.
Is the Goodreads API still available?
Not for new projects. Goodreads stopped issuing new API keys in 2020 and has been winding the API down since, so most developers who go looking for it find a dead end. Existing integrations have gradually broken, and there's no official replacement for pulling book and review data at scale.