Open Library Books Search
Pricing
$1.00 / 1,000 books
Open Library Books Search
Open Library book metadata scraper for catalog enrichment. Search books or look up ISBNs and Open Library IDs; export titles, authors, editions and source links as JSON.
Open Library books scraper returns book and edition metadata for searches, ISBNs, and Open Library identifiers. Open Library books API results include titles, authors, publication details, covers, and source links when available.
Input example
{"isbns": ["9780261103344"],"maxItems": 20}
The input keys and allowed values follow .actor/input_schema.json.
Output fields
| Field | Type | Example or excerpt from sample |
|---|---|---|
status | string | "ok" |
title | string | "The Hobbit" |
subtitle | string or null | "or There and Back Again" |
workId | string | "OL27482W" |
editionId | string or null | "OL10236414M" |
openLibraryUrl | string | "https://openlibrary.org/books/OL10236414M" |
authorNames | array | ["J.R.R. Tolkien"] |
authorIds | array | ["OL26320A"] |
authors | array | [{"authorId": "OL26320A", "name": "J.R.R. Tolkien", "url": "https://openlibrary.org/a… |
firstPublishYear | integer or null | 1965 |
firstPublishDate | string or null | "January 1938" |
publishDate | string or null | "2011" |
description | string | "Bilbo Baggins is a hobbit who enjoys a comfortable, unambitious life, rarely travell… |
subjects | array | ["Fantasy"] |
languages | array | ["eng"] |
publishers | array | ["HarperCollins Publishers"] |
isbn10 | array | ["0261103342"] |
isbn13 | array | ["9780261103344"] |
editionCount | integer | 482 |
numberOfPages | integer or null | 96 |
editions | array | [{"editionId": "OL62623719M", "workId": "OL27482W", "title": "Hobit ali Tja in spet n… |
editionsTruncated | boolean | true |
errors | array | [] |
coverId | integer | 10522108 |
coverUrl | string | "https://covers.openlibrary.org/b/id/10522108-L.jpg?default=false" |
coverUrls | object | {"S": "https://covers.openlibrary.org/b/id/10522108-S.jpg?default=false", "M": "https… |
source | string | "isbn" |
input | string | "9780261103344" |
sourceUrls | array | ["https://openlibrary.org/isbn/9780261103344.json", "https://openlibrary.org/works/OL… |
retrievedAt | string | "2026-10-05T14:57:43.535747+00:00" |
Output example
Trimmed from sample_output.json; omitted fields remain available in the dataset.
{"status": "ok","title": "The Hobbit","subtitle": "or There and Back Again","workId": "OL27482W","editionId": "OL10236414M","openLibraryUrl": "https://openlibrary.org/books/OL10236414M","authorNames": ["J.R.R. Tolkien"]}
Limits and source behavior
- The actor uses official Open Library APIs for search, works, editions, ISBN resolution and authors. It retrieves metadata, not book files or reader accounts.
- Starts of API requests are globally spaced at least 1.05 seconds apart, including retries. Timeout, malformed JSON, rate-limit and server failures receive up to three retries after the initial attempt, with exponential delay and bounded
Retry-Afterhandling. Permanent missing resources become error rows. - Optional author, work or edition enrichment failures leave the resolved book usable and record the failure in
errors. Missing optional fields remain empty. - Cover URLs use the Covers API's documented format with
default=false; a missing image returns 404. Image URLs are not downloaded or checked by this actor. Cover availability and usage rights depend on the source. - Search is paginated until the output cap or source exhaustion. Editions are a sample in the API's order;
editionsTruncatedindicates omissions. The catalog is community maintained, so titles, dates, ISBN associations and descriptions can be incomplete or inconsistent. - Use modest result caps for API queries. Open Library recommends data dumps for bulk collection; this actor is not a whole-catalog export tool.
FAQ
What are the output limits? maxItems caps records and errors; optional authors and editions may be incomplete when source requests fail.
Do I need a proxy or login? Public Open Library endpoints need no login or proxy.
How is this priced? Proposed pay per event: $0.001 for each resolved, deduplicated book row. Error rows and suppressed duplicates are uncharged. These are proposals in PRICING.md; the owner must configure Store billing.
How are rate limits handled? The client limits concurrent requests with concurrency and retries transient responses with backoff and Retry-After.
How fresh is the data? Open Library records are community maintained and can be incomplete or change. retrievedAt shows collection time; original source URLs remain in each row.
Use with AI agents / MCP
After the actor is published, connect your agent to the Apify MCP server with an Apify API token. Use call-actor with the published actor identifier and the JSON input shown above. Read the returned dataset with get-dataset-items; the run response itself contains status and storage IDs, not the result rows. Alternatively, use the Apify API to start a run and read its default dataset. Keep the actor input bounded with maxItems, and inspect source links and any error fields before using results in an answer.