Goodreads Scraper
Pricing
Pay per event
Goodreads Scraper
Scrape Goodreads book data — titles, authors, ratings, review counts, and cover images from search results.
Pricing
Pay per event
Rating
0.0
(0)
Developer

Stas Persiianenko
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
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. |
Pricing
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.
How to use Goodreads Scraper via 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.
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.