Goodreads Book, Author & Listopia List Scraper
Look up Goodreads books by URL, search query, or ISBN, or pull every book by an author, in a series, on a Listopia list, shelf, or genre page. Filter by rating, ratings count, publish year, language, genre, or author.
Open in Apify Store$0.99 / 1K on Free
Short answer
Goodreads Book, Author & Listopia List Scraper is an Apify Store Actor for Goodreads data that returns 13 published output fields, including title, averageRating, url, rating. It lists $0.99 per 1,000 results on the Free plan (pay per event), $0.49 on the Business plan. It takes 35 input settings; one is required (mode). It covers 5 of the 7 core Goodreads fields this site tracks. Last updated Oct 28, 2026.
From the public Store listing and published build schema, synced 2026-11-12.What it returns
13 fields from the published dataset schema. Export as JSON, CSV or Excel, or read the dataset through the Apify API.
recordTypetitleprimaryAuthoraverageRatingratingsCountpublishedYearurlbookIdratingreviewer.namecreatedAtlikesCountreviewText
Not in the schema among the core Goodreads fields: published, reviewer. The field matrix shows which other tools return them.
Input
| Setting | Type | Required | Default | What it does |
|---|---|---|---|---|
| mode | string | Yes | auto | What to scrape. Auto runs every non-empty input you provide. |
| bookUrls | array | No | [] | Goodreads book URLs, bare book IDs, or ISBNs. Used by books, reviews, editions, similar, and bookLists. (mode=books, reviews, editions, similar, bookLists, auto) |
| searchQueries | array | No | [] | Titles, authors, or keywords to search for. (mode=search, auto) |
| isbns | array | No | [] | ISBN-10 or ISBN-13 values. Hyphens and spaces are accepted. (mode=isbns, auto) |
| authorUrls | array | No | [] | Goodreads author URLs or bare author IDs. (mode=authors, auto) |
| seriesUrls | array | No | [] | Goodreads series URLs or bare series IDs. (mode=series, auto) |
| listUrls | array | No | [] | Listopia /list/show/ URLs or bare list IDs. (mode=lists, auto) |
| shelfNames | array | No | [] | Popular shelf names such as mystery, fantasy, or historical-fiction. (mode=shelves, auto) |
| genreNames | array | No | [] | Genre slugs such as fantasy, romance, or science-fiction. (mode=genres, auto) |
| maxItems | integer | No | 50 | Hard cap on every record emitted in the run, including review, edition, quote, list, and summary records. |
Show the other 25 settings
| Setting | Type | Required | Default | What it does |
|---|---|---|---|---|
| detailLevel | string | No | full | Full returns complete book records. Listing returns lighter row records for search, author, series, list, shelf, and genre results. |
| includeMetadata | boolean | No | false | Also emit one author, series, or Listopia summary record alongside the books. |
| includeRelated | boolean | No | false | In auto mode, also collect reviews, editions, similar books, and lists for each book URL. |
| minRating | number | No | – | Drop books rated below this value. Decimals such as 4.5 are supported. |
| minRatingsCount | integer | No | – | Drop books with fewer ratings than this. |
| publishYearMin | integer | No | – | Drop books first published before this year. |
| publishYearMax | integer | No | – | Drop books first published after this year. |
| language | string | No | – | Keep books whose language starts with this text, for example en, English, or fre. |
| containsGenre | string | No | – | Keep books with a genre containing this text. |
| containsAuthor | string | No | – | Keep books with an author name containing this text. |
| maxReviewsPerBook | integer | No | 30 | Reviews to collect for each book. (mode=reviews) |
| reviewSort | string | No | DEFAULT | Order reviews by Goodreads default, newest first, or oldest first. (mode=reviews) |
| reviewLanguage | string | No | all | Only collect reviews written in this language. (mode=reviews) |
| reviewRatingMin | integer | No | – | Only collect reviews with at least this star rating. (mode=reviews) |
| reviewRatingMax | integer | No | – | Only collect reviews with at most this star rating. (mode=reviews) |
| excludeSpoilers | boolean | No | false | Skip reviews Goodreads marks as containing spoilers. (mode=reviews) |
| maxEditionsPerBook | integer | No | 20 | Editions to collect for each book. (mode=editions) |
| quoteTags | array | No | [] | Quote tag pages to scrape, such as love, life, or wisdom. (mode=quotes) |
| quoteAuthorUrls | array | No | [] | Author quote pages as Goodreads URLs or bare author IDs. (mode=quotes) |
| quoteWorkUrls | array | No | [] | Work quote pages as Goodreads URLs or bare work IDs. (mode=quotes) |
| maxQuotesPerSource | integer | No | 30 | Quotes to collect from each tag, author, or work. (mode=quotes) |
| maxSimilarPerBook | integer | No | 20 | Similar books to collect for each input book. (mode=similar) |
| maxListsPerBook | integer | No | 20 | Listopia lists to collect for each input book. (mode=bookLists) |
| releaseYear | integer | No | 2026 | Year of the new-releases chart. (mode=newReleases) |
| releaseMonth | string | No | all | Month of the new-releases chart, or all for the yearly chart. (mode=newReleases) |
Example input
Built from the input form's published example values and defaults.
{
"mode": "isbns",
"bookUrls": [
"https://www.goodreads.com/book/show/4671.The_Great_Gatsby"
],
"searchQueries": [],
"isbns": [
"9780743273565"
],
"authorUrls": [],
"seriesUrls": [],
"listUrls": [],
"shelfNames": [],
"genreNames": [],
"maxItems": 1,
"detailLevel": "full",
"includeMetadata": false,
"includeRelated": false,
"maxReviewsPerBook": 3,
"reviewSort": "DEFAULT",
"reviewLanguage": "all",
"excludeSpoilers": false,
"maxEditionsPerBook": 3,
"quoteTags": [
"love"
],
"quoteAuthorUrls": [],
"quoteWorkUrls": [],
"maxQuotesPerSource": 3,
"maxSimilarPerBook": 5,
"maxListsPerBook": 5,
"releaseYear": 2026,
"releaseMonth": "all"
} Run it from code or an AI agent
The same run through the Apify API, with the example input. You need an Apify API token; the run is billed to your account at the Store price.
Python
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
"mode": "isbns",
"bookUrls": [
"https://www.goodreads.com/book/show/4671.The_Great_Gatsby"
],
"searchQueries": [],
"isbns": [
"9780743273565"
],
"authorUrls": [],
"seriesUrls": [],
"listUrls": [],
"shelfNames": [],
"genreNames": [],
"maxItems": 1,
"detailLevel": "full",
"includeMetadata": False,
"includeRelated": False,
"maxReviewsPerBook": 3,
"reviewSort": "DEFAULT",
"reviewLanguage": "all",
"excludeSpoilers": False,
"maxEditionsPerBook": 3,
"quoteTags": [
"love"
],
"quoteAuthorUrls": [],
"quoteWorkUrls": [],
"maxQuotesPerSource": 3,
"maxSimilarPerBook": 5,
"maxListsPerBook": 5,
"releaseYear": 2026,
"releaseMonth": "all"
}
run = client.actor("dataspryva/goodreads-book-author-and-listopia-list-scraper").call(run_input=run_input)
if run is None:
raise RuntimeError("The Actor run was not found.")
for item in client.dataset(run.default_dataset_id).iterate_items():
print(item) pip install apify-client
JavaScript
import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "<YOUR_APIFY_TOKEN>" });
const input = {
"mode": "isbns",
"bookUrls": [
"https://www.goodreads.com/book/show/4671.The_Great_Gatsby"
],
"searchQueries": [],
"isbns": [
"9780743273565"
],
"authorUrls": [],
"seriesUrls": [],
"listUrls": [],
"shelfNames": [],
"genreNames": [],
"maxItems": 1,
"detailLevel": "full",
"includeMetadata": false,
"includeRelated": false,
"maxReviewsPerBook": 3,
"reviewSort": "DEFAULT",
"reviewLanguage": "all",
"excludeSpoilers": false,
"maxEditionsPerBook": 3,
"quoteTags": [
"love"
],
"quoteAuthorUrls": [],
"quoteWorkUrls": [],
"maxQuotesPerSource": 3,
"maxSimilarPerBook": 5,
"maxListsPerBook": 5,
"releaseYear": 2026,
"releaseMonth": "all"
};
const run = await client.actor("dataspryva/goodreads-book-author-and-listopia-list-scraper").call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items); npm install apify-client
cURL
curl -X POST "https://api.apify.com/v2/actors/dataspryva~goodreads-book-author-and-listopia-list-scraper/run-sync-get-dataset-items" -H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" -d '{"mode":"isbns","bookUrls":["https://www.goodreads.com/book/show/4671.The_Great_Gatsby"],"searchQueries":[],"isbns":["9780743273565"],"authorUrls":[],"seriesUrls":[],"listUrls":[],"shelfNames":[],"genreNames":[],"maxItems":1,"detailLevel":"full","includeMetadata":false,"includeRelated":false,"maxReviewsPerBook":3,"reviewSort":"DEFAULT","reviewLanguage":"all","excludeSpoilers":false,"maxEditionsPerBook":3,"quoteTags":["love"],"quoteAuthorUrls":[],"quoteWorkUrls":[],"maxQuotesPerSource":3,"maxSimilarPerBook":5,"maxListsPerBook":5,"releaseYear":2026,"releaseMonth":"all"}' Waits for the run and returns the dataset items (runs over 300 seconds return HTTP 408; start an async run instead).
MCP (AI agents)
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=dataspryva/goodreads-book-author-and-listopia-list-scraper",
"headers": {
"Authorization": "Bearer <YOUR_APIFY_TOKEN>"
}
}
}
} Adds this Actor as a tool in an MCP client that takes a remote server URL (Cursor, VS Code, Claude Code) through Apify's hosted MCP server. OAuth sign-in also works without the header. Clients that only start local servers can wrap the URL with npx mcp-remote.
What a run costs
The result rate falls on higher Apify plans. Each figure is the published per-result rate times the number of results.
| Apify plan | Per 1,000 | 10,000 results | 100,000 results |
|---|---|---|---|
| Free plan | $0.99 | $9.90 | $99 |
| Starter plan | $0.82 | $8.20 | $82 |
| Scale plan | $0.66 | $6.60 | $66 |
| Business plan | $0.49 | $4.90 | $49 |
- Every run also has a start event, charged per GB of memory (minimum one): $0.10 on Free, $0.03 on Business. At its default memory of 4 GB a run starts at $0.40 on Free. Fewer, larger runs keep this small.
- The Free plan includes $5 of monthly usage (Apify pricing, checked 2026-11-11); at the Free rate that covers at most about 5,050 results, less start events and platform usage.
- Worked example: 10,000 results in one run on the Free plan cost $10.30 ($9.90 for results + $0.40 start), plus Apify platform usage (compute), billed separately by Apify.
- Pay per event. Platform usage (compute) is billed by Apify on top of the event prices. Compare other tools in the cost estimator.
Where it fits among Goodreads routes
It ranks 1 of 1 catalogue Actors for Goodreads on the published formula (fields, price, reliability, freshness). Its line is highlighted on the map.
- 1 Goodreads Book, Author & Listopia List Scraper 13 output fields, pay per event 5 of 7 core fields
$0.99 / 1K - + 5 other Store tools, combined Reference only 7 of 7 core fields
from $0.05 / 1K - API Goodreads public developer API Retired fields not compared
Stops are fields. A ring means the field is in that route's published output schema; no ring means the line passes without it. Bold labels are the core fields for this website, the rest are fields that differ between routes. A white capsule means every data line stops there. The red line is the official API; its field coverage is not compared. A crossed red line means there is no open official API.
Official route: Goodreads public developer API
Retired. As of December 8, 2020, Goodreads stopped issuing new developer keys for its public developer API and said it plans to retire these tools. No replacement public API is offered.
No new API keys are issued.
Other Store tools for Goodreads
Reference only, from their public listings.
| Tool | Fields | Price / 1K |
|---|---|---|
| Goodreads Review Scraper | 12 | $1.00 |
| Goodreads Scraper | 18 | $1.90 |
| Goodreads Scraper | 42 | $3.00 |
| Goodreads Review Scraper | 14 | $0.05 |
| Goodreads Reviews Scraper | 14 | $12 |
What people use it for
- search books and authors
- browse book lists
- review reader ratings
Similar Actors
Product Hunt Launch & Topic Data Exporter
Export Product Hunt launches with votes, comments, makers, hunter and topics from the daily leaderboard, a topic, a maker's history, or specific…
App Store Search, Lookup & Reviews Scraper
Search the Apple App Store by keyword or look up apps by ID or URL, with pricing, ratings, screenshots, developer info, and optional customer…
Capterra Software Pricing & Feature Extractor
Look up Capterra software products by direct URL or by name and get pricing plans, feature and integration lists, ratings, pros/cons summaries,…
Google Maps Popular Times & Live Busyness Scraper
Scrape Google Maps Popular Times: hourly busy hours, live busyness vs usual, open/closed status, newest reviews with closure mentions and…
Google Maps Review & Contributor Activity Scraper
Get reviews for any Google Maps business or place, or switch to author mode to pull everything one Google reviewer has written. Includes ratings,…
Google Play App Search, Lookup & Reviews Scraper
Search Google Play by keyword or look up apps directly by package ID, with ratings, installs, pricing, developer contact details, and optional…
Questions people ask
How much does Goodreads Book, Author & Listopia List Scraper cost?
The published result rate depends on your Apify plan: $0.99 per 1,000 on Free, $0.82 per 1,000 on Starter, $0.66 per 1,000 on Scale, $0.49 per 1,000 on Business. So 10,000 results cost about $9.90 on the Free plan and $4.90 on Business, plus a start fee of $0.10 per run per GB of memory on Free. Platform usage is billed separately.
What data does Goodreads Book, Author & Listopia List Scraper return?
Its published output schema lists 13 fields: recordType, title, primaryAuthor, averageRating, ratingsCount, publishedYear, url, bookId, rating, reviewer.name, createdAt, likesCount, and 1 more. A listed field is not guaranteed to be filled in every row.
What input does Goodreads Book, Author & Listopia List Scraper need?
Required: mode. Optional settings include bookUrls, searchQueries, isbns, authorUrls, seriesUrls, listUrls.
How do I run Goodreads Book, Author & Listopia List Scraper from Python or the API?
Use the Apify API client: in Python, ApifyClient(token).actor("dataspryva/goodreads-book-author-and-listopia-list-scraper").call(run_input=...), then read the run's default dataset (run.default_dataset_id); in JavaScript the same call is client.actor("dataspryva/goodreads-book-author-and-listopia-list-scraper").call(input). Without a client, POST the input JSON to https://api.apify.com/v2/actors/dataspryva~goodreads-book-author-and-listopia-list-scraper/run-sync-get-dataset-items with your API token. Ready-to-paste code with the example input is on this page.
Sources
- Goodreads Book, Author & Listopia List Scraper on Apify Store
- Published build with input and output schema (JSON)
- Goodreads public developer API documentation
Cite this page
Scraper Finder. "Goodreads Book, Author & Listopia List Scraper." https://scraperfinder.com/catalogue/goodreads-book-author-and-listopia-list-scraper/ (data checked 2026-11-12).
Run Goodreads Book, Author & Listopia List Scraper
$0.99 per 1,000 results. Paste the example input above, set your Goodreads query, then export the dataset. Still choosing? Compare every Goodreads route.