Goodreads Scraper — Book Ratings, Authors & Metadata avatar

Goodreads Scraper — Book Ratings, Authors & Metadata

Pricing

from $2.69 / 1,000 goodreads book returneds

Go to Apify Store
Goodreads Scraper — Book Ratings, Authors & Metadata

Goodreads Scraper — Book Ratings, Authors & Metadata

Scrape Goodreads books by search or URL: ratings, rating counts, authors, pages, genres and descriptions. Goodreads API alternative, USD 3.37 per 1,000 books.

Pricing

from $2.69 / 1,000 goodreads book returneds

Rating

0.0

(0)

Developer

Muhammad Afzal

Muhammad Afzal

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

14 hours ago

Last modified

Share

Goodreads Scraper searches Goodreads by title, author or keyword, or reads Goodreads book URLs you supply, and returns one clean row per book: title, authors, average rating, rating and review counts, page count, publication date, ISBN when shown, genres and description. It is built for publishers, booksellers, data scientists and reading-app developers who need Goodreads book data without the retired Goodreads API, and it costs about USD 3.37 per 1,000 books (USD 0.003368 per book on the Free tier) plus a start fee of about USD 0.006.

What data does the Goodreads scraper return?

Each dataset row is one Goodreads book. Search results give the fields Goodreads shows in its search list; turning on includeDescription (or passing book URLs) opens each book page and fills the rest.

FieldWhat it containsFrom searchFrom book page
titleBook title, including series when Goodreads shows ityesyes
bookUrlCanonical book URL https://www.goodreads.com/book/show/<id> (the row's unique key)yesyes
authorsAuthor names; book pages also list editors and illustratorsyesyes
ratingAverage rating (1–5)yesyes
ratingsCountNumber of ratings, exactonly when Goodreads prints the exact numberyes
reviewsCountNumber of written reviews–yes
pagesPage count of the edition–yes
publicationDateYear from search; first-publication date from the book pageyearfull date
isbnISBN-13 when Goodreads shows one for the edition–yes, when present
descriptionBook description–yes
shelvesTop genres (shelves)–yes
sourceQueryThe search term that found the book (null for URL input)yesyes
scrapedAtCollection time (ISO 8601)yesyes

Goodreads now shows rounded rating counts such as "4.6m" in some search layouts. The Actor leaves ratingsCount empty instead of guessing; turn on includeDescription to get the exact count from the book page.

Is there a Goodreads API alternative?

Yes. Goodreads stopped issuing developer API keys, so this Actor reads the public Goodreads search and book pages and returns the data as JSON, CSV or Excel. You call it through the Apify API from JavaScript, Python or any HTTP client, or from an AI assistant, and you pay only for books returned.

How do I scrape Goodreads search results?

Put one or more titles, authors or keywords in searchTerms and set maxResultsPerSearch (1–50). A search for "The Hobbit" returns the same books, in the same order, that Goodreads lists for that query. Searches run one request at a time with a polite delay (requestDelayMs, default 1.2 seconds).

Can I scrape specific Goodreads books by URL?

Yes. Put book URLs in bookUrls, for example https://www.goodreads.com/book/show/234225.Dune. Only those books are read; the sample search does not run when you pass URLs. Different URL forms of the same book (with or without the title slug, query strings or anchors) produce one row and one charge.

When should I use this Actor, and when not?

Use it for reading-list enrichment, comparing ratings across editions, catalogue research, recommendation-model training data and author or series tracking.

Do not use it for:

Input

FieldDefaultNotes
searchTerms["The Hobbit"] (prefill)Titles, authors or keywords, up to 50
bookUrls–Goodreads book URLs, up to 100
maxResultsPerSearch101–50 books per search
includeDescriptionfalseOpen each search result's book page for description, pages, ISBN, genres and exact counts
requestDelayMs1200500–10,000 ms between requests
{
"searchTerms": ["Brandon Sanderson", "Project Hail Mary"],
"maxResultsPerSearch": 20,
"includeDescription": true
}

