Books Scraper - Open Library + Google Books, No Key avatar

Books Scraper - Open Library + Google Books, No Key

Pricing

from $1.00 / 1,000 book returneds

Go to Apify Store
Books Scraper - Open Library + Google Books, No Key

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

Dami's Studio

Maintained by Community

Actor stats

1

Bookmarked

4

Total users

1

Monthly active users

3 days ago

Last modified

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:

  1. 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.
  2. 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

FieldTypeDefaultNotes
querystringRequired. clean code, the hobbit, isbn:9780132350884
sourcestringopenlibraryopenlibrary or googlebooks
googleApiKeystringOnly read when source is googlebooks. Stored as a secret.
maxItemsinteger1001–1000 unique books
proxyConfigurationobjectoffBoth 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

  • description comes from Google Books. Open Library's search endpoint doesn't carry it, so it's null on every Open Library row.
  • price is Google Books only, and only on volumes that are actually for sale. Open Library has no pricing at all.
  • isbn prefers ISBN-13, falls back to ISBN-10, then to the first identifier the record carries.
  • subtitle, publisher, isbn, pageCount, averageRating, ratingsCount, language and coverImage are all commonly blank on individual records in both catalogs. That's the catalog, not the scraper. title is 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 switch source.
  • 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_INPUTquery was empty or source wasn't one of the two valid values.

Endpoints used

  • https://www.googleapis.com/books/v1/volumes
  • https://openlibrary.org/search.json