Openlibrary Scraper
Pricing
Pay per event
Openlibrary Scraper
Scrape book metadata from Open Library's 20M+ catalog. Search by keyword, get titles, authors, ISBNs, ratings, covers, and reading stats. Export as JSON/CSV. Pay per result.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Share
Open Library Scraper
Scrape books from Open Library, the Internet Archive's open book catalog. Search by title, author, or subject. Get titles, authors, publication years, ISBNs, ratings, cover images, and reading statistics.
What does Open Library Scraper do?
Open Library Scraper uses the Open Library search API to find books and extract metadata. It collects titles, author names, first publication years, edition counts, ISBNs, publishers, languages, ratings, and community reading statistics (want-to-read, currently reading, already read).
Who is it for?
- 📚 Librarians — building book catalogs and metadata databases from Open Library
- 🎓 Academic researchers — collecting bibliographic data for literature analysis
- 📊 Data analysts — studying publishing trends, author output, and subject popularity
- 💻 App developers — enriching reading apps with book metadata and cover images
- 📝 Book reviewers — gathering structured book information for reviews and recommendations
Why scrape Open Library?
Open Library is the world's largest open book catalog with over 20 million records. It's a comprehensive, freely accessible source for bibliographic data.
Key reasons to scrape it:
- Book research — Find books by topic, author, or keyword across all subjects
- Publishing analysis — Track edition counts and publishing patterns
- Academic research — Build bibliographies and reading lists programmatically
- Community insights — Analyze reading trends via want-to-read and already-read counts
- Library tools — Build catalog enrichment or recommendation systems
Use cases
- Researchers building subject-specific bibliographies
- Librarians enriching catalogs with ISBNs, covers, and ratings
- Publishers analyzing market coverage in specific topics
- Content creators finding source material for book reviews and recommendations
- Educators building reading lists for courses and curricula
- Developers building book recommendation engines
How to scrape Open Library
- Go to Open Library Scraper on Apify Store
- Enter one or more search keywords
- Set result limits
- Click Start and wait for results
- Download data as JSON, CSV, or Excel
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQueries | string[] | (required) | Keywords to search for |
maxResultsPerSearch | integer | 50 | Max books per keyword |
maxPages | integer | 3 | Max pages (100 books per page) |
Input example
{"searchQueries": ["machine learning", "data science"],"maxResultsPerSearch": 20,"maxPages": 1}
Output
Each book in the dataset contains:
| Field | Type | Description |
|---|---|---|
title | string | Book title |
authors | string[] | Author names |
firstPublishYear | number | Year first published |
editions | number | Number of editions |
isbn | string[] | ISBN identifiers (up to 5) |
publishers | string[] | Publisher names (up to 5) |
languages | string[] | Language codes |
rating | number | Average rating (0-5) |
ratingsCount | number | Number of ratings |
wantToRead | number | Users who want to read |
currentlyReading | number | Users currently reading |
alreadyRead | number | Users who already read |
coverUrl | string | Cover image URL (large) |
openLibraryUrl | string | Open Library page URL |
openLibraryKey | string | Open Library work key |
scrapedAt | string | ISO timestamp of extraction |
Output example
{"title": "Artificial intelligence","authors": ["Stuart J. Russell", "Peter Norvig"],"firstPublishYear": 1994,"editions": 39,"isbn": ["9780136958420", "0134610997", "9781292410074"],"publishers": ["Pearson Studium", "Prentice Hall"],"languages": ["ger", "eng"],"rating": 4.08,"ratingsCount": 25,"wantToRead": 482,"currentlyReading": 44,"alreadyRead": 26,"coverUrl": "https://covers.openlibrary.org/b/id/92018-L.jpg","openLibraryUrl": "https://openlibrary.org/works/OL2896994W","openLibraryKey": "/works/OL2896994W","scrapedAt": "2026-03-03T04:01:45.402Z"}
How much does it cost to scrape Open Library?
Open Library Scraper uses pay-per-event pricing:
| Event | Price |
|---|---|
| Run started | $0.001 |
| Book extracted | $0.001 per book |
Cost examples
| Scenario | Books | Cost |
|---|---|---|
| Quick search | 20 | $0.021 |
| Reading list | 100 | $0.101 |
| Large bibliography | 300 | $0.301 |
Platform costs are negligible — typically under $0.001 per run.
Using Open Library Scraper with the Apify API
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('automation-lab/openlibrary-scraper').call({searchQueries: ['machine learning'],maxResultsPerSearch: 20,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Found ${items.length} books`);items.forEach(book => {console.log(`${book.title} by ${book.authors.join(', ')} (${book.firstPublishYear}) - ${book.rating}/5`);});
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_API_TOKEN')run = client.actor('automation-lab/openlibrary-scraper').call(run_input={'searchQueries': ['machine learning'],'maxResultsPerSearch': 20,})dataset = client.dataset(run['defaultDatasetId']).list_items().itemsprint(f'Found {len(dataset)} books')for book in dataset:authors = ', '.join(book['authors'])print(f"{book['title']} by {authors} ({book['firstPublishYear']}) - {book['rating']}/5")
cURL
curl "https://api.apify.com/v2/acts/automation-lab~openlibrary-scraper/runs" \-X POST \-H "Authorization: Bearer YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"searchQueries": ["machine learning"], "maxResultsPerSearch": 20}'
Integrations
Open Library Scraper works with all Apify integrations:
- Scheduled runs — Track new books published in a topic area
- Webhooks — Get notified when a scrape completes
- API — Trigger runs and fetch results programmatically
- Google Sheets — Export book data to a spreadsheet
- Slack — Share reading recommendations with your team
Connect to Zapier, Make, or Google Sheets for automated workflows.
Tips
- Sort by
wantToReadin the output to find books generating the most interest - Use
coverUrlto display book covers in your application - Check edition counts — more editions usually indicate established, popular works
- Use ISBNs for cross-referencing with other book APIs or databases
- Compare ratings to find the highest-rated books on a topic
- Multiple keywords let you build comprehensive reading lists in one run
Use with AI agents via MCP
Open Library Scraper is available as a tool for AI assistants via the Model Context Protocol (MCP).
Setup for Claude Code
$claude mcp add --transport http apify "https://mcp.apify.com"
Setup for Claude Desktop, Cursor, or VS Code
{"mcpServers": {"apify": {"url": "https://mcp.apify.com"}}}
Example prompts
- "Search Open Library for books by Isaac Asimov"
- "Get book metadata for these ISBNs"
Learn more in the Apify MCP documentation.
Legality
Scraping publicly available data is generally legal according to the US Court of Appeals ruling (HiQ Labs v. LinkedIn). This actor only accesses publicly available information and does not require authentication. Always review and comply with the target website's Terms of Service before scraping. For personal data, ensure compliance with GDPR, CCPA, and other applicable privacy regulations.
FAQ
How many books are in Open Library? Open Library has over 20 million records covering books from around the world.
Does it include full text? No — the scraper extracts metadata only. Open Library does offer full text for some public domain works via their website.
Can I search by author? Yes — enter an author's name as the search keyword and it will return their books.
What's the cover image format?
Cover images are served as JPGs from covers.openlibrary.org. The -L suffix gives large images (roughly 400-500px wide).
How are ratings calculated?
Ratings are community-contributed on a 1-5 scale. Not all books have ratings -- ratingsCount shows how many ratings exist.
My search returns unexpected or irrelevant books -- what should I do?
Open Library's search is broad and matches across titles, authors, and subjects. Use more specific search terms (e.g., "machine learning Python" instead of just "programming") and limit results with maxResultsPerSearch.
Some books have no cover image -- is that normal?
Yes. Not all books in Open Library have cover images uploaded. The coverUrl field will be null for these books. Community contributors add covers over time.
Other data scrapers
- Goodreads Scraper — scrape book reviews, ratings, and metadata from Goodreads
- IMDb Scraper — extract movie and TV show data from IMDb
- Wikipedia Scraper — extract structured data from Wikipedia articles