Issue Nº 10 — Aug 20, 2026

Open Library documents a 1-request-per-second limit, but no response tells you when you are close to it

Issue ten covers Open Library, a free and keyless book catalog from the Internet Archive. Its docs state a clear rate limit. This session sent eight rapid, back-to-back requests with no delay and got a 200 response every time, with no header on any call that names a limit or a remaining count.

What it covers

Open Library is a free catalog of books, editions, authors, and subjects, run by the Internet Archive. A live GET to https://openlibrary.org/search.json?q=the+hobbit&limit=1 this session returned numFound: 460 and the top match, The Hobbit at /works/OL27482W.

A live GET to https://openlibrary.org/subjects/fantasy.json?limit=1 this session returned work_count: 14601 for the fantasy subject, with a list of works that includes cover IDs and edition counts. Both calls needed no API key and no sign-up.

Auth and pricing, as they actually work

No key. No account. Every call this session went out with no credentials and returned real data, which matches the auth: None already on file for this entry. There is no paid tier.

The API has no bulk-download endpoint. The provider's own docs ask users not to use the live API for bulk access, and point instead to monthly data dumps. A live GET to https://openlibrary.org/developers/dumps this session returned 200 and named a monthly full-catalog dump as the correct route for large-scale use.

Rate limits and CORS, confirmed live

The provider's own docs, fetched live this session from https://openlibrary.org/developers/api, state a default limit of 1 request per second, and 3 requests per second when the caller sends a User-Agent header that names its app and a contact email or phone number.

This session tested that claim with eight GET requests to /search.json sent back to back, with no delay between them and no special User-Agent. Every one came back 200. None of the response headers, with or without a descriptive User-Agent, named a limit or a remaining count. The docs name the ceiling, but no response does. A client that must stay under 1 request per second has to count its own calls.

CORS is open. A GET to /search.json sent with Origin: https://greatapis.com got access-control-allow-origin: * back, so a browser can call this API directly from client-side code. The same wildcard header showed up on a redirect response too, not only on the final JSON.

Why it's worth a look

Open Library gives a free, no-signup route into a large book catalog, plus cover art and author records, in JSON, YAML, or RDF/XML. A live GET to /books/OL37509862M.json, .yml, and .rdf this session returned 200 for all three formats from the same record.

Two entry points redirect instead of returning data directly. A GET to /isbn/9780261102217.json returned 302 to /books/OL37509862M.json this session. A GET to the Covers API for the same ISBN returned 302 to a file hosted on archive.org. A client that does not follow redirects gets nothing back from either one.

The catalog comes from the Internet Archive's library work, and its records stay open to public editing. A build that leans on this data should expect records to change over time, not treat any single one as fixed.

Open Library, by the numbers

Rendered live from the atlas entry
AuthenticationNone required
HTTPSSupported
CORSEnabled
PricingFree
FormatsJSON, RDF/XML, YAML
Rate limit

1 request/second for anonymous requests, 3 requests/second when a descriptive User-Agent with contact email is sent

booksopen-datalibrary-catalogcoversnonprofit

Sources

Facts checked Aug 2026