Goodreads Book Scraper avatar

Goodreads Book Scraper

Pricing

from $3.40 / 1,000 book overview extracteds

Go to Apify Store
Goodreads Book Scraper

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Ü

SIÁN OÜ

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

Goodreads Book Scraper — Ratings, ISBN, Genres & Reviews 📚

SIÁN Agency Store Store-Taobao Tmall Product Scraper Store-Smart Idealista Scraper Store-Xiaohongshu RedNote Scraper

🎉 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

FieldTypeRequiredDescription
scrapeModestringNooverview (search rows) or detail (full book records)
searchModestringNobyQuery, bySearchUrl, or byBookId (detail only)
querystringNoFree-text search term (used with byQuery)
searchUrlsarrayNoOne or more Goodreads search URLs (used with bySearchUrl)
bookIdsarrayNoBook ids or /book/show/<id> URLs (used with byBookId)
maxResultsintegerNoMax books to return (FREE: 25, PAID: unlimited)
maxPagesintegerNoMax 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:

FieldTypeDescription
titlestringBook title
authorstringPrimary author
avg_ratingnumberAverage Goodreads rating (0–5)
ratings_countnumberNumber of ratings
reviews_countnumberNumber of text reviews (detail mode)
isbn13stringISBN-13 (detail mode, when available)
isbnstringISBN-10 (detail mode, when available)
asinstringAmazon ASIN (detail mode, when available)
num_pagesnumberPage count (detail mode)
publication_yearnumberPublication year (detail mode)
publisherstringPublisher (detail mode)
languagestringBook language (detail mode)
genresarrayGenre/shelf tags (detail mode)
seriesstringSeries name (detail mode)
descriptionstringSynopsis (detail mode)
cover_imagestringFull-resolution cover image URL
urlstringCanonical 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 ApifyClient
client = 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)

  1. Trigger: Schedule or webhook
  2. HTTP Request: Call the actor API
  3. Process: Handle the JSON book records
  4. 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
  • 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.

🔗 View current pricing


❓ 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 null when 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.

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

Telegram Support

Join our active support community


Built by SIÁN Agency | More Tools