Goodreads: scrapers and the official API, compared

Books, authors, series, Listopia lists, ratings, review text and publish years from Goodreads.

Short answer

For most Goodreads jobs, start with Goodreads Book, Author & Listopia List Scraper: it covers 5 of 7 core fields (title, url, rating, ratings and 1 more) at $0.99 per 1,000 results on Apify's Free plan. The top published score for Goodreads goes to Goodreads Review Scraper by shahidirfan (91 of 100), a Store tool from another publisher, listed for reference.

From published Store listings, output schemas and the official documentation. Checked 2026-10-28. How the ranking works.

Goodreads Book, Author & Listopia List Scraper: inputs, code and costOpen in Apify Store

1 catalogue Actor 8 other Store tools Official API: Retired Lowest rate  $0.05 per 1K

Route map

Each line is one way to get Goodreads data; each stop is a field you probably need. Green lines are catalogue Actors, ranked by the published formula.

Route diagram for Goodreads dataGoodreads Book, Author & Listopia List Scraper: stops at 4 of the 10 fields shown; Other Store tools (5): stops at 10 of the 10 fields shown; Goodreads public developer API: retired, field coverage not compared.Goodreadspublishedreviewertitleurlratingratingsbook titleauthorNamehelpful countlikes1+API

Stops are fields. A ring means the field is in that route's published output schema; no ring means the line passes without it. Bold labels are the core fields for this website, the rest are fields that differ between routes. A white capsule means every data line stops there. The red line is the official API; its field coverage is not compared. A crossed red line means there is no open official API.

Catalogue Actors for Goodreads

Goodreads Book, Author & Listopia List Scraper

Look up Goodreads books by URL, search query, or ISBN, or pull every book by an author, in a series, on a Listopia list, shelf, or genre page.…

5/7 core fields 13 output fields $0.99 per 1K Open in Apify Store

Field matrix: who returns what

Every tool with a published output schema, against the 7 fields most Goodreads jobs need. A dot means the field name appears in the schema; rows can still leave it empty.

Which tools return each core Goodreads field, from published output schemas
TooltitleurlratingratingspublishedreviewreviewerFields
Goodreads Book, Author & Listopia List Scraper●●●●–●–5/7
Goodreads Review ScraperReference only, by shahidirfan●●●●–●●6/7
Goodreads ScraperReference only, by epctex●●●●●––5/7
Goodreads ScraperReference only, by tortuga●●●●●–●6/7
Goodreads Review ScraperReference only, by scrapestorm––●●–●–3/7
Goodreads Reviews ScraperReference only, by parseforge●–●●–●●5/7
Tools returning it5466243

Field dictionary: the exact keys

The same core field has a different key in each Actor's output. Map these before you merge datasets; a dash means the published schema has no matching key. Need a field that is not listed here, such as email? Search every Goodreads Actor by field.

Output keys for each core Goodreads field in the top catalogue Actors
Core field Goodreads Book, Author…
title title
url url
rating averageRating, rating
ratings averageRating, rating
published –
review reviewText
reviewer –

All 9 tools, scored

Catalogue Actors link to their detail pages; the score (0 to 100) is the published formula, identical for every tool. Other Store tools follow in their own table, for reference. Price is the published primary-result rate per 1,000 (the Free-plan rate where the price is tiered; higher Apify plans pay less); start events and platform usage are excluded.

Catalogue Actors for Goodreads, ranked by the published method
Sample fields
77
Goodreads Book, Author & Listopia List Scraper Catalogue Actor, pay per event
title, url, averageRating 13 $0.99 15 runs, too few to rate Oct 2026

Other Store tools, for reference

Scored with the same published formula and listed for comparison only; this site does not link or recommend them.

Other Store tools for Goodreads, for reference
Sample fields
91
Goodreads Review Scraper Reference only, by shahidirfan
book_title, book_url, rating 12 $1.00 100% of 175 runs Sep 2026
88
Goodreads Scraper Reference only, by epctex
title, url, rating 18 $1.90 98% of 2,757 runs Nov 2026
87
Goodreads Scraper Reference only, by tortuga
title, url, averageRating 42 $3.00 99% of 417 runs Nov 2026
78
Goodreads Review Scraper Reference only, by scrapestorm
rating, review_text, review_id 14 $0.05 100% of 29 runs Jun 2026
68
Goodreads Reviews Scraper Reference only, by parseforge
bookTitle, rating, reviewText 14 $12 100% of 40 runs Oct 2026
68
Goodreads Scraper Reference only, by maximedupre
No published schema – $1.80 99% of 8,517 runs Jun 2026
67
Goodreads Review Scraper Reference only, by easyapi
No published schema – $2.99 98% of 42 runs Nov 2025
66
Goodreads Book Scraper Reference only, by easyapi
No published schema – $2.99 96% of 85 runs Mar 2025

Official API route

Goodreads public developer API

As of December 8, 2020, Goodreads stopped issuing new developer keys for its public developer API and said it plans to retire these tools. No replacement public API is offered.

Price. No new API keys are issued.

Limits. New keys are not available since December 8, 2020. The help article renders client-side; the statement was read from the official Goodreads Developers group.

Official documentation

Goodreads terms prohibit data mining, robots and similar extraction tools and commercial use without written consent; reviews are personal content. This is general information, not legal advice.

Read Goodreads' terms. Keep to public data, do not bypass logins or access controls, and check whether personal data is involved before you collect it. The can-I-scrape checklist walks through it.

How to start

  1. Open Goodreads Book, Author & Listopia List Scraper and start from its default input; its Actor page has the full example input and code.
  2. Set the Goodreads search, profile, listing or URL you need and a result limit; the required input is mode.
  3. Run it and export the dataset as JSON, CSV or Excel, or call it from the Apify API.

