
OpenLibrary Book Scraper
hipersoft/openlibrary-scraper
Search millions of books on OpenLibrary by keyword, author, subject or ISBN and get title, authors, publisher, year, subjects, ISBNs, edition count, ratings, page count and cover. Clean, no setup.
Total users
5Monthly users
1Total runs
124Per book scraped
$0.002Last rebuilt
Oct 28, 2026Overview
Search millions of books on OpenLibrary (Internet Archive) by keyword, author, subject or ISBN and get back clean, structured JSON — title, authors, publishers, first publish year, subjects, languages, edition count, ISBNs, page count, ratings and a cover image URL. Mix and match search types in a single run and collect up to 1,000 books per query. No account, no API key. Great for catalog building, book discovery apps, research and metadata enrichment.

Features
- 🔎 Four ways to search — combine
searchTerms(keyword),authors,subjectsandisbnsin one run; every query is labeled in the output. - 🧹 Automatic dedup — books appearing across multiple queries are deduplicated by their OpenLibrary work key.
- ↕️ Sort control — order results by
relevance,new,old,ratingoreditions. - 🏷️ ISBN lookups — resolve specific editions by ISBN, with digits normalized automatically.
- ⭐ Ratings & reach — average rating, rating count, edition count and median page count on every record.
- 🖼️ Cover images — a ready-to-use large cover URL plus full-text availability flag.
- 📈 Scales cleanly — up to 1,000 books per query with automatic pagination and retries.
What you get

