Goodreads Book Details Scraper
Pricing
from $3.62 / 1,000 results
Goodreads Book Details Scraper
Extract book details from Goodreads list pages and search results. Pulls title, author, cover image, and genre for each book. Ideal for building a curated book catalog or tracking reading trends. Start from a popular list like 'Best Books Ever' or search by keyword to collect data for analysis.
Pricing
from $3.62 / 1,000 results
Rating
0.0
(0)
Developer
ParseForge
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 hours ago
Last modified
Categories
Share
Unofficial. This Actor is not affiliated with, endorsed by, or sponsored by Goodreads, Inc. It collects publicly available data only.
Scrapes book metadata from Goodreads list pages and search results. It collects dozens of fields per book (title, author, rating, genres, etc.) using only the public HTML pages, with no authentication required.
The actor can scrape books from any Goodreads list or shelf by providing one or more start URLs. Alternatively, you can enter a search query to find books matching a keyword; when a search query is provided, it overrides the start URLs. You can set a maximum number of items to collect - free users get a preview of up to 10 books, while paid users can collect up to 1,000,000 books. The actor automatically paginates through list pages and search results to gather all available books within the limit.
Open the input and run it. Paste a Goodreads list URL or enter a search term, set the maximum number of books you need, and the actor starts collecting data in seconds.
| Target Audience | Primary Use Cases |
|---|---|
| Authors, publishers, librarians, book reviewers, data analysts, researchers | Discover trending books, analyze genre trends, build book recommendation systems, compile reading lists, monitor new releases |
Jump to: Data fields · How to scrape · Use cases · API · Troubleshooting · FAQ
What the Goodreads Book Details Scraper does
- List scraping: Provide one or more Goodreads list or shelf URLs to scrape all books from those pages, including pagination.
- Search scraping: Enter a search query to find books by keyword, title, author, or genre. This mode overrides start URLs.
Goodreads Data Fields
Export to CSV, Excel, JSON or XML from the Dataset tab, or pull them straight from the API.
| Field group | Included data |
|---|---|
| Identity | bookId, url |
| Content | title |
| Author and source | author |
| Media | imageUrl |
| Time | scrapedAt |
| Other | error |
Sample record
{"imageUrl": "https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1586722975i/2767052._SX50_.jpg","bookId": "2767052","title": "The Hunger Games (The Hunge...","author": "Suzanne Collins","url": "https://www.goodreads.com/book/show/2767052-the-hunger-games","scrapedAt": "2026-08-10T03:23:28.124Z"}
Abridged to the fields most people use.
What this Goodreads scraper does not do
- Only works with public pages. The actor cannot access private or restricted content, and does not log in to Goodreads.
- Search query cannot be combined with list URLs. If you provide a search query, it ignores start URLs. You must run separate runs for different modes.
- Rate limiting may apply. Goodreads may throttle requests if you scrape too aggressively. The actor includes built-in delays, but very large collections (millions) may take time.
- Not all fields are available on every page. Some fields like ISBN, page count, or full description require visiting individual book detail pages, which this actor does not scrape. It only scrapes list and search result pages.
- Free tier limited to 10 items. To get more than 10 books, you need a paid Apify subscription.
Why choose this Goodreads scraper
| Capability | |
|---|---|
| Book ID | Unique identifier on Goodreads |
| Title | Full book title |
| Author | Author name(s) |
| Rating | Average rating (1-5) |
| Genres | List of genres assigned to the book |
How to Scrape Goodreads
- Sign up. Create a free Apify account with $5 in credit.
- Open the Actor. Go to the Goodreads Book Details Scraper page.
- Set your input. Paste a Goodreads list URL or enter a search term, set the maximum number of books you need, and the actor starts collecting data in seconds.
- Run it, then download. Results appear in the Dataset tab as CSV, Excel, JSON or XML.
A first run with the defaults
{"startUrls": [{"url": "https://www.goodreads.com/list/show/1.Best_Books_Ever"}],"maxItems": 10}
A larger pull
{"startUrls": [{"url": "https://www.goodreads.com/list/show/1.Best_Books_Ever"}],"maxItems": 200}
Goodreads Data Use Cases
Discover trending books in a genre
A book blogger wants to find the most popular books in the science fiction genre. They enter the URL of the 'Best Science Fiction' list on Goodreads, set maxItems to 100, and run the actor. They receive a dataset with titles, authors, ratings, and genres. The decision it supports: Selecting which books to review next.
Analyze genre trends over time
A marketing analyst needs to see which genres are gaining popularity. They use the search query '2024' and collect up to 10,000 books. They analyze the genre distribution from the output. The decision it supports: Deciding which genres to promote in a publishing campaign.
Build a book recommendation system
A developer building a recommendation engine needs a large dataset of book metadata. They scrape multiple Goodreads list URLs (e.g., 'Best Books Ever', 'Most Read Books') with maxItems set to 500,000. The dataset includes book IDs, titles, authors, and genres. The decision it supports: Training a collaborative filtering model to suggest books to users.
Compile a reading list for a book club
A book club organizer wants a list of acclaimed novels from the 20th century. They search for '20th century classics' and set maxItems to 50. The actor returns titles, authors, and ratings. The decision it supports: Choosing the next book club selection.
Beyond business use cases
- Research. Analyze reading habits and book popularity across different lists and time periods.
- Journalism. Investigate genre trends, author diversity, and rating distributions for articles.
- Public interest. Create open datasets of book metadata for libraries and educational nonprofits.
- Side projects. Build personal book tracking tools, reading challenges, or gift recommendation apps.
Use This Goodreads Scraper as an API
Call it from anything that can send an HTTP request. This returns the dataset in the same response:
curl -X POST \"https://api.apify.com/v2/acts/parseforge~goodreads-book-details-scraper/run-sync-get-dataset-items" \-H "Authorization: Bearer $APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{ "startUrls": [ { "url": "https://www.goodreads.com/list/show/1.Best_Books_Ever" } ], "maxItems": 10 }'
$APIFY_TOKEN is your Apify API token, from Settings in the console. For larger jobs, start the run asynchronously and collect results with a webhook. Client libraries exist for Node.js and Python as apify-client, and the full reference is in the Apify API documentation.
Save a tested input as an Apify Task and attach a schedule for recurring collection.
Troubleshooting
I get 0 results even though the list URL is correct. Check that the URL is a Goodreads list or shelf page. The actor only works with list/show and shelf/show URLs. If you use a search URL, use the searchQuery input instead.
The run stops after a few items with a 'Too Many Requests' error. This indicates Goodreads is throttling your IP. Wait a few minutes and try again with a smaller maxItems. The actor automatically retries, but if it persists, reduce the concurrency (not adjustable in input).
I set maxItems to 1000 but only got 100 books. The list or search results may not contain 1000 books. The actor stops when it reaches the end of available pages. Check the total number of books on the Goodreads page.
The output fields do not include the rating or publication year. Some fields may be missing if the list page does not display them. For example, some shelf pages show only basic info. Try using a different list or search query that includes more details.
I get an error 'Invalid URL' when using startUrls. Make sure the URL starts with https://www.goodreads.com/ and points to a list or shelf page. The actor expects exact URLs, not shortened links.
The search query returns no results even though I see results on the website. The search query must match exactly what Goodreads expects. Try using a simpler query. Also ensure you are not using special characters. If the issue persists, use a start URL from a search results page (copy the URL from the browser).
Something else. Open an issue with the run ID, your input with any secrets removed, what you expected and what came back, or email parseforge@protonmail.com.
Goodreads Scraper FAQ
How many books can I scrape with the free plan? Free users are limited to 10 items per run. This gives you a preview of the data format and structure.
What is the maximum number of books I can scrape? Paid users can set maxItems up to 1,000,000. However, consider that Goodreads may throttle requests, and very large runs may take a long time.
Can I scrape book details like ISBN or page count? No. This actor only scrapes data from list and search result pages. Fields like ISBN, page count, and full description are on individual book detail pages and are not included.
Can I use both start URLs and a search query in the same run? No. If you provide a search query, it overrides the start URLs. To scrape from list pages and also search, you need to run the actor twice with different inputs.
How do I get more than 10 books? You need a paid Apify subscription. You can then set maxItems to any number up to 1,000,000.
Does the actor scrape all books from a list page? Yes, it automatically paginates through the list (e.g., pages 1, 2, 3...) and scrapes all books until it reaches your maxItems limit.
Can I scrape multiple lists at once? Yes, you can provide multiple start URLs in the input. The actor will scrape each list sequentially.
What fields are included in the output? The output includes fields such as book ID, title, author, image URL, genres, rating, number of ratings, publication year, and more. The exact list is shown in the dataset preview.
Is login required? No. The actor uses only public HTML pages. No authentication or cookies are needed.
How long does a run take? It depends on the number of books and current Goodreads response times. For 10,000 books, expect a few minutes to an hour.
Can I filter by rating or date? No. The actor does not have filters for rating or date. You must filter the resulting dataset after scraping.
What if I get an error about rate limiting? The actor has built-in retries and delays. If you see too many errors, reduce maxItems or increase the delay (not configurable in input). You can also try running multiple smaller runs.
Integrate with any app
Connects to any cloud service through Apify integrations:
- Make: multi-step automations
- Zapier: 5,000+ apps
- Slack: run notifications
- Airbyte: pipe rows into a warehouse
- GitHub: trigger runs from commits
- Google Drive: export straight to Sheets
Related Goodreads Actors
- parseforge/google-books-scraper: Use this if you need book data from Google Books instead of Goodreads.
Browse the full ParseForge collection for more scrapers.
Need help? Open our contact form or email parseforge@protonmail.com to report an issue, request a scraper, or discuss a custom data project.