Call Goodreads Book, Author & Listopia List Scraper from code

The example input uses the Actor's published defaults; set your own Goodreads query before you run it. You need an Apify API token.

Python

from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
    "mode": "isbns",
    "bookUrls": [
        "https://www.goodreads.com/book/show/4671.The_Great_Gatsby"
    ],
    "searchQueries": [],
    "isbns": [
        "9780743273565"
    ],
    "authorUrls": [],
    "seriesUrls": [],
    "listUrls": [],
    "shelfNames": [],
    "genreNames": [],
    "maxItems": 1,
    "detailLevel": "full",
    "includeMetadata": False,
    "includeRelated": False,
    "maxReviewsPerBook": 3,
    "reviewSort": "DEFAULT",
    "reviewLanguage": "all",
    "excludeSpoilers": False,
    "maxEditionsPerBook": 3,
    "quoteTags": [
        "love"
    ],
    "quoteAuthorUrls": [],
    "quoteWorkUrls": [],
    "maxQuotesPerSource": 3,
    "maxSimilarPerBook": 5,
    "maxListsPerBook": 5,
    "releaseYear": 2026,
    "releaseMonth": "all"
}

run = client.actor("dataspryva/goodreads-book-author-and-listopia-list-scraper").call(run_input=run_input)
if run is None:
    raise RuntimeError("The Actor run was not found.")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

pip install apify-client

JavaScript

import { ApifyClient } from "apify-client";

const client = new ApifyClient({ token: "<YOUR_APIFY_TOKEN>" });
const input = {
    "mode": "isbns",
    "bookUrls": [
        "https://www.goodreads.com/book/show/4671.The_Great_Gatsby"
    ],
    "searchQueries": [],
    "isbns": [
        "9780743273565"
    ],
    "authorUrls": [],
    "seriesUrls": [],
    "listUrls": [],
    "shelfNames": [],
    "genreNames": [],
    "maxItems": 1,
    "detailLevel": "full",
    "includeMetadata": false,
    "includeRelated": false,
    "maxReviewsPerBook": 3,
    "reviewSort": "DEFAULT",
    "reviewLanguage": "all",
    "excludeSpoilers": false,
    "maxEditionsPerBook": 3,
    "quoteTags": [
        "love"
    ],
    "quoteAuthorUrls": [],
    "quoteWorkUrls": [],
    "maxQuotesPerSource": 3,
    "maxSimilarPerBook": 5,
    "maxListsPerBook": 5,
    "releaseYear": 2026,
    "releaseMonth": "all"
};

const run = await client.actor("dataspryva/goodreads-book-author-and-listopia-list-scraper").call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

npm install apify-client

cURL

curl -X POST "https://api.apify.com/v2/actors/dataspryva~goodreads-book-author-and-listopia-list-scraper/run-sync-get-dataset-items"   -H "Authorization: Bearer $APIFY_TOKEN"   -H "Content-Type: application/json"   -d '{"mode":"isbns","bookUrls":["https://www.goodreads.com/book/show/4671.The_Great_Gatsby"],"searchQueries":[],"isbns":["9780743273565"],"authorUrls":[],"seriesUrls":[],"listUrls":[],"shelfNames":[],"genreNames":[],"maxItems":1,"detailLevel":"full","includeMetadata":false,"includeRelated":false,"maxReviewsPerBook":3,"reviewSort":"DEFAULT","reviewLanguage":"all","excludeSpoilers":false,"maxEditionsPerBook":3,"quoteTags":["love"],"quoteAuthorUrls":[],"quoteWorkUrls":[],"maxQuotesPerSource":3,"maxSimilarPerBook":5,"maxListsPerBook":5,"releaseYear":2026,"releaseMonth":"all"}'

Waits for the run and returns the dataset items (runs over 300 seconds return HTTP 408; start an async run instead).

MCP (AI agents)

{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=dataspryva/goodreads-book-author-and-listopia-list-scraper",
      "headers": {
        "Authorization": "Bearer <YOUR_APIFY_TOKEN>"
      }
    }
  }
}

Adds this Actor as a tool in an MCP client that takes a remote server URL (Cursor, VS Code, Claude Code) through Apify's hosted MCP server. OAuth sign-in also works without the header. Clients that only start local servers can wrap the URL with npx mcp-remote.

Questions people ask

What is the cheapest catalogue Actor for Goodreads data?

Goodreads Book, Author & Listopia List Scraper lists $0.99 per 1,000 results (pay per event), with 13 fields in its published output schema. Start events and platform usage are billed separately. Checked 2026-10-28.

Which Goodreads scraper returns the most core fields?

Goodreads Book, Author & Listopia List Scraper covers 5 of the 7 core Goodreads fields this page tracks (title, url, rating, ratings, published, review, reviewer), based on its published output schema.

Does Goodreads have an official API?

Retired: As of December 8, 2020, Goodreads stopped issuing new developer keys for its public developer API and said it plans to retire these tools. No replacement public API is offered. No new API keys are issued.

Is it legal to scrape Goodreads?

It depends on what you collect and how. Goodreads terms prohibit data mining, robots and similar extraction tools and commercial use without written consent; reviews are personal content. Read Goodreads' terms (https://www.goodreads.com/about/terms) before you collect, and check whether personal data is involved. This is general information, not legal advice.

More on Goodreads

Sources

Data checked 2026-10-28
Cite this page

Scraper Finder. "How to get Goodreads data." https://scraperfinder.com/sites/goodreads/ (data checked 2026-10-28).

Highest-scoring catalogue Actor

Goodreads Book, Author & Listopia List Scraper: 5 of 7 core fields, $0.99 per 1,000 results, score 77. The highest score overall is 91 (Goodreads Review Scraper, a Store tool from another publisher); both are in the table above.

Open in Apify Store