JavaScript (apify-client)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('muhammadafzal/goodreads-scraper').call({ searchTerms: ['Dune'], maxResultsPerSearch: 5, includeDescription: true });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map((b) => `${b.title} — ${b.rating} (${b.ratingsCount} ratings)`));

Python (apify-client 3.x)

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("muhammadafzal/goodreads-scraper").call(
run_input={"bookUrls": [{"url": "https://www.goodreads.com/book/show/5907.The_Hobbit"}]}
)
for book in client.dataset(run.default_dataset_id).iterate_items():
print(book["title"], book["pages"], book["shelves"])

Use it from an AI assistant

Goodreads Scraper works from Claude, ChatGPT, Cursor or any MCP client through Apify's MCP server. Add https://mcp.apify.com/?tools=muhammadafzal/goodreads-scraper and ask, for example: "Look up the first four Dune books on Goodreads and give me each one's rating, number of ratings and page count."

Output example

[
{
"title": "Dune (Dune, #1)",
"bookUrl": "https://www.goodreads.com/book/show/234225",
"authors": ["Frank Herbert"],
"isbn": "9780340839935",
"rating": 4.29,
"ratingsCount": 1722482,
"reviewsCount": 90404,
"pages": 604,
"publicationDate": "June 1, 1965",
"description": "Set on the desert planet Arrakis, Dune is the story of the boy Paul Atreides…",
"shelves": ["Science Fiction", "Fiction", "Fantasy", "Classics"],
"sourceQuery": null
},
{
"title": "The Hobbit, or There and Back Again",
"bookUrl": "https://www.goodreads.com/book/show/5907",
"authors": ["J.R.R. Tolkien"],
"rating": 4.3,
"ratingsCount": null,
"publicationDate": "2002",
"sourceQuery": "The Hobbit"
}
]

How much does the Goodreads scraper cost?

You pay per book saved to the dataset, plus a start fee per started GB of allocated memory. Platform usage is included.

EventFreeBronzeSilverGold
Goodreads book returnedUSD 0.003368USD 0.003283USD 0.003199USD 0.002694
Actor start (per started GB of memory)USD 0.006251USD 0.006094USD 0.005938USD 0.005

The default memory is 256 MB, so one start event is charged. Worked totals on the Free tier: the 10-book sample search costs about USD 0.006 + 10 × 0.003368 = USD 0.04; 500 books (50 searches of 10) cost about USD 1.69. Each book is charged once per run, incomplete rows are never saved or charged, and if you set a maximum charge the run stops cleanly before going over it.

Reliability and limits

  • Up to 50 searches of 50 books and 100 book URLs per run. A 10-book search finishes in well under a minute; includeDescription adds one book-page request per result.
  • Goodreads sometimes answers automated visits with an access check. The Actor retries with a fresh session; a book page that stays blocked keeps its search data without a description, and a blocked URL input returns no row and no charge.
  • Every run writes a SUMMARY record with status (DATA, EMPTY, BLOCKED or REJECTED), books saved, book events charged, access checks met and warnings. A run blocked on every request ends as failed with no book charges.

FAQ

Does it return Goodreads reviews? It returns the average rating and the rating and review counts, not review text.

Why is ratingsCount empty for some books? Goodreads showed a rounded count in its search list. Turn on includeDescription to read the exact count from the book page.

Will I be charged twice for the same book? No. Rows are keyed by the Goodreads book ID, so URL variants and repeated search hits produce one row and one charge.

Do I need a Goodreads account or a proxy? No. The Actor reads public pages without logging in, and access is handled for you.

How fresh is the data? Every run reads the live Goodreads pages.

The Actor reads public Goodreads pages without logging in and at a polite request rate. Book descriptions and metadata are Goodreads' and publishers' content; check the Goodreads terms before republishing, and use the data for research, analysis or internal tools.

Last verified: 2026-10-27