Goodreads Book & Reviews Scraper icon

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 rotationcurl-cffi impersonates 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-After honoured.
  • 🧱 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.

FieldTypeRequiredWhat 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

EventPriceWhen
Actor start$0.20Once per run, covers warm-up and proxy session setup.
Result row$0.0020Per 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?
No. Goodreads retired its official API in December 2020; this Actor reads the same public book, author, and list pages a signed-out visitor sees — no login, no key.
How many reviews can I get per book?
Up to the ~20-30 reviews Goodreads server-embeds on the book page for anonymous visitors, capped further by 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?
Yes — 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

Teams that run this also run