Goodreads Scraper
Pricing
Pay per event
Goodreads Scraper
Scrape Goodreads books — titles, authors, ratings, reviews, genres, and covers. Search any topic and get structured book data.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Actor stats
0
Bookmarked
3
Total users
2
Monthly active users
2 days ago
Last modified
Share
What does Goodreads Scraper do?
Goodreads Scraper extracts book data from Goodreads search results. Get structured data for books including titles, authors, ratings, review counts, publication years, edition counts, and cover images. Search for any topic, genre, or keyword.
Use it for book research, reading list curation, market analysis, publishing research, and recommendation systems.
Use cases
- Book research — Find books on any topic with ratings and review counts. Build curated reading lists based on search keywords.
- Reading list curation — Search for books by genre, author, or subject and export organized lists with ratings and cover images.
- Market analysis — Research what books exist in a niche, compare ratings, and identify gaps in the market for publishers and authors.
- Publishing research — Analyze publication years, edition counts, and author popularity for competitive intelligence in the publishing industry.
- Recommendation systems — Feed structured Goodreads data into recommendation engines to suggest books based on ratings and metadata.
- Academic research — Collect book metadata for bibliographic analysis, reading habit studies, and literary research.
Why use Goodreads Scraper?
- Rich data extraction — Every book includes title, author, rating, ratings count, published year, editions, cover image, and direct URL.
- Multi-page pagination — Scrape up to 100 pages of results per search (1,000 books per keyword).
- Multiple search queries — Run multiple keyword searches in a single actor run.
- Sort options — Sort by relevance, title, or author.
- Fast and lightweight — Pure HTTP extraction with Cheerio, no browser needed. Extremely fast and reliable.
- Pay-per-event pricing — You only pay for books scraped. No monthly subscription.
What data can you extract?
Each book in the output includes:
| Field | Description |
|---|---|
bookId | Goodreads book identifier (e.g., "61085357") |
title | Book title |
author | Author name |
authorUrl | Direct link to the author's Goodreads page |
rating | Average rating (0–5) |
ratingsCount | Number of user ratings |
publishedYear | Year of first publication |
editions | Number of available editions |
imageUrl | Book cover image URL |
url | Direct link to the Goodreads book page |
scrapedAt | Timestamp when the data was extracted |
Output example
{"bookId": "61085357","title": "Homo Cosmicus 2: Titan: A Science Fiction Novel","author": "Todor Bombov","authorUrl": "https://www.goodreads.com/author/show/6899673.Todor_Bombov","rating": 4.38,"ratingsCount": 1747,"publishedYear": 2022,"editions": 2,"imageUrl": "https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1652446489i/61085357._SY475_.jpg","url": "https://www.goodreads.com/book/show/61085357-homo-cosmicus-2","scrapedAt": "2026-03-03T01:06:09.732Z"}
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQueries | array | - | List of keywords to search on Goodreads. Each keyword runs a separate search. |
maxBooksPerSearch | integer | 100 | Maximum number of books to return for each keyword. |
maxSearchPages | integer | 10 | Maximum number of search result pages per keyword. Each page has up to 10 books. |
sort | string | "relevance" | Sort: relevance, title, author. |
maxRequestRetries | integer | 3 | Retry attempts for failed requests. |
How to scrape Goodreads books
- Go to the Goodreads Scraper page on Apify Store.
- Enter one or more search keywords (e.g., "science fiction", "machine learning").
- Set the maximum number of books per search and pages to scrape.
- Optionally choose a sort order (relevance, title, or author).
- Click Start and wait for the run to finish.
- Download your data in JSON, CSV, or Excel format.
How much does it cost to scrape Goodreads?
Goodreads Scraper uses pay-per-event pricing — you only pay for what you scrape.
| Event | Price |
|---|---|
| Actor start | $0.001 per run |
| Book scraped | $0.002 per book |
Cost examples:
- 20 books (2 pages): ~$0.04
- 100 books (10 pages): ~$0.20
- 500 books (50 pages): ~$1.00
No monthly subscription. Platform costs (compute, proxy) are included in the per-event price.
Using the Apify API
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('YOUR_USERNAME/goodreads-scraper').call({searchQueries: ['science fiction'],maxBooksPerSearch: 50,maxSearchPages: 5,sort: 'relevance',});const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach(book => {console.log(`${book.rating}/5 - ${book.title} by ${book.author} (${book.publishedYear})`);});
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_APIFY_TOKEN')run = client.actor('YOUR_USERNAME/goodreads-scraper').call(run_input={'searchQueries': ['science fiction'],'maxBooksPerSearch': 50,'maxSearchPages': 5,'sort': 'relevance',})items = client.dataset(run['defaultDatasetId']).list_items().itemsfor book in items:print(f"{book['rating']}/5 - {book['title']} by {book['author']} ({book['publishedYear']})")
Integrations
Goodreads Scraper works with all standard Apify integrations:
- Webhooks — Get notified when a scraping run finishes.
- API — Start runs and fetch results programmatically with REST API or official clients.
- Scheduling — Run weekly to track new releases and bestseller changes.
- Storage — Export as JSON, CSV, or Excel. Push to Google Sheets, Slack, or email.
- Zapier / Make / n8n — Connect Goodreads data to thousands of apps and workflows.
Tips and best practices
- Multiple keywords — Add multiple search queries in one run to build diverse reading lists without starting multiple runs.
- Pagination for depth — Increase
maxSearchPages(up to 100) to get more comprehensive results for broad topics. - Sort by title — Use title sort to get alphabetically ordered results for bibliographic research.
- Schedule for tracking — Run weekly to discover new books on topics you care about.
- Combine with filters — Use specific search terms like "fantasy 2025" or "machine learning beginner" to narrow results.
- Ratings as quality signal — Books with higher
ratingsCounttend to have more reliableratingvalues.
Use with AI agents via MCP
Goodreads Scraper is available as a tool for AI assistants via the Model Context Protocol (MCP).
Setup for Claude Code
$claude mcp add --transport http apify "https://mcp.apify.com"
Setup for Claude Desktop, Cursor, or VS Code
Add this to your MCP config file:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com"}}}
Example prompts
- "Search Goodreads for the top-rated sci-fi books"
- "Get book details and ratings for these titles"
- "Find popular books about artificial intelligence on Goodreads"
cURL
curl -X POST "https://api.apify.com/v2/acts/automation-lab~goodreads-scraper/runs?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"searchQueries": ["science fiction"],"maxBooksPerSearch": 50,"sort": "relevance"}'
Legality
Scraping publicly available data is generally legal according to the US Court of Appeals ruling (HiQ Labs v. LinkedIn). This actor only accesses publicly available information and does not require authentication. Always review and comply with the target website's Terms of Service before scraping. For personal data, ensure compliance with GDPR, CCPA, and other applicable privacy regulations.
FAQ
Why are some books missing the published year?
Goodreads does not display the publication year for all books, particularly for very old or self-published titles. The publishedYear field will be null for these entries.
The scraper returns fewer books than my maxBooksPerSearch setting.
Goodreads returns up to 10 books per search page. If your keyword is very niche, there may simply be fewer matching books than your limit. Also check that maxSearchPages is high enough to reach your desired count (e.g., 10 pages for 100 books).
Limitations
- Returns up to 10 books per page, up to 100 pages (1,000 books per keyword).
- Some books may not have
publishedYearoreditionsdata. - Sort options are limited to relevance, title, and author. Goodreads does not support sorting by rating or date in search results.
- Only supports Goodreads search. Does not scrape individual book pages, reviews, shelves, or user profiles.
- Cover images are medium-resolution thumbnails from Goodreads CDN.
How do I find the best books on a topic using Goodreads data?
Search for your topic and sort or filter the results by rating and ratings count. Books with high ratingsCount (10,000+) and high rating (4.0+) are well-validated choices:
{"searchQueries": ["machine learning", "deep learning"],"maxBooksPerSearch": 100,"sort": "relevance"}
After exporting to CSV or Google Sheets, sort the rating column descending and filter to books with ratingsCount > 1000 to remove obscure titles with inflated scores. This gives a reliable "best books" list for any topic without manually browsing Goodreads.
Is Goodreads data useful for publishers and authors?
Yes. Goodreads is the largest book community in the world (150M+ members), and its data provides actionable signals for the publishing industry:
- Market gaps — Search for your genre with specific keywords and check if existing books have low ratings or thin coverage. Low competition with high search volume suggests an unmet reader demand.
- Competitive analysis — Compare edition counts, ratings, and review volumes across competing titles to gauge their market strength.
- Backlist performance — Track rating trends for older titles to identify which books remain relevant over time.
- Publication year analysis —
publishedYeardata helps spot when a genre peaked and whether it's growing or declining.
Authors and publishers commonly use Goodreads data to validate book concepts before committing to a manuscript.
Can I track book ratings and reviews over time on Goodreads?
Yes. Use Apify Schedules to run the scraper on the same search queries weekly or monthly and track changes in rating and ratingsCount:
- Set up a weekly scheduled run for your target search queries
- Export each run's dataset to Google Sheets
- Use a date column to track when each scrape was performed
- Compare
ratingsCountweek over week to measure a book's growing or declining reader engagement
This is particularly useful for authors monitoring new releases, publishers tracking a book's post-launch trajectory, and booksellers identifying rising titles before they hit bestseller lists.
How does Goodreads Scraper compare to the Goodreads API?
Goodreads officially shut down its public API in December 2020. There is no longer any official programmatic way to access Goodreads data. Web scraping is now the only method to extract book ratings, review counts, and metadata from Goodreads at scale.
This scraper accesses the same search results any user sees when browsing Goodreads without an account — no login required, no API key needed.
Other data scrapers
- Eventbrite Scraper — search Eventbrite for events, conferences, and meetups by keyword and location
- Exchange Rate Scraper — get live currency exchange rates for 150+ currencies
- FDA Recalls Scraper — search the FDA enforcement database for drug, food, and device recalls