Open Library Books Scraper
Pricing
from $2.99 / 1,000 results
Open Library Books Scraper
Open Library Books Scraper is a Python tool designed to extract book metadata, ISBNs, authors, publishers, subjects, and cover links from Open Library. It exports structured bibliographic data into clean CSV or JSON formats for library archiving, data enrichment, and research.
Pricing
from $2.99 / 1,000 results
Rating
0.0
(0)
Developer
ZeroBreak
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 hours ago
Last modified
Categories
Share
Open Library Scraper: Book Search, ISBN Lookup, Authors, Ratings and Covers (Free)
Collect book and author metadata for catalogs, research, reading lists, and recommendation datasets. Search by keyword, title, author, subject, or ISBN. Depending on the selected mode, results can include editions, publishers, page counts, ISBNs, subjects, ratings, reading-shelf counts, author biographies, and cover image URLs.
No API key is required. Cover images are represented by URLs; the actor does not download the image files.
What This Book Metadata Scraper Extracts
- Book search: Titles, authors, publication years, edition counts, ISBNs, publishers, and cover information.
- Subject search: Book records associated with a subject, such as
science_fiction. - ISBN lookup: Edition details associated with an ISBN.
- Work details: Descriptions, subjects, ratings, reading-shelf counts, and optional edition lists.
- Author records: Author names, biographies, birth and death dates, external identifiers, and photo URLs.
- Error records: Invalid inputs, missing records, and failed requests.
Search and subject results represent works, while ISBN lookups return edition-level records. Author mode returns author records and can optionally include a page of the author's works.
The bookTitle field contains the book title and is also duplicated into title. Similarly, bookDescription is duplicated into description when available.
Use Cases
- Bookstore and e-commerce catalogs: Enrich ISBNs with titles, publishers, page counts, and cover links.
- Publisher and author research: Compare edition counts, ratings, and reading-shelf activity.
- Libraries and education: Create reading lists from subjects such as science fiction.
- Recommendation systems: Build datasets containing work identifiers, subjects, and author references.
- Author research: Collect biographies, birth and death dates, and external author identifiers.
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | search | Operation mode: search, isbn, works, authors, or subjects. |
query | string | the lord of the rings | Search keyword or author name in author mode. |
title | string | Empty | Title filter for book searches. |
author | string | Empty | Author filter for book searches. |
subject | string | Empty | Search filter or subject slug for subject mode, such as science_fiction. |
language | string | Empty | Three-letter language code, such as eng. |
sort | string | Empty | Sort order: new, old, random, or key. Blank preserves relevance order. |
isbns | array | Empty | ISBN-10 or ISBN-13 values. Dashes are removed. |
ids | array | Empty | Work or author identifiers, such as OL45804W or OL26320A, or supported Open Library URLs. |
includeEditions | boolean | false | Attach up to 20 editions to each work. |
includeRatings | boolean | true | Include ratings and reading-shelf counts where supported. Skipped for search and subject runs requesting more than 200 items. |
includeAuthorWorks | boolean | false | Attach one page of an author's works. |
maxItems | integer | 100 | Maximum number of output rows. Hard cap: 5,000. |
requestsPerSecond | number | 2 | Request rate. Identified clients may use up to 3 requests per second. |
contactEmail | string | Maintainer contact | Optional contact email used in the request identification. Leave blank to use the default User-Agent. |
timeoutSecs | integer | 300 | Maximum run duration in seconds. |
requestTimeoutSecs | integer | 30 | Maximum duration for an individual request. |
Example Inputs
1. Search for Books
{"mode": "search","query": "the lord of the rings","maxItems": 20,"includeRatings": true,"requestsPerSecond": 2,"timeoutSecs": 300,"requestTimeoutSecs": 30}
2. Look Up an ISBN
{"mode": "isbn","isbns": ["9780441172719"]}
3. Retrieve Work Details
{"mode": "works","ids": ["OL893414W"],"includeEditions": true,"includeRatings": true}
4. Search for an Author
{"mode": "authors","query": "Frank Herbert","includeAuthorWorks": true,"maxItems": 20}
5. Search by Subject
{"mode": "subjects","subject": "science_fiction","maxItems": 100}
Output Examples
Results are saved to the default dataset. The following examples illustrate the output structure.
Book Search Result
{"recordKind": "book","workKey": "/works/OL893414W","workId": "OL893414W","url": "OPEN_LIBRARY_WORK_URL","bookTitle": "Dune","title": "Dune","authors": ["Frank Herbert"],"firstPublishYear": 1965,"editionCount": 101,"isbns": ["9780441172719"],"publishers": ["Ace Books"],"coverId": 980253,"coverUrl": "BOOK_COVER_IMAGE_URL","query": "dune"}
Work Details
A work-detail record can include bookDescription, subjects, ratings, and reading-shelf counts, along with an optional edition list.
ISBN Lookup
An edition record can include:
editionKeyisbn10isbn13publishDatenumberOfPagesidentifiers
Author Record
An author record can include:
authorKeynamebioremoteIdsphotoUrl- Birth and death dates, when available
External identifiers may include Wikidata, VIAF, ISNI, Goodreads, and Amazon identifiers when present in the source record.
Error Record
If a book cannot be found, the actor can return an error record such as:
{"recordKind": "error","input": "9789999999999","error": "NOT_FOUND","statusCode": 404}
Output Fields
| Field | Type | Description |
|---|---|---|
recordKind | string | Record type, such as book, author, or error. |
workKey | string | Work key, such as /works/OL45804W. |
workId | string | Work identifier without the path prefix. |
bookTitle | string | Book title; also stored in title. |
title | string | Duplicate title field for convenient dataset access. |
authors | array | Author names associated with a work. |
firstPublishYear | integer | First publication year, when available. |
editionCount | integer | Number of editions associated with the work. |
isbns | array | Up to 20 ISBNs from a search record. |
publishers | array | Publisher names, capped at 10 in search results. |
subjects | array | Associated subjects, capped at 30 in search results. |
coverId | integer | Cover identifier. Invalid cover IDs such as -1 are discarded. |
coverUrl | string | Cover image URL. The image file is not downloaded. |
bookDescription | string | Work description; also stored in description when available. |
ratings | object | Average rating, rating count, and star-count breakdown, when available. |
shelves | object | Counts for want-to-read, currently-reading, and already-read shelves. |
authorKey | string | Author identifier. |
bio | string or object | Author biography, when available. |
remoteIds | object | External identifiers, such as Wikidata, VIAF, ISNI, Goodreads, and Amazon IDs. |
photoUrl | string | Author photo URL, when available. |
url | string | Reference URL for the associated work or record. |
error | string | Error type, such as NOT_FOUND, HTTP_<code>, or INVALID_INPUT. |
statusCode | integer | HTTP status code for a failed request, when available. |
The exact fields depend on the selected mode and the information available for each record.
Rate Limits and Usage Restrictions
The actor is designed to respect the source's request limits and avoid unnecessary traffic.
- The default request rate is 2 requests per second.
- Identified clients may use up to 3 requests per second.
- Anonymous clients may be limited to approximately 1 request per second.
- HTTP 403 and 429 responses trigger a 60-second wait, followed by a reduction in request rate.
- Repeated requests to the same URL are cached during a run.
- The actor does not rotate proxies or distribute requests across multiple IP addresses.
- The maximum output is 5,000 rows per run.
- Runs stop when the configured item limit or timeout is reached.
- Ratings enrichment is skipped for search and subject runs requesting more than 200 items.
- Cover URLs are stored as references; image files are not downloaded.
For full-catalog research, use the source's designated bulk-data distribution options rather than treating individual requests as a bulk-download mechanism.
How It Works
- Validates the input: Checks the selected mode and required search terms, ISBNs, identifiers, or subject.
- Controls request frequency: Uses a single request limiter to keep traffic within the configured rate.
- Caches repeated requests: Avoids fetching the same URL repeatedly during a run.
- Collects results: Processes search pages or subject results until the item limit, available result count, or timeout is reached.
- Enriches records: Retrieves optional ratings, shelf counts, edition lists, or author works where requested.
- Handles errors: Converts missing records and invalid inputs into error rows so the run can continue.
- Removes duplicate works: Skips work keys that have already produced an output row.
- Saves results: Writes book, author, and error records to the dataset.
FAQ
Does this actor require an API key?
No. The actor does not require an API key. It identifies requests with a User-Agent and can include a contact email.
How many books can one run collect?
The default limit is 100 rows, and the maximum is 5,000. This limit is intentional to avoid excessive requests.
Why is a large search slow?
Search responses can take approximately 2–4 seconds. The actor also applies request delays to respect rate limits. Optional ratings and shelf enrichment can require additional requests, so it is skipped for search and subject runs requesting more than 200 items.
Can I bulk-download cover images?
No. The dataset contains cover URLs, not downloaded image files. Use the cover links according to the source's applicable usage restrictions.
What happens when an ISBN does not exist?
The actor records a NOT_FOUND error with the available status code and continues processing the remaining inputs.
Why are some fields missing?
Not every work, edition, or author has complete metadata. Missing values reflect unavailable source information and are not fabricated.
What does iaIdentifiers mean?
Some book records include Internet Archive identifiers that can reference scanned material. These identifiers are metadata references; the actor does not automatically download scanned books.
Trademark Notice
Open Library, Internet Archive, and their related names, logos, and trademarks belong to their respective owners. Their use in this documentation is solely to identify the data source and does not imply affiliation, sponsorship, endorsement, or partnership.
Disclaimer
This actor is an independent tool and is not affiliated with, endorsed by, sponsored by, or officially associated with Open Library or the Internet Archive.
Is Web Scraping Legal?
Collecting information that is already public is generally legal. Scraping is not the same thing as hacking, and there is no single law that bans it. The limits are the usual ones: do not break into accounts, do not take private or confidential data, and be careful with personal data and copyrighted works. A site's terms can also restrict how you access it. Facts such as a public name, price, or rating are not the same thing as republishing someone's article or photo.
This actor collects information from public pages. It does not log in and it does not bypass access controls.