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
1 request/second for anonymous requests, 3 requests/second when a descriptive User-Agent with contact email is sent