Each dataset row is one book:
{
"query": "machine learning",
"title": "Deep Learning",
"subtitle": "Adaptive Computation and Machine Learning",
"authors": ["Ian Goodfellow", "Yoshua Bengio", "Aaron Courville"],
"firstPublishYear": 2016,
"publishers": ["MIT Press"],
"subjects": ["Machine learning", "Neural networks (Computer science)"],
"languages": ["eng"],
"editionCount": 7,
"isbn": "9780262035613",
"isbns": ["9780262035613", "0262035618"],
"pages": 775,
"ratingAverage": 4.32,
"ratingCount": 210,
"hasFulltext": true,
"coverUrl": "https://covers.openlibrary.org/b/id/8231856-L.jpg",
"olKey": "/works/OL17860744W",
"url": "https://openlibrary.org/works/OL17860744W"
}
Output schema
| Field | Type | Description |
|---|---|---|
query |
string | The search query this record was returned for. |
title |
string | Book title. |
subtitle |
string | Book subtitle, if any. |
authors |
array | List of author names. |
firstPublishYear |
integer | Year the work was first published. |
publishers |
array | Publisher names across editions. |
subjects |
array | Subject and topic tags for the book. |
languages |
array | Language codes the work is available in. |
editionCount |
integer | Number of known editions of the work. |
isbn |
string | Primary ISBN for the book. |
isbns |
array | All known ISBNs across editions. |
pages |
string | Median page count across editions. |
ratingAverage |
integer | Average reader rating. |
ratingCount |
integer | Number of ratings. |
hasFulltext |
boolean | Whether the full text is available to read online. |
coverUrl |
string (URL) | Link to a large cover image. |
olKey |
string | OpenLibrary work key (e.g. /works/OL...W). |
url |
string (URL) | Link to the book's OpenLibrary page. |
Input
{
"searchTerms": ["machine learning"],
"authors": ["J.R.R. Tolkien"],
"subjects": ["fantasy"],
"isbns": ["9780262035613"],
"sort": "relevance",
"maxResultsPerQuery": 50
}
| Field | Description |
|---|---|
searchTerms |
General keyword searches across title, author and content. |
authors |
Find books by these authors. |
subjects |
Find books in these subjects (e.g. fantasy, history). |
isbns |
Look up specific books by ISBN. |
sort |
Result ordering: relevance, new, old, rating or editions. |
maxResultsPerQuery |
Maximum books per search/author/subject/ISBN (1–1,000). |
Use cases
- Build or enrich a book catalog with clean metadata, ISBNs and cover images.
- Power a book-discovery or recommendation feature filtered by subject and rating.
- Compile an author's bibliography with edition counts and publish years.
- Resolve a list of ISBNs into full structured records for a library or retail dataset.
Pricing
Pay-per-event: you're billed a small amount per run and per item scraped — you only pay for what you get. See the Pricing tab for current rates.
FAQ
Do I need an API key? No. This Actor uses the public OpenLibrary search API — no account, login or API key required.
How many books can I scrape per run?
Up to 1,000 books per query via maxResultsPerQuery, and you can combine keyword, author, subject and ISBN queries in one run, so a single run can return several thousand books (deduped by OpenLibrary work key).
Is scraping OpenLibrary legal? Yes. OpenLibrary (a project of the Internet Archive) openly publishes its catalog through a public search API, and this Actor reads only those openly available records and returns them as-is.
What format is the output? Structured JSON — one record per book — exportable as JSON, CSV or Excel. Each record includes title, authors, publishers, first publish year, subjects, languages, edition count, ISBNs, page count, ratings and a cover image URL.
Can I search by author, subject or ISBN?
Yes. Combine searchTerms (keyword), authors, subjects and isbns in a single run, and order results with sort by relevance, new, old, rating or editions.
Can I connect this to other apps? The OpenLibrary Book Scraper can be connected with almost any cloud service or web app thanks to integrations on the Apify platform. It works with Make, Zapier, Slack, Airbyte, GitHub, Google Drive and many more, plus the Apify API, JavaScript/Python clients and MCP. Or use webhooks to trigger an action whenever a run finishes.
Building a catalog or metadata dataset? These other hipersoft scrapers may be useful alongside this one:
- OpenAlex Scraper — 250M+ scholarly works with citations, authors and abstracts
- Crossref Scraper — DOIs, citation counts and metadata from 150M+ works
- Wikipedia Scraper — structured article content and metadata from Wikipedia
- arXiv Papers Scraper — preprints with full abstracts and PDF links
Notes
This Actor uses the public OpenLibrary search API and returns that catalog's own data as-is, over openly available records with no login required. It is an independent tool and is not affiliated with, endorsed by, or sponsored by OpenLibrary or the Internet Archive.
Input
| Field | Type | Description |
|---|---|---|
searchTermsKeyword searches | array | General book searches (title, author, content). |
authorsAuthor searches | array | Find books by these authors. |
subjectsSubject searches | array | Find books in these subjects, e.g. "fantasy", "history". |
isbnsISBN lookups | array | Look up specific books by ISBN. |
sortSort by | string · relevance, new, old, rating, editions | Result ordering. Default: "relevance" |
maxResultsPerQueryMax results per query | integer | Maximum books to collect per search / author / subject / ISBN. Default: 50 |
API
curl -X POST "https://api.apify.com/v2/acts/hipersoft~openlibrary-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"searchTerms": [
"machine learning"
],
"authors": [
"J.R.R. Tolkien"
],
"subjects": [
"fantasy"
],
"isbns": [
"9780262035613"
]
}'from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("hipersoft/openlibrary-scraper").call(run_input={
"searchTerms": [
"machine learning"
],
"authors": [
"J.R.R. Tolkien"
],
"subjects": [
"fantasy"
],
"isbns": [
"9780262035613"
]
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('hipersoft/openlibrary-scraper').call({
"searchTerms": [
"machine learning"
],
"authors": [
"J.R.R. Tolkien"
],
"subjects": [
"fantasy"
],
"isbns": [
"9780262035613"
]
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);Pricing
| Event | Price | Paid plans from |
|---|---|---|
| Book scraped One book with title, authors, publisher, year, subjects, ISBNs, editions, rating and cover | $0.002 | $0.001 |
| API request One OpenLibrary search page (up to 100 results) | $0.0005 | $0.0005 |
You pay only for what the run returns. Set a maximum cost per run and it stops cleanly at that limit.
Related scrapers
Europe PMC Scraper
Bulk-scrape life-science and biomedical literature from Europe PMC (40M+ records: PubMed, PMC, preprints, patents): title, abstract, authors, journal, year, DOI, PMID/PMCID, citation count, MeSH terms, open-access flag and full-text/PDF links. Thousands per run. No setup.
325 runs · 5 users · $0.001 / article scrapedarXiv Papers Scraper
Search and extract arXiv papers: title, abstract, authors, categories, published/updated dates, DOI, journal reference, and direct PDF links. Filter by category and sort by newest, recently updated or relevance. Fetch by arXiv ID too. For research, lit reviews and AI/ML monitoring. No setup.
140 runs · 2 users · $0.0025 / paper scrapedLetterboxd Scraper
Scrape Letterboxd films with ratings, rating counts, genres, director, cast, runtime and synopsis. Feed it film pages, a user's films/watchlist/diary, any list URL, or browse pages. For film data, recommendations and research.
139 runs · 7 users · $0.0042 / film scrapedSemantic Scholar Scraper
Bulk-scrape academic papers from Semantic Scholar's 200M+ corpus: title, abstract, AI TLDR summary, authors, venue, year, citation & influential-citation counts, fields of study, DOI/PubMed/arXiv IDs and open-access PDF links. Filter by year, field and citations. Thousands per run. No setup.
123 runs · 7 users · $0.001 / paper scrapedWikipedia Scraper
Search Wikipedia or look up exact articles and get the full plain-text content, summary, categories, image, Wikidata ID and monthly pageview trends. Any language. Great for research, RAG and AI datasets. No setup.
121 runs · 1 users · $0.001 / article scrapedOpenAlex Scholarly Works Scraper
Search 250M+ academic papers via OpenAlex: title, abstract, authors, institutions, venue, citation count, DOI, open-access status and topics. Filter by year, type and open access. For research, R&D and lit reviews. No setup.
118 runs · 1 users · $0.001 / work scrapedSend the site and the fields. We build it and you get it first.