Goodreads Book Scraper
Pricing
from $3.40 / 1,000 book overview extracteds
Goodreads Book Scraper
Scrape books from Goodreads by search or book page — title, author, average rating, ratings & reviews count, ISBN/ISBN13, ASIN, pages, publisher, language, genres, series and description. Clean JSON/CSV, no code.
Pricing
from $3.40 / 1,000 book overview extracteds
Rating
0.0
(0)
Developer
SIÁN OÜ
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Goodreads Book Scraper — Ratings, ISBN, Genres & Reviews 📚
🎉 Turn the world's largest book catalog into clean, structured data — search results or full book records, no code
Built for publishers, booksellers, librarians, data teams and book-app builders who need ratings, ISBNs, genres and reviews at scale
📋 Overview
Pull book data straight from Goodreads — search any topic, author or title and get a clean dataset of books, or fetch full records for exact titles. Built for anyone who needs reliable, structured book metadata without writing a scraper.
Why thousands of professionals choose us:
- ✅ Two extraction modes: a fast, cheap overview of search results, or a rich detail record per book — pick what you need
- ⚡ 45+ data points per book: title, author, average rating, ratings & reviews count, ISBN/ISBN13, ASIN, pages, publisher, language, genres, series and full description
- 🎯 Search the way you want: by free-text query, by pasted Goodreads search URL, or by exact book id
- 💰 Pay-per-result pricing: only charged for the books you actually extract — no subscriptions, no waste
- 💎 Clean JSON/CSV/Excel out: ready for spreadsheets, BI tools, databases and recommendation engines
- ✨ No code, no account, no API key — run it from the Apify Console or call it from your own app
✨ Features
- 📚 Catalog search: extract every book that matches a query or search URL, across multiple result pages
- 📖 Full book records: ISBN13, ASIN, page count, publisher, language, edition format, genres, series and description
- ⭐ Ratings & reviews: average rating, total ratings and total reviews for benchmarking and ranking
- 🏷️ Genre & series tagging: the Goodreads genre shelves and series position for each book
- 🖼️ Cover images: thumbnail and full-resolution cover URLs for every title
- 🆔 Precise targeting: fetch exact titles by Goodreads book id or
/book/show/URL - 🔢 Tier-aware limits: free trial up to 25 books per run; unlimited on the paid tier
- 📄 Built-in run report: an HTML summary of every run with a sample of the data
🎬 Quick Start
Choose a scrape mode (overview or detail), tell it what to search, and run. Results land in the Apify dataset, ready to export.
curl -X POST "https://api.apify.com/v2/acts/sian.agency~goodreads-book-scraper/runs?token=YOUR_TOKEN" \-H 'Content-Type: application/json' \-d '{"scrapeMode": "overview", "searchMode": "byQuery", "query": "dune", "maxResults": 50}'
🚀 Getting Started (3 Simple Steps)
Step 1: Pick your mode
Choose Overview for fast search rows, or Detail for full book records.
Step 2: Tell it what to fetch
Enter a search query, paste Goodreads search URLs, or list exact book ids.
Step 3: Run and export
Start the run and download the results as JSON, CSV or Excel.
That's it! In a couple of minutes, you'll have:
- A clean dataset of books with ratings and metadata
- ISBNs, genres, series and descriptions ready for enrichment
- Cover images and direct Goodreads links for every title
📥 Input Configuration
| Field | Type | Required | Description |
|---|---|---|---|
scrapeMode | string | No | overview (search rows) or detail (full book records) |
searchMode | string | No | byQuery, bySearchUrl, or byBookId (detail only) |
query | string | No | Free-text search term (used with byQuery) |
searchUrls | array | No | One or more Goodreads search URLs (used with bySearchUrl) |
bookIds | array | No | Book ids or /book/show/<id> URLs (used with byBookId) |
maxResults | integer | No | Max books to return (FREE: 25, PAID: unlimited) |
maxPages | integer | No | Max search-result pages to walk per query/URL |
Example — search overview:
{"scrapeMode": "overview","searchMode": "byQuery","query": "atomic habits","maxResults": 100}
Example — full details by book id:
{"scrapeMode": "detail","searchMode": "byBookId","bookIds": ["5907", "44767458"]}
📤 Output
Results are saved to the Apify dataset with 20+ fields including:
| Field | Type | Description |
|---|---|---|
title | string | Book title |
author | string | Primary author |
avg_rating | number | Average Goodreads rating (0–5) |
ratings_count | number | Number of ratings |
reviews_count | number | Number of text reviews (detail mode) |
isbn13 | string | ISBN-13 (detail mode, when available) |
isbn | string | ISBN-10 (detail mode, when available) |
asin | string | Amazon ASIN (detail mode, when available) |
num_pages | number | Page count (detail mode) |
publication_year | number | Publication year (detail mode) |
publisher | string | Publisher (detail mode) |
language | string | Book language (detail mode) |
genres | array | Genre/shelf tags (detail mode) |
series | string | Series name (detail mode) |
description | string | Synopsis (detail mode) |
cover_image | string | Full-resolution cover image URL |
url | string | Canonical Goodreads book URL |
Example:
{"id": 5907,"title": "The Hobbit, or There and Back Again","author": "J.R.R. Tolkien","avg_rating": 4.28,"ratings_count": 3800000,"reviews_count": 75000,"isbn13": "9780618260300","num_pages": 366,"publication_year": 2002,"publisher": "Houghton Mifflin","language": "English","genres": ["Fantasy", "Classics", "Fiction", "Adventure"],"series": "Middle Earth","series_position": "1","description": "In a hole in the ground there lived a hobbit...","cover_image": "https://.../5907.jpg","url": "https://www.goodreads.com/book/show/5907"}
💼 Use Cases & Examples
1. Competitive Publishing Research
Publishers and indie authors benchmarking a genre or comp titles.
Input: A genre or topic query (e.g. space opera)
Output: Every matching book with ratings, review counts and publication years
Use: Spot the best-performing titles and gaps in a category before you publish.
2. Bookstore & Catalog Building
Booksellers and book-app builders assembling a product catalog.
Input: Search URLs for the shelves you stock Output: Titles, authors, ISBNs, covers and descriptions Use: Seed a storefront or recommendation engine with clean, structured book data.
3. ISBN & Metadata Enrichment
Data teams matching internal catalogs to canonical book metadata.
Input: A list of Goodreads book ids Output: ISBN13, ASIN, pages, publisher, language and genres per title Use: Fill gaps in your library or e-commerce metadata in one run.
4. Author & Series Tracking
Researchers and fans mapping an author's bibliography or a series.
Input: An author or series query Output: Every book with series name and position Use: Build a complete, ordered reading list or bibliography.
5. Rating & Review Benchmarking
Marketers and analysts ranking titles by reception.
Input: A topic query across multiple pages Output: Average rating, ratings count and reviews count per book Use: Rank and compare titles by real reader sentiment at scale.
6. Academic & Library Datasets
Librarians and academics compiling reading datasets.
Input: Subject queries or curated book-id lists Output: Bibliographic records ready for analysis Use: Power literature reviews, syllabi and library acquisitions.
🔗 Integration Examples
JavaScript/Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('sian.agency/goodreads-book-scraper').call({scrapeMode: 'overview',searchMode: 'byQuery',query: 'dune',maxResults: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items[0]);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_TOKEN')run = client.actor('sian.agency/goodreads-book-scraper').call(run_input={'scrapeMode': 'detail','searchMode': 'byBookId','bookIds': ['5907', '44767458'],})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(item)
cURL
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~goodreads-book-scraper/runs?token=YOUR_TOKEN' \-H 'Content-Type: application/json' \-d '{"scrapeMode": "overview", "searchMode": "byQuery", "query": "atomic habits"}'
Automation Workflows (N8N / Zapier / Make)
- Trigger: Schedule or webhook
- HTTP Request: Call the actor API
- Process: Handle the JSON book records
- Action: Save to a database, sheet or recommendation engine
📊 Performance & Pricing
FREE Tier (Try It Now)
- 25 books per run — full feature access, same quality
- No credit card required
- Perfect for testing and small projects
PAID Tier (Production Ready)
- Unlimited books per run
- Faster processing, no caps
- Pay-per-result: only charged for the books you extract
💰 Transparent pricing — a low per-book rate for fast search rows, and a slightly higher rate for full book records.
❓ Frequently Asked Questions
Q: How many books can I extract? A: FREE tier: 25 per run. PAID tier: unlimited.
Q: What's the difference between overview and detail mode? A: Overview returns fast, cheap search rows (title, author, rating, ratings count, cover). Detail returns the full book record (ISBN, pages, publisher, genres, series, description and more).
Q: Can I fetch specific books?
A: Yes — use byBookId with detail mode and a list of Goodreads book ids or /book/show/ URLs.
Q: What output formats are available? A: JSON, CSV and Excel — export directly from the Apify dataset.
Q: Does it work with private content? A: No — only publicly available book pages and search results are supported.
Q: How fresh is the data? A: Every run fetches live data at the moment it runs.
🐛 Troubleshooting
No books returned
- Check your query spelling, or open the search on Goodreads to confirm it returns results
- For
byBookId, make sure the ids are valid Goodreads book ids
Some detail fields are empty
- Not every book page lists an ISBN, ASIN or publisher — those fields are returned as
nullwhen Goodreads doesn't publish them
Hit the free limit
- The FREE tier is capped at 25 books per run. Upgrade to the paid tier for unlimited results.
⚖️ Is it legal to scrape data?
Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what has been chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.
However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.
You can also read Apify's blog post on the legality of web scraping.
Trademark notice: Goodreads is a registered trademark of Goodreads, Inc. / Amazon.com, Inc. This actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Goodreads or Amazon. It accesses only publicly available data and is provided for lawful research and data-analysis purposes.
🤝 Support
Join our active support community
- For issues or questions, open an issue in the actor's Issues tab
- Check the SIÁN Agency Store for more automation tools
- 📧 apify@sian-agency.online
Built by SIÁN Agency | More Tools