Skip to content

Goodreads Scraper

Try for free

Scrape Goodreads books by keyword or from book, Listopia list, shelf, genre, series and author URLs. Get title, authors, rating, rating distribution, ratings and reviews counts, genres, pages, publish dates, ISBN, series, awards, description and cover, plus optional reviews. No login needed.

📚 Goodreads Scraper

Turn Goodreads into a clean books dataset. Paste a search term, a Listopia list, a genre, a shelf, a series or an author page and get every book with its rating, rating distribution, ratings and reviews counts, genres, page count, publish dates, ISBNs, series, awards, description and cover, plus optional community reviews. No login, no API key, and it costs a fraction of a cent per book.

✨ Why use Goodreads Scraper?

  • ⚡ Fast: book details come from Goodreads' own data API, so a list of 100 books finishes in seconds rather than minutes.
  • 🧾 Rich book records: 40+ fields per book, including the 1-5 star rating distribution, awards, series position, characters and places.
  • 🔗 Every kind of page: search, Listopia lists, genre pages, shelves, series, author pages and single book URLs, mixed in one run.
  • 💬 Optional reviews: add up to 5,000 reviews per book, sorted and filtered by stars, language or text.
  • 🔒 No account needed: only public pages are read. Reviews include the reviewer's display name and nothing else about them.
  • 💸 Cheap: a flat price per book, with reviews included at no extra event cost.

🎯 Use cases

  • 📈 Publishing and market research: compare ratings, page counts and genres across a Listopia list or a genre's most-read books.
  • 🛒 Catalog enrichment: add Goodreads ratings, ISBN-13s, series data and descriptions to your bookstore or library catalog.
  • 🧠 Recommendation and NLP datasets: build training data from descriptions, genres and review text.
  • ✍️ Author and competitor tracking: monitor an author's whole bibliography and how readers rate each title over time.
  • 🏆 Awards and lists: collect every award a book won or was nominated for, with the year and category.

🚀 How to use

  1. Paste one or more Goodreads URLs into Goodreads URLs and/or type keywords into Search terms.
  2. Set Maximum books (20 by default; 0 means no limit).
  3. Optionally limit how many listing pages to follow with Last listing page, and turn on Include reviews.
  4. Click Start and wait for the run to finish.
  5. Download the results as JSON, CSV, Excel or HTML, or read them through the API.

📥 Input

FieldWhat it does
startUrlsGoodreads book, search, list, shelf, genre, series or author URLs
searchTermsKeywords, titles, authors or ISBNs to search
maxItemsMaximum books in total (0 = no limit)
endPageStop each list or search at this page number
includeReviewsAdd reviews to each book
maxReviewsPerBookReviews per book (0 = up to 5,000)
reviewsSortDEFAULT, NEWEST or OLDEST
reviewsMinRating / reviewsMaxRatingStar range for reviews (1-5)
reviewsLanguage2-letter language code for reviews, e.g. en
reviewsSearchTextOnly reviews that mention this text
proxyConfigurationProxy settings (datacenter by default)
{
  "startUrls": [
    "https://www.goodreads.com/list/show/1362.Best_History_Books_",
    "https://www.goodreads.com/author/list/1221698.Neil_Gaiman",
    "https://www.goodreads.com/book/show/5.Harry_Potter_and_the_Prisoner_of_Azkaban"
  ],
  "searchTerms": ["dune"],
  "maxItems": 100,
  "includeReviews": true,
  "maxReviewsPerBook": 50,
  "reviewsSort": "NEWEST"
}

Supported URL types:

  • Books: https://www.goodreads.com/book/show/5.Harry_Potter_and_the_Prisoner_of_Azkaban
  • Search: https://www.goodreads.com/search?q=dune
  • Listopia: https://www.goodreads.com/list/show/1362.Best_History_Books_
  • Genres: https://www.goodreads.com/genres/business and https://www.goodreads.com/genres/most_read/business
  • Shelves: https://www.goodreads.com/shelf/show/fiction
  • Series: https://www.goodreads.com/series/45175-harry-potter
  • Authors: https://www.goodreads.com/author/show/1221698.Neil_Gaiman or https://www.goodreads.com/author/list/1221698.Neil_Gaiman (all of the author's books)

📤 Output

One dataset row per book. The Books table shows the main columns, Book details shows publishing data, and Reviews shows one row per review.

FieldDescription
bookId, url, workIdGoodreads IDs and book URL
title, titleComplete, originalTitleTitles (complete title includes the series)
authorName, authorUrl, authorAbout, authorsPrimary author with bio, plus all contributors and their roles
rating, numberOfRatings, numberOfReviewsAverage rating and counts
ratingDistributionNumber of 1, 2, 3, 4 and 5 star ratings
genresTop genres, most voted first
series, seriesName, seriesPositionSeries membership
description, descriptionHtmlBook description as plain text and as HTML
bookFormat, numberOfPages, publishedBy, languageEdition details
publishedDate, firstPublishedDateEdition and first publication date (YYYY-MM-DD)
isbn, isbn13, asinIdentifiers
awardsAwards with category, year and WINNER / NOMINEE
characters, places, quotesCountStory details
image, buyLinks, editionsUrlCover image and store links
sourceUrl, scrapedAtWhich input found the book, and when
reviewsReviews when enabled: reviewerName, rating, text, html, date, likes, comments, shelves, isSpoiler

Example (shortened; the reviewer is a made-up sample):

{
  "bookId": 5,
  "url": "https://www.goodreads.com/book/show/5.Harry_Potter_and_the_Prisoner_of_Azkaban",
  "title": "Harry Potter and the Prisoner of Azkaban",
  "titleComplete": "Harry Potter and the Prisoner of Azkaban (Harry Potter, #3)",
  "image": "https://m.media-amazon.com/images/S/compressed.photo.goodreads.com/books/1630547330i/5.jpg",
  "authorName": "J.K. Rowling",
  "authorUrl": "https://www.goodreads.com/author/show/1077326.J_K_Rowling",
  "authors": [
    {"name": "J.K. Rowling", "role": "Author", "id": 1077326, "url": "https://www.goodreads.com/author/show/1077326.J_K_Rowling"},
    {"name": "Mary GrandPré", "role": "Illustrator", "url": "https://www.goodreads.com/author/show/2927.Mary_GrandPr_"}
  ],
  "rating": 4.58,
  "numberOfRatings": 5071996,
  "numberOfReviews": 110476,
  "ratingDistribution": {"1": 31714, "2": 48921, "3": 341981, "4": 1170280, "5": 3479100},
  "genres": ["Fantasy", "Fiction", "Young Adult", "Magic", "Childrens"],
  "seriesName": "Harry Potter",
  "seriesPosition": "3",
  "description": "Harry Potter, along with his best friends, Ron and Hermione, is about to start his third year at Hogwarts...",
  "bookFormat": "Mass Market Paperback",
  "numberOfPages": 547,
  "publishedDate": "2004-05-01",
  "firstPublishedDate": "1999-07-08",
  "publishedBy": "Scholastic Inc.",
  "isbn": "043965548X",
  "isbn13": "9780439655484",
  "language": "English",
  "awards": [
    {"name": "Hugo Award", "category": "Best Novel", "year": "2000", "designation": "NOMINEE", "url": "https://www.goodreads.com/award/show/9-hugo-award"}
  ],
  "quotesCount": 982,
  "reviews": [
    {
      "reviewId": "a1b2c3d4-0000-4000-8000-000000000000",
      "reviewerName": "Sample Reader",
      "reviewerIsAuthor": false,
      "rating": 5,
      "text": "The best book in the series. The time-travel twist still gets me.",
      "date": "2026-09-01T18:22:05Z",
      "likes": 12,
      "comments": 1,
      "isSpoiler": false,
      "shelves": ["read", "favorites"]
    }
  ],
  "reviewsMatchingFilters": 110150,
  "scrapedAt": "2026-10-15T03:40:00Z"
}

💰 Pricing

You pay $1.00 per 1,000 books ($0.001 per book), plus a small amount of platform usage (compute and datacenter proxy traffic). Reviews are included in the book price, so a book with 50 reviews costs the same event fee as a book without them; they only add a little compute time.

Example: 1,000 books from a Listopia list cost about $1.00 in book fees plus a few cents of usage.

❓ FAQ

Is it legal to scrape Goodreads? The scraper reads only public pages and public data that anyone can see without logging in. You are responsible for how you use the data; check Goodreads' terms and the privacy rules that apply to you, especially for review text.

Do I need a Goodreads account or proxy? No. No login is needed, and datacenter proxies are used by default. Switch to residential proxies only if you see repeated blocks.

How many books can I get? Lists and author pages are followed to the end. Goodreads shows at most 2,000 results per search term (100 pages), so use several specific terms for more. Shelf pages show 50 books and genre "most read" pages 100 without a login.

Why is a field empty? Goodreads does not have every field for every book, for example ISBNs for some ebooks or awards for most titles. Empty fields are null or an empty list.

Can I schedule runs or use the API? Yes. Schedule the scraper to track ratings over time, or call it through the API and read the dataset as JSON, CSV or Excel.

Moving from another Goodreads scraper? The main fields keep familiar names (bookId, title, authorName, rating, numberOfRatings, numberOfReviews, numberOfPages, publishedBy, buyLinks). Dates are ISO (YYYY-MM-DD), and fields such as ISBN, Series and Literary Awards are now isbn, series and awards.

⚠️ Limits

  • Only public data: private shelves, friends' activity, and anything that needs a login are not covered.
  • Shelf pages are limited to the first 50 books without a login; genre pages to the books Goodreads shows on them.
  • Search is capped by Goodreads at 2,000 results per term.
  • Reviews are capped at 5,000 per book; for very long review lists the html copy is dropped first and the list is shortened only if a single book row would still be too large to store (reviewsTruncated: true).
  • Reviewer profiles are not collected; only the display name shown on the review.

Related actors

G2
4.7/5
Excellent
Trustpilot

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.

No credit card. No setup calls.