Books Scraper (Google Books + Open Library)
Search Open Library or Google Books: title, authors, ISBN, publisher, year, rating and cover. Open Library needs no key. $1.00 per 1,000 books.
How it works
- 1Open it on Apify
Hit Run on Apify — it opens the tool in the cloud, no install.
- 2Set the inputs
Adjust
source,query,maxItems(sensible defaults are pre-filled). - 3Click Run
The tool runs on Apify’s cloud and collects the data for you.
- 4Export the results
Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.
Pricing
$0.001 per book = $1 per 1,000
| You are charged for | When | Price |
|---|---|---|
| Book returned | Charged per book returned. | $0.001 |
Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-08-24, and they are what you are actually charged.
Inputs
| Field | What it does | Type |
|---|---|---|
source | Which book catalog to search. Open Library is the reliable keyless source. Google Books returns descriptions and prices but its keyless mode shares one global Google project whose daily quota is usually exhausted (HTTP 429) - supply your own free API key below, or the actor falls back to Open Library automatically. Output is normalized identically for both. | string |
query | Keywords to search for, e.g. "clean code", "the hobbit", or "isbn:9780132350884". Required. | string |
maxItems | Maximum number of unique books to return. Results are paginated automatically and deduplicated by ISBN (or title + author). | integer |
notionConnector | Optional. Write each result as a page into your Notion when the run finishes. Authorize a Notion connector once in Settings → API & Integrations → MCP connectors, then pick it here. Leave empty to skip (default), results are always saved to the dataset regardless. | string |
notionParentId | Optional. The Notion data source ID of the database to write into (only used if a Notion connector is set). Leave empty to create the pages privately in your workspace instead. | string |
googleApiKey | Optional. Only used when Source = Google Books. Keyless Google Books calls share one anonymous quota with the whole internet and it is usually already spent, so a free key of your own is the reliable way to use that source. | string |
What you get
A structured dataset — each result includes fields like:
authorsaverageRatingcategoriescoverImagedescriptiondetailsisbnlanguagepageCountpricepublishedDatepublisherqueryratingsCounttitleurlExport every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.
4 ready-to-run use cases
Science Fiction Book List with ISBNs, Open Library
Build a science fiction book list from Open Library: title, authors, first publish year, language, ISBN and cover art. Up to 100 rows, no API key needed.
Machine Learning Books: Metadata, ISBN and Ratings
Machine learning books as structured rows: title, authors, publisher, year, ISBN, rating, cover. Prices are not in the output on the keyless route.
Open Library API Search by Subject, Author or Title
Search the Open Library API and get ISBN, authors, publisher, year, page count, rating and cover art as JSON. Free and keyless. Blurb text is not included.
Google Books API Search Without Your Own API Key
Book lookups via the Google Books API: title, authors, ISBN, publisher, year, cover. Keyless runs share a quota and fall back to Open Library when it runs out.
Related tools in Media & Entertainment Data
Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.
TVMaze TV Show Scraper
Search TVMaze for TV shows and people. Get ratings, genres, network, IMDb IDs, images and full episode lists, as JSON. $2 per 1,000 rows.
MusicBrainz Scraper
Scrape MusicBrainz artists, releases, recordings and labels. Every row has an MBID, plus names, types, dates and tags. No API key. $0.20 per 1,000 records.
IMDb Search Scraper
Search IMDb for titles, people and companies: IMDb ID, year, category, cast line, poster, URL. About 8 per query. $2.50 per 1,000.
Steam Games Scraper
Scrape Steam games with no API key. Get price, discount, genres, developers, Metacritic, platforms, SteamSpy stats and player reviews. $2 per 1,000 rows.
Where this tool sits
- Categories
- Media & Entertainment Data
Books Scraper: book metadata from Open Library or Google Books
Search by keywords, a title, a subject or an ISBN and get one row per book: title, subtitle, authors, publisher, year, ISBN, page count, subjects, rating, language and a cover image. Both sources come out in the same shape, so you can switch between them without rewriting anything downstream.
The two sources are not equivalent. Open Library answers with no key and no setup. Google Books carries the description and the retail price, and to use it reliably you need a free Google key of your own, which takes about two minutes to create.
| Input | A search query, or isbn:9780132350884 |
| Output | One row per unique book |
| Ceiling | 1,000 books per run |
| Account needed | None for Open Library. Google Books wants your own free key |
| Price | $1.00 per 1,000 books, flat on every plan |
🔍 What Books Scraper does
It runs one search against the catalogue you pick and pages through the results until it has as many unique books as you asked for.
Open Library is the default and the one to start with. No key, no account, nothing to set up. Rows come back with the subjects list, the rating and vote count, the cover and the work page URL. Open Library holds no blurb and no price, so description and price are null on every row from it.
Google Books adds the publisher's description and, where the book is sold through Google, a price object with the amount, currency and a buy link. Without a key those calls run on an anonymous allowance shared by everyone using it, which is usually spent, so the run switches to Open Library and writes one uncharged notice row telling you it did. Put your own key in googleApiKey and the call runs on your own allowance instead.
Books arrive deduplicated: by ISBN where there is one, by title plus first author where there is not. A record with no title is dropped before it is counted or charged.
📥 What you give it
{
"source": "openlibrary",
"query": "clean code",
"maxItems": 50
}
| Field | Default | What it is |
|---|---|---|
query | none | Required. Keywords, a title, a subject, or isbn:9780132350884. The Console shows clean code as an example, but that is a prefill, so an API call has to send its own. |
source | openlibrary | openlibrary or googlebooks. Send it explicitly when you call from the API rather than relying on the Console to fill it in. |
maxItems | 100 | 1 to 1,000 unique books. Paging is automatic. |
googleApiKey | none | Your own free Google Books key. Only read when source is googlebooks. Stored as a secret field and never written to the log. |
notionConnector | none | Optional. Writes every delivered row into your Notion. Authorise a connector once under Settings, API and Integrations, MCP connectors, then pick it here. |
notionParentId | none | Optional. The Notion data source id to write into. Leave it empty and the pages are created privately in your workspace. |
proxyConfiguration | off | Optional network setting. Off is right for a normal run, and it makes no difference to the Google allowance. |
Never paste a key into a published Apify task. Task inputs are readable by anyone who opens the page. Put it in the run input, or supply it per call.
📤 What you get back
A real row from a recent run:
{
"ok": true,
"source": "openlibrary",
"sourceId": "/works/OL17618370W",
"title": "Clean Code",
"subtitle": "A Handbook of Agile Software Craftsmanship",
"authors": ["Robert C. Martin"],
"publisher": "Prentice Hall",
"publishedDate": "2008",
"year": 2008,
"isbn": "9780136083221",
"pageCount": 444,
"categories": ["Agile software development", "Reliability", "Computer software", "Computer software, development", "Coding theory"],
"averageRating": 4.44,
"ratingsCount": 43,
"language": "eng",
"description": null,
"coverImage": "https://covers.openlibrary.org/b/id/8065615-L.jpg",
"url": "https://openlibrary.org/works/OL17618370W",
"price": null
}
| Field | What it is |
|---|---|
source | The catalogue that actually answered, which is not always the one you asked for. Read this rather than assuming. |
isbn | ISBN-13 where the record has one, then ISBN-10, then whatever other identifier is listed. |
categories | Open Library subjects, capped at 25 per book. Google returns its own shorter category list. |
description | Google only. Always null on an Open Library row. |
price | Google only, and only when the book is on sale there: {amount, currency, buyLink}. Otherwise null. |
coverImage | A cover URL, built rather than fetched, so an occasional one will not load. |
🧾 Reading the output
Real book rows carry ok: true. Anything with ok: false is a note or a problem, and none of those are charged.
| Code | What it means |
|---|---|
BAD_INPUT | The query was blank, or source was not one of the two names. |
NO_RESULTS | The search ran and the catalogue had nothing. The row carries total and usedSource. |
RATE_LIMITED | Google Books was not available keyless, so the run finished on Open Library. Your books are in the rows after it. |
BLOCKED | Google refused the call outright. If you supplied a key, check that the Books API is switched on for that Google project. |
The RATE_LIMITED notice arrives as the first row in the dataset, before the books. A run that opens with what looks like an error is usually a run that worked.
If Google Books returns nothing at all with a key set, suspect the key before the query. A key Google will not accept reads back as a search with no matches, not as a key error.
▶️ How to run it
1. Open Books Scraper and click Try for free. 2. Leave Source on Open Library for your first run. 3. Type into Search query. A subject like machine learning works as well as a title. 4. Set Max books, then click Start. 5. Download the dataset as JSON, CSV, Excel or XML.
For Google Books, create a free API key in the Google Cloud console, switch on the Books API for that project, and paste the key into Google Books API key.
💰 How much does it cost?
$1.00 per 1,000 books. Flat on every Apify plan, no volume tiers, and the same price whichever catalogue answered.
You are billed per unique book row. Duplicates dropped along the way, records with no title, the fallback notice row and every diagnostic row are not charged.
💡 What people use it for
- Filling in a reading list or a library catalogue that only has titles, using ISBN as the join key.
- Pulling everything under a subject, like every book Open Library files under machine learning, to
see what exists before buying.
- Building a price and description list for a shortlist of titles through Google Books.
- Checking page counts and publication years across a set of editions before choosing one.
🚧 What it does not do
- No reviews and no review text. Ratings and vote counts only.
- No editions list. One row per work, not one per printing, so the ISBN you get is a
representative one rather than the specific edition on your shelf.
- No full text, no excerpts, no tables of contents.
- Open Library rows have no description and no price. That is the catalogue, not a setting you
can change.
- Google Books keyless is not dependable. Expect the fallback unless you supply a key.
- Covers are links, not files. The image stays on the catalogue's servers.
- Search quality is the catalogue's. A loose query returns loosely related books, and those rows
are charged like any other, so keep maxItems low while you find the right wording.
🧭 Which catalogue scraper do you need?
| If you want | Use |
|---|---|
| Books, ISBNs, publishers, subjects and covers | This one |
| TV shows, people and full episode lists | TV Show Scraper |
| Film and TV titles with IMDb ids | IMDb Search Scraper |
| iPhone and iPad apps and their reviews | App Store Scraper |
| Company reviews and ratings | Trustpilot Scraper |
❓ Questions people ask
Do I need a key? Not for Open Library. For Google Books, yes in practice. It is free and takes a couple of minutes in the Google Cloud console.
Can I search by ISBN? Yes. Put isbn:9780132350884 in the query. That works on Google Books.
Why does my row say openlibrary when I picked Google? The run fell back, and the notice row at the top of the dataset says so. Add your own key to stay on Google.
How do I avoid paying for the same book twice across runs? Dedupe on isbn, falling back to title plus the first entry in authors, which is what the run does internally.
Why did I get fewer books than I asked for? The catalogue ran out of matches, or duplicates were removed. You pay for what arrived.
Is this legal? Open Library and Google Books both publish this data through open APIs meant to be read, and book metadata is not personal data. Apify's write-up on scraping and the law is a good starting point, and we are not lawyers.
🆘 If something breaks
Open the Issues tab on the actor page. Send the query, the source you picked and the run id. The errorCode on the diagnostic row usually names the problem by itself.