Books Scraper - Open Library + Google Books, No Key
Pricing
from $1.00 / 1,000 book returneds
Books Scraper - Open Library + Google Books, No Key
Open Library's search endpoint returns no ISBN, no publisher and no page count unless the request names those fields. This one names them, plus title, authors, year, categories, rating, language and cover. Google Books, same shape, needs your own free key. $1.00 per 1,000 books.
Pricing
from $1.00 / 1,000 book returneds
Rating
5.0
(1)
Developer
Dami's Studio
Maintained by CommunityActor stats
1
Bookmarked
4
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Books Scraper (Google Books + Open Library)
Open Library's search.json returns no ISBN, no publisher and no page count unless the request names those fields explicitly. This one names them. Search two public book catalogs and get one clean record per book: title, subtitle, authors, publisher, publishedDate, year, isbn, pageCount, categories, averageRating, ratingsCount, language, description, coverImage, url and price.
Both sources are normalized into the same shape, so switching source doesn't change your downstream code. Both are public catalog APIs, so there's nothing to log into and no browser involved.
A warning about Google Books before you pick it
Open Library is the default and it needs no key at all.
Google Books is the better source when it answers. It's the one carrying descriptions and prices. The catch is that keyless calls to it are metered against a single shared Google project (project_number 624717413613) that every anonymous caller on the internet is also using. Its daily quota is usually already spent by the time you get there, so it answers 429 from every IP. A proxy won't help you, because the quota isn't per-IP.
Two ways around it:
- Put your own free Google Books key in
googleApiKey(console.cloud.google.com → enable the Books API → create an API key). That moves the requests onto your own quota. - Do nothing. If you pick Google Books without a key and hit the quota wall, the run falls back to Open Library on its own and writes an uncharged row explaining why the source changed.
Input
| Field | Type | Default | Notes |
|---|---|---|---|
query | string | — | Required. clean code, the hobbit, isbn:9780132350884 |
source | string | openlibrary | openlibrary or googlebooks |
googleApiKey | string | — | Only read when source is googlebooks. Stored as a secret. |
maxItems | integer | 100 | 1–1000 unique books |
proxyConfiguration | object | off | Both APIs are public with no anti-bot. Turn it on only if you hit IP rate limits. |
{ "source": "openlibrary", "query": "clean code", "maxItems": 100 }
Results are paginated for you (40 per request on Google, 100 on Open Library) and deduplicated by ISBN, falling back to title + first author when there's no ISBN.
Output
{"ok": true,"source": "googlebooks","sourceId": "hjEFCAAAQBAJ","title": "Clean Code","subtitle": "A Handbook of Agile Software Craftsmanship","authors": ["Robert C. Martin"],"publisher": "Pearson Education","publishedDate": "2009","year": 2009,"isbn": "9780136083252","pageCount": 464,"categories": ["Computers"],"averageRating": 4.5,"ratingsCount": 12,"language": "en","description": "…","coverImage": "https://…","url": "https://…","price": { "amount": 29.99, "currency": "USD", "buyLink": "https://…" }}
What's missing and why
descriptioncomes from Google Books. Open Library's search endpoint doesn't carry it, so it'snullon every Open Library row.priceis Google Books only, and only on volumes that are actually for sale. Open Library has no pricing at all.isbnprefers ISBN-13, falls back to ISBN-10, then to the first identifier the record carries.subtitle,publisher,isbn,pageCount,averageRating,ratingsCount,languageandcoverImageare all commonly blank on individual records in both catalogs. That's the catalog, not the scraper.titleis always there — records without one are dropped before they're counted.
Billing
$1.00 per 1,000 books ($0.001 each). One rate, free plan or paid, with nothing tiered by volume.
From 24 August 2026 a $0.005 run-start fee applies on top; the per-book price is unchanged.
You're charged per book row (ok: true). Diagnostic rows are ok: false and are never charged, which covers NO_RESULTS, BAD_INPUT, NETWORK and RATE_LIMITED. So a query that matches nothing, or a source you typed wrong, costs nothing but the start fee.
When something goes wrong
The run writes one diagnostic row rather than crashing, and doesn't charge for it.
NO_RESULTS— the query matched nothing on that source. Broaden it, or switchsource.RATE_LIMITED— the API throttled you. The actor already backed off and retried. Re-run, or turn the proxy on if it keeps happening.BAD_INPUT—querywas empty orsourcewasn't one of the two valid values.
Endpoints used
https://www.googleapis.com/books/v1/volumeshttps://openlibrary.org/search.json