Goodreads Review Scraper avatar

Goodreads Review Scraper

Pricing

Pay per usage

Go to Apify Store
Goodreads Review Scraper

Goodreads Review Scraper

Goodreads review scraper that collects book reviews, star ratings, and reviewer profiles without login or authentication, giving authors and researchers clean data for sentiment analysis and competitive research.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Kawsar

Kawsar

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Share

Goodreads Review Scraper: Extract Book Reviews, Ratings, and Reviewer Profiles

Goodreads Review Scraper pulls reviews from any book on Goodreads using their internal API. No login or authentication needed. Just paste in one or more book URLs, set how many reviews you want per book, and run.

You get structured data including review text, star ratings, reviewer profiles, shelf labels, and tags, ready to export as CSV or JSON for analysis.

Unlike scrapers that parse HTML, this actor talks directly to the same API Goodreads uses in its own interface, so results come back fast and in a consistent format.

Use cases

  • Sentiment analysis: collect hundreds of reader reviews to train classifiers or run opinion mining on reader reactions to a book
  • Author research: pull reviews for your own books or titles you compete with, and see what readers actually say
  • Book recommendation engines: gather ratings and tags to power recommendation logic or similarity scoring
  • Market research: analyze reader responses to new releases in a specific genre or category
  • Academic research: build datasets of reader reviews for literary analysis or sociological studies
  • Publishing decisions: check reader feedback on comparable titles before commissioning similar work

Input

ParameterTypeDefaultDescription
bookUrlstringSingle Goodreads book page URL. Use for one book at a time.
bookUrlsarrayList of Goodreads book page URLs, one per line. Use for batch runs across multiple books.
maxReviewsinteger100Maximum reviews to collect per book. Hard cap of 1000.
timeoutSecsinteger300Overall actor timeout in seconds.
requestTimeoutSecsinteger30Per-request timeout in seconds.
proxyConfigurationobjectDatacenter (Anywhere)Proxy type and location for requests. Supports Datacenter, Residential, Special, and custom proxies. Optional.

You can use bookUrl, bookUrls, or both at the same time. Duplicate URLs are ignored.

Example: single book

{
"bookUrl": "https://www.goodreads.com/book/show/3.Harry_Potter_and_the_Sorcerer_s_Stone",
"maxReviews": 100
}

Example: multiple books

{
"bookUrls": [
"https://www.goodreads.com/book/show/3.Harry_Potter_and_the_Sorcerer_s_Stone",
"https://www.goodreads.com/book/show/5907.The_Hobbit",
"https://www.goodreads.com/book/show/7260188-the-hunger-games"
],
"maxReviews": 200
}

What data does this actor extract?

The actor stores results in Apify's dataset. Each entry is one review:

{
"reviewId": "kca://review:goodreads/amzn1.gr.review:goodreads.v1.tI_H8-8bJGQv1O4IIOpeTA",
"reviewUrl": "https://www.goodreads.com/review/show/2280609898",
"reviewText": "<b>4.5 Stars!</b><br /><br />Buddy read with...",
"reviewTextPlain": "4.5 Stars! Buddy read with the one who started it all!...",
"rating": 4,
"createdAt": "2018-02-01T20:15:18+00:00",
"updatedAt": "2021-02-19T16:45:57+00:00",
"lastRevisionAt": "2018-03-20T18:24:36+00:00",
"spoilerStatus": false,
"likeCount": 114,
"commentCount": 17,
"recommendFor": null,
"userId": 44125660,
"userName": "Beth",
"userUrl": "https://www.goodreads.com/user/show/44125660-beth",
"userImageUrl": "https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/users/...",
"isAuthor": false,
"userFollowersCount": 627,
"userTextReviewsCount": 929,
"shelfName": "read",
"shelfDisplayName": "Read",
"shelfUrl": "https://www.goodreads.com/review/list/44125660?shelf=read",
"tags": ["2018-reads", "audiobook", "book-series", "4-stars", "young-adult-fantasy"],
"workId": "kca://work/amzn1.gr.work.v1.TbpxJa2CwiSSz_9W2FruoA",
"scrapedAt": "2025-01-15T10:30:00+00:00"
}
FieldTypeDescription
reviewIdstringUnique review identifier
reviewUrlstringDirect link to the review
reviewTextstringFull review text with HTML markup
reviewTextPlainstringReview text with HTML stripped
ratingintegerStar rating (1 to 5, or null if no rating given)
createdAtstringWhen the review was first posted
updatedAtstringWhen the review was last updated
lastRevisionAtstringWhen the review text was last revised
spoilerStatusbooleanWhether the review is flagged as a spoiler
likeCountintegerNumber of likes
commentCountintegerNumber of comments
recommendForstringWho the reviewer recommends the book for, if set
userIdintegerReviewer's numeric ID
userNamestringReviewer's display name
userUrlstringLink to the reviewer's profile
userImageUrlstringReviewer's profile picture URL
isAuthorbooleanWhether the reviewer is a published author on Goodreads
userFollowersCountintegerHow many followers the reviewer has
userTextReviewsCountintegerTotal reviews written by the reviewer
shelfNamestringShelf slug (e.g. read, currently-reading)
shelfDisplayNamestringHuman-readable shelf name (e.g. Read)
shelfUrlstringLink to the reviewer's shelf
tagsarrayCustom shelf tags applied by the reviewer
workIdstringThe book's internal Goodreads identifier
scrapedAtstringWhen this review was collected

How it works

  1. The actor fetches each book page URL and extracts the internal book identifier from the page
  2. It then calls the Goodreads API using cursor-based pagination to collect reviews page by page
  3. Each page returns up to 30 reviews; the actor keeps fetching until it hits your maxReviews limit or runs out of reviews
  4. For batch runs, the actor processes each book in order and pushes all results into the same dataset
  5. Each review is pushed to the dataset as it arrives

FAQ

Do I need a Goodreads account to use this? No. The actor requires no login or personal credentials.

How many reviews can I collect per run? Up to 1000 per book. If you pass 5 book URLs with maxReviews: 200, you can collect up to 1000 reviews total in that run.

Does this work for all books on Goodreads? It works for any book with publicly visible reviews on Goodreads.

Integrations

Connect Goodreads Review Scraper with other apps using Apify integrations. You can pipe results into Google Sheets, send notifications via Slack, trigger workflows in Make or Zapier, or sync with Airbyte. You can also use webhooks to trigger actions as soon as results are ready.