How to scrape Goodreads for BookTok and publishing research
Key Takeaways
What data can you scrape from Goodreads search? For each book: title, series name and number, author and contributors with roles (translator, illustrator, and so on), cover images, average rating, rating count, first publish year, number of editions, and links to the book and its editions.
How does Goodreads relate to BookTok? BookTok (TikTok's book community) and Bookstagram drive discovery, while Goodreads records reading and ratings. A title trending on BookTok usually shows up on Goodreads as a fast rise in rating count, which makes Goodreads the place to measure a social trend.
How many Goodreads books can one search return? Goodreads shows up to 2,000 results per search. Above that, the scraper adds title-only and author-only searches and removes duplicates, so you can collect more for broad keywords.
What is the best Goodreads signal for a breakout book? Rating count growth over time. Average rating is fairly stable, but a jump in the number of ratings between two weekly runs shows that many new readers have picked the book up.
Why Goodreads data matters for book marketing
Goodreads (Amazon-owned reading community) holds the largest public record of what people read and how they rate it. Publishers, literary agents, indie authors, book marketers, BookTok creators, and booksellers use it to answer practical questions: how crowded is a subgenre, which series are growing, and which comparable titles to cite in a pitch.
The Goodreads Book Scraper turns Goodreads search into structured rows, one per book.
| Who | What they use Goodreads data for |
|---|---|
| Publishers and agents | Comparable titles ("comps") for acquisitions and pitches |
| Indie authors | Sizing a subgenre and studying series structure |
| BookTok and Bookstagram creators | Finding rising titles before they peak |
| Booksellers | Stocking decisions for trending series |
| Researchers | Genre and rating trends over time |
How to scrape Goodreads by keyword, author, or ISBN
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("parsebird/goodreads-book-scraper").call(run_input={
"keywords": ["romantasy", "dark academia", "cozy mystery"],
"maxItems": 500,
"searchField": "all",
})
books = client.dataset(run["defaultDatasetId"]).list_items().items
| Input | What it does |
|---|---|
keywords | One search per keyword: titles, author names, topics, or ISBNs |
maxItems | Books per keyword, 1 to 10,000 |
searchField | all, title, or author |
proxyConfiguration | Optional. The actor switches to Apify Proxy by itself if Goodreads rate-limits |
Can I look up a book by ISBN on Goodreads?
Yes. Put the ISBN in keywords. Goodreads search matches ISBNs directly, so it is a reliable way to enrich a list of books you already have.
What a Goodreads book looks like as data
An illustrative row:
{
"keyword": "romantasy",
"rank": 4,
"bookId": 12345678,
"title": "Example Crown (Example Kingdoms, #2)",
"titleWithoutSeries": "Example Crown",
"series": [{ "name": "Example Kingdoms", "number": "2" }],
"author": { "name": "A. Example", "isGoodreadsAuthor": true },
"rating": { "average": 4.31, "count": 182400 },
"publishYear": 2025,
"editions": 14
}
A few fields are especially useful:
seriessplits a series name and number out of the title, so you can group books by series.authorslists every contributor with a role, which separates translators and illustrators from the author.editionsshows how many formats and translations exist, a rough signal of commercial reach.isGoodreadsAuthormarks authors who manage their own Goodreads profile, useful for outreach.
Spotting BookTok breakouts with weekly snapshots
A single run is a snapshot. To find rising titles, run the same keywords weekly and compare rating counts per bookId:
function risers(lastWeek, thisWeek, minNewRatings = 2000) {
const before = new Map(lastWeek.map((b) => [b.bookId, b.rating?.count ?? 0]));
return thisWeek
.filter((b) => before.has(b.bookId))
.map((b) => ({
title: b.title,
author: b.author?.name,
newRatings: (b.rating?.count ?? 0) - before.get(b.bookId),
average: b.rating?.average,
}))
.filter((b) => b.newRatings >= minNewRatings)
.sort((a, b) => b.newRatings - a.newRatings);
}
Books gaining thousands of ratings a week are being read by a lot of new readers. Cross-check them against BookTok activity. The Lemon8 trend research guide and ParseBird's TikTok Trends Scraper can show whether a title or hashtag is trending socially at the same time.
Is a high Goodreads rating a sign of a bestseller? Not by itself. Many niche books average above 4.3 from a small, loyal readership. Rating count, and how fast it grows, is a better signal of commercial reach than average rating alone.
Sizing a subgenre for a pitch or launch
For a quick market map of a subgenre:
- Scrape 500 to 2,000 books for the subgenre keyword.
- Filter to books published in the last three years with
publishYear. - Rank by
rating.countand keep the top 20 as comparable titles. - Count how many are part of a series. A subgenre dominated by long series rewards series-first launches.
The guide to structuring scraped data for AI pipelines covers flattening nested fields like rating and series before loading the data into a spreadsheet or database.
Goodreads scraper pricing
The scraper charges per book saved, about $2.99 per 1,000 books on Apify's free plan at the time of writing, with lower prices on paid plans. See the actor page for current rates.
FAQ
Does Goodreads have an official API? Goodreads stopped issuing new developer API keys in 2020 and has not reopened its public API. Scraping public search pages is the practical alternative for book data.
Does the scraper return Goodreads reviews? No. It returns search-level book data: ratings, counts, series, authors, editions, and covers. Individual review text is out of scope.
Is it legal to scrape Goodreads? The scraper reads public search results. Book metadata and aggregate ratings are factual data, but check Goodreads' terms and your local laws before commercial use or redistribution.
Why do some books show a negative publish year? Ancient works are dated BCE. Homer's Odyssey, for example, has a publish year of -800.
Browse the Social Media category for more community and trend data tools.