Open Library Books Scraper avatar

Open Library Books Scraper

Pricing

from $2.99 / 1,000 results

Go to Apify Store
Open Library Books Scraper

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

ZeroBreak

Maintained by Community

Actor 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)

Open Library Scraper

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

ParameterTypeDefaultDescription
modestringsearchOperation mode: search, isbn, works, authors, or subjects.
querystringthe lord of the ringsSearch keyword or author name in author mode.
titlestringEmptyTitle filter for book searches.
authorstringEmptyAuthor filter for book searches.
subjectstringEmptySearch filter or subject slug for subject mode, such as science_fiction.
languagestringEmptyThree-letter language code, such as eng.
sortstringEmptySort order: new, old, random, or key. Blank preserves relevance order.
isbnsarrayEmptyISBN-10 or ISBN-13 values. Dashes are removed.
idsarrayEmptyWork or author identifiers, such as OL45804W or OL26320A, or supported Open Library URLs.
includeEditionsbooleanfalseAttach up to 20 editions to each work.
includeRatingsbooleantrueInclude ratings and reading-shelf counts where supported. Skipped for search and subject runs requesting more than 200 items.
includeAuthorWorksbooleanfalseAttach one page of an author's works.
maxItemsinteger100Maximum number of output rows. Hard cap: 5,000.
requestsPerSecondnumber2Request rate. Identified clients may use up to 3 requests per second.
contactEmailstringMaintainer contactOptional contact email used in the request identification. Leave blank to use the default User-Agent.
timeoutSecsinteger300Maximum run duration in seconds.
requestTimeoutSecsinteger30Maximum 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:

  • editionKey
  • isbn10
  • isbn13
  • publishDate
  • numberOfPages
  • identifiers

Author Record

An author record can include:

  • authorKey
  • name
  • bio
  • remoteIds
  • photoUrl
  • 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

FieldTypeDescription
recordKindstringRecord type, such as book, author, or error.
workKeystringWork key, such as /works/OL45804W.
workIdstringWork identifier without the path prefix.
bookTitlestringBook title; also stored in title.
titlestringDuplicate title field for convenient dataset access.
authorsarrayAuthor names associated with a work.
firstPublishYearintegerFirst publication year, when available.
editionCountintegerNumber of editions associated with the work.
isbnsarrayUp to 20 ISBNs from a search record.
publishersarrayPublisher names, capped at 10 in search results.
subjectsarrayAssociated subjects, capped at 30 in search results.
coverIdintegerCover identifier. Invalid cover IDs such as -1 are discarded.
coverUrlstringCover image URL. The image file is not downloaded.
bookDescriptionstringWork description; also stored in description when available.
ratingsobjectAverage rating, rating count, and star-count breakdown, when available.
shelvesobjectCounts for want-to-read, currently-reading, and already-read shelves.
authorKeystringAuthor identifier.
biostring or objectAuthor biography, when available.
remoteIdsobjectExternal identifiers, such as Wikidata, VIAF, ISNI, Goodreads, and Amazon IDs.
photoUrlstringAuthor photo URL, when available.
urlstringReference URL for the associated work or record.
errorstringError type, such as NOT_FOUND, HTTP_<code>, or INVALID_INPUT.
statusCodeintegerHTTP 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

  1. Validates the input: Checks the selected mode and required search terms, ISBNs, identifiers, or subject.
  2. Controls request frequency: Uses a single request limiter to keep traffic within the configured rate.
  3. Caches repeated requests: Avoids fetching the same URL repeatedly during a run.
  4. Collects results: Processes search pages or subject results until the item limit, available result count, or timeout is reached.
  5. Enriches records: Retrieves optional ratings, shelf counts, edition lists, or author works where requested.
  6. Handles errors: Converts missing records and invalid inputs into error rows so the run can continue.
  7. Removes duplicate works: Skips work keys that have already produced an output row.
  8. 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.

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.