Open Library Books Scraper
Pricing
from $6.80 / 1,000 results
Open Library Books Scraper
Scrape books with title, authors, first publish year, edition count, ISBN, cover image, subjects and a direct link. Search by keyword. Export to JSON, CSV or Excel.
Pricing
from $6.80 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 hours ago
Last modified
Categories
Share
Open Library Books Scraper
Here is one real result, with every field the actor returns. The allIsbns array is trimmed to 8 of its 25 real entries for readability; every value shown is real:
{"key": "/works/OL27448W","title": "The Lord of the Rings","authorNames": ["J.R.R. Tolkien"],"firstPublishYear": 1954,"editionCount": 251,"isbn": "0007136625","coverUrl": "https://covers.openlibrary.org/b/id/14625765-L.jpg","subjects": ["The Lord of the Rings", "Fiction", "Ficción", "English Fantasy fiction", "Ficción fantástica inglesa", "Fantasy fiction", "Open Library Staff Picks", "Middle Earth (Imaginary place)"],"url": "https://openlibrary.org/works/OL27448W","allIsbns": ["0007136625", "0618640150", "2266032488", "9780395595114", "2267013169", "0618260552", "9783608952117", "9780007887682"],"authorKeys": ["OL26320A"],"publishers": ["Sushi Books", "HarperCollins Publishers Ltd", "Pocket", "Mariner Books", "George Allen & Unwin", "Minotauro", "HMH Books for Young Readers", "Hyoronsha"],"firstPublishedYear": 1954,"lastPublishedYear": 2023,"languages": ["por", "swe", "slo", "fre", "spa", "ger", "eng", "glg", "cze", "bul", "dut", "pol"],"pageCountMedian": 1193,"ratingsAverage": 4.4347825,"ratingsCount": 115,"wantToReadCount": 2288,"currentlyReadingCount": 196,"alreadyReadCount": 226,"hasFulltext": true,"ebookAccess": "borrowable","readOnlineUrl": "https://archive.org/details/lordofrings00tolk_5","firstSentence": "When Mr. Bilbo Baggins of Bag End announced that he would shortly be celebrating his eleventy-first birthday with a party of special magnificence, there was much talk and excitement in Hobbiton.","deweyDecimal": "823.914","libraryOfCongress": "PR-6039.00000000.O32 L6 1967","amazonId": "841688417X","goodreadsId": "6657492","oclc": "1011061831","lccn": "2004275215","people": ["Frodo Baggins", "Samwise Gamgee", "Meriadoc Brandybuck", "Peregrin Took", "Gandalf the Grey", "Aragorn", "Legolas Greenleaf", "Gimli"],"places": ["Mordor", "Hornburg", "Isengard", "Cracks of Doom", "Fangorn Forest", "Middle Earth", "Tierra Media"],"source": "Open Library","observedAt": "2026-08-10T14:28:28.243Z"}
The most complete Open Library book scraper available. It returns every field the Open Library search index exposes for each work, including authors, ISBNs, publishers, languages, cover image, subjects, reading stats and cross-catalog identifiers (Dewey, Library of Congress, OCLC, LCCN, Amazon, Goodreads), plus derived first / last published years and a ready-to-open read-online link, all from a single keyword search.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor queries the public Open Library search index for your keyword, paginates through the matching works, and writes one normalized record per book to the run's dataset. Each record captures the work identity (title, authors, key), the full ISBN list, publishers and languages across all editions, cover image, subjects, community reading stats, and every cross-catalog identifier Open Library holds. First and last published years are derived from the edition years so you can sort a catalog without extra parsing. No account or API key is required.
Quickstart
Open the actor, paste this into the input, and press Run. It returns up to 10 books matching the query.
{"maxBooks": 10,"searchQuery": "the lord of the rings"}
The keyword searches title, author and subject at once, so stephen king, machine learning and the hobbit all work. Every input field is optional.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
maxBooks | integer | no | 10 | Maximum books to collect. Paginated behind the scenes in pages of up to 100. |
searchQuery | string | no | (empty) | Keyword to search books by title, author or subject, for example the lord of the rings, stephen king, machine learning. |
Output reference
One dataset item per book (Open Library work). Types: string, integer, number, boolean, string[], or null when the source value is absent.
| Field | Type | Description |
|---|---|---|
key | string | Open Library work key (unique identifier), for example /works/OL27448W. |
title | string | Book title. |
authorNames | string[] | Author name(s). |
firstPublishYear | integer | First publication year reported by Open Library. |
editionCount | integer | Number of known editions. |
isbn | string | A representative ISBN for the work. |
coverUrl | string | Large cover image URL, or null. |
subjects | string[] | Subject tags (up to 8). |
url | string | Open Library work page URL. |
allIsbns | string[] | ISBNs across editions (up to 25). |
authorKeys | string[] | Open Library author keys (up to 10). |
publishers | string[] | Publisher names across editions (up to 8). |
firstPublishedYear | integer | Earliest edition year (derived). |
lastPublishedYear | integer | Latest edition year (derived). |
languages | string[] | Language codes across editions (up to 12). |
pageCountMedian | integer | Median page count across editions. |
ratingsAverage | number | Average community rating. |
ratingsCount | integer | Number of ratings. |
wantToReadCount | integer | Users who marked "want to read". |
currentlyReadingCount | integer | Users currently reading. |
alreadyReadCount | integer | Users who marked "already read". |
hasFulltext | boolean | true if full text is available somewhere. |
ebookAccess | string | Ebook access level, for example borrowable, public, no_ebook. |
readOnlineUrl | string | Internet Archive read-online URL, or null. |
firstSentence | string | First sentence of the book, or null. |
deweyDecimal | string | Dewey Decimal classification, or null. |
libraryOfCongress | string | Library of Congress classification, or null. |
amazonId | string | Amazon ID (ASIN), or null. |
goodreadsId | string | Goodreads ID, or null. |
oclc | string | OCLC / WorldCat number, or null. |
lccn | string | Library of Congress Control Number, or null. |
people | string[] | People named in the work (characters or subjects). |
places | string[] | Places named in the work. |
source | string | Always Open Library. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
Example output record
See the hero record at the top of this page. It is a real record for "The Lord of the Rings" (work /works/OL27448W) pulled from a live run (input {"searchQuery":"the lord of the rings","maxBooks":10}), with the allIsbns list trimmed for readability; every value shown is real.
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~openlibrary-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"searchQuery":"stephen king","maxBooks":25}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~openlibrary-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"searchQuery":"machine learning","maxBooks":100}'
Apify CLI:
apify call scrapers_lat/openlibrary-scraper \--input '{"searchQuery":"the hobbit","maxBooks":10}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per book returned (
resultevent). See the pricing tab for the current per-result price. - No charge on failure. If a run errors, the actor writes a single item with a populated
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 books per run. Upgrade for higher
maxBooks.
FAQ and troubleshooting
A run returned 0 records. Why? The keyword matched no works in the Open Library index. Try a broader or corrected keyword. Zero-result runs are not charged.
Why are some identifier fields null?
Not every work has a Dewey number, LCCN, OCLC, Amazon or Goodreads ID recorded in Open Library. Missing values are returned as null, never invented.
Can I read the book online?
When readOnlineUrl is present, it links to the Internet Archive copy. ebookAccess tells you the access level (borrowable, public, or no_ebook).
How do I search by author only?
The keyword already matches author names. Type the author, for example stephen king, and the most relevant works come back first.
Is this an official Open Library tool? No. This actor is independent and has no affiliation with Open Library or the Internet Archive. It reads only data that is publicly available through the Open Library search API.
Related scrapers
- Open Food Facts Product Scraper: food products with Nutri-Score and ingredients.
- Goodreads Scraper: Goodreads books, ratings and reviews.
- Archive.org Scraper: Internet Archive items and metadata.
- Crossref Scraper: scholarly works and DOIs.
- arXiv Papers Scraper: arXiv preprints and metadata.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with Open Library or the Internet Archive. Accesses only publicly available Open Library data.
