Social media
Goodreads Book & Reviews Scraper
Scrape Goodreads books and reviews — title, author, series, genres, ISBN/ASIN, ratings, and review text — from book URLs or search queries. No login.
Free Apify credit covers a first run. No credit card to try.
What this Actor scrapes
Goodreads retired its official API in December 2020, leaving no supported way to pull book metadata, ratings, or review text at scale. This Actor resolves books three ways — direct book, author, or list/shelf (Listopia) URLs, free-text or ISBN search, or a shelf page you already have bookmarked — and returns full book metadata (title, author, series, genres, ISBNs, ratings, awards) plus the reviews Goodreads embeds on the page, in one PPE-priced call.
What we handle for you
- 🛡️ Browser fingerprint rotation —
curl-cffiimpersonates real Chrome / Firefox / Safari TLS handshakes so Goodreads sees a browser, not Python. - 🌐 Apify Proxy on every request, escalating to residential exit IPs with no input change if a block ever shows up.
- 🔁 Retries with exponential backoff on
408 / 429 / 503— up to 5 attempts per page,Retry-Afterhonoured. - 🧱 Session rotation on every block — a fresh proxy session and browser fingerprint the moment one gets flagged.
- 🧊 Clean, typed dataset rows — Pydantic-validated, ISO-8601 timestamps, stable book IDs, JSON / CSV / Excel export straight from the Apify Console.
- 💰 Pay-Per-Event pricing — you only pay for book and review rows that hit your dataset. No data, no charge.
Use cases
- Catalogue enrichment — backfill title, author, series, ISBN, and cover-image metadata for a bookstore, library, or reading-app catalogue.
- Reader-sentiment research — pull a book's rating distribution and a sample of review text to gauge audience reception before an author/publisher marketing push.
- "Best of" dataset building — resolve every book on a Listopia list or shelf page into one structured dataset for recommendation or curation tools.
- Rating/review monitoring — re-run against the same book URLs on a schedule to track how average rating and ratings count move over time.
Input
Paste this into the Apify Console, or send it as the run input over the API. Proxy settings are on by default; you rarely need to touch them.
| Field | Type | Required | What it does |
|---|---|---|---|
startUrls | array | no | Direct Goodreads URLs — a book page (/book/show/...), an author page (/author/show/...), or a list/shelf page (/list/show/... or /author/list/...). One of Start URLs / Search queries is required. |
searchQueries | array | no | Free-text book/author titles or ISBN-10/13 codes, resolved via Goodreads' auto-complete search. One of Start URLs / Search queries is required. |
maxBooks | integer | no | Cap on the total number of distinct books resolved and fetched across every Start URL and Search query combined. |
maxSearchResultsPerQuery | integer | no | How many auto-complete hits to expand into a book fetch for each Search queries entry. |
includeReviews | boolean | no | Attach the reviews Goodreads embeds on each book page (up to ~20-30 for anonymous visitors) to every resolved book row. |
maxReviewsPerBook | integer | no | Cap on reviews attached per book when Include reviews is on. Goodreads server-embeds roughly 20-30 reviews per book for anonymous visitors — more requires a logged-in session and is out of scope. |
outputMode | string | no | 'Books' emits one row per resolved book with reviews nested inside. 'Reviews' emits one row per individual review and requires Include reviews to be on. |
{
"startUrls": [
"https://www.goodreads.com/book/show/2767052-the-hunger-games"
],
"searchQueries": [],
"maxBooks": 1,
"maxSearchResultsPerQuery": 3,
"includeReviews": true,
"maxReviewsPerBook": 2,
"outputMode": "books",
"proxyConfiguration": {
"useApifyProxy": true
}
} Output
One row per result, schema-validated before it is written. Export JSON, CSV, Excel or XML from the run, or read it over the API.
book_idtitleauthor_nameseries_namegenresnum_pagesisbn13publish_datedescription
{
"book_id": "2767052",
"work_id": "2792775",
"title": "The Hunger Games",
"title_complete": "The Hunger Games (The Hunger Games, #1)",
"url": "https://www.goodreads.com/book/show/2767052-the-hunger-games",
"author_name": "Suzanne Collins",
"author_url": "https://www.goodreads.com/author/show/153394.Suzanne_Collins",
"series_name": "The Hunger Games",
"series_position": "1",
"genres": [
"Young Adult",
"Dystopia",
"Fiction",
"Science Fiction"
],
"format": "Hardcover",
"num_pages": 374,
"publisher": "Scholastic Press",
"isbn": "0439023483",
"isbn13": "9780439023481",
"asin": null,
"language": "English",
"publish_date": "2008-10-14",
"original_publish_date": "2008-09-14",
"description": "Winning means fame and fortune. Losing means certain death. The Hunger Games have begun...",
"image_url": "https://m.media-amazon.com/images/S/compressed.photo.goodreads.com/books/1586722975i/2767052.jpg",
"average_rating": 4.35,
"ratings_count": 10190318,
"ratings_count_distribution": [
133754,
242196,
1113954,
3090721,
5609693
],
"text_reviews_count": 273383,
"awards": [
"Georgia Peach Book Award (WINNER)",
"Buxtehuder Bulle (WINNER)"
],
"reviews": [
{
"review_id": "kca://review:goodreads/amzn1.gr.review:goodreads.v1.-GjjHy9iBCConbkcwszIsw",
"reviewer_name": "Jayson",
"reviewer_url": "https://www.goodreads.com/user/show/22106879-jayson",
"reviewer_followers_count": 4318,
"rating": 4,
"review_text": "(A-) 83% | Very Good. Notes: A Pax Romana parallel, where odds are ever mostly misses...",
"like_count": 693,
"comment_count": 68,
"has_spoiler": false,
"created_at": "2020-09-18T02:33:35Z",
"updated_at": "2026-05-22T05:01:56Z"
}
],
"reviews_returned_count": 1,
"source_query": "https://www.goodreads.com/book/show/2767052-the-hunger-games",
"scraped_at": "2026-07-20T00:00:00Z"
} Pricing
| Event | Price | When |
|---|---|---|
| Actor start | $0.20 | Once per run, covers warm-up and proxy session setup. |
| Result row | $0.0020 | Per result written to the dataset. |
You pay only for results that land. Cap any run with maxTotalChargeUsd. See pricing & billing for worked examples.
FAQ
Do I need a Goodreads account or API key?
How many reviews can I get per book?
maxReviewsPerBook. The full review corpus beyond that page requires a logged-in session and is out of scope.What's the difference between `books` and `reviews` output mode?
books mode emits one row per book with its reviews nested inside. reviews mode flattens the same data into one row per individual review — turn on includeReviews for either mode to actually fetch review content.Can I search by ISBN instead of title?
searchQueries accepts ISBN-10 or ISBN-13 codes as well as free-text titles/authors; both resolve through Goodreads' own auto-complete search.Ready to run it?
Open the listing on Apify, paste the input above, and watch rows land. If it ever breaks, it is our problem before it is yours.
Related Actors