Web Scraping Layers for AI & Automation

back to blog

How to scrape Goodreads for BookTok and publishing research

ParseBird·14 Oct 2026

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.

WhoWhat they use Goodreads data for
Publishers and agentsComparable titles ("comps") for acquisitions and pitches
Indie authorsSizing a subgenre and studying series structure
BookTok and Bookstagram creatorsFinding rising titles before they peak
BooksellersStocking decisions for trending series
ResearchersGenre 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
InputWhat it does
keywordsOne search per keyword: titles, author names, topics, or ISBNs
maxItemsBooks per keyword, 1 to 10,000
searchFieldall, title, or author
proxyConfigurationOptional. 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:

  • series splits a series name and number out of the title, so you can group books by series.
  • authors lists every contributor with a role, which separates translators and illustrators from the author.
  • editions shows how many formats and translations exist, a rough signal of commercial reach.
  • isGoodreadsAuthor marks 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:

  1. Scrape 500 to 2,000 books for the subgenre keyword.
  2. Filter to books published in the last three years with publishYear.
  3. Rank by rating.count and keep the top 20 as comparable titles.
  4. 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.