Open Library books - search, editions, authors (public API)
Pricing
from $5.00 / 1,000 records
Open Library books - search, editions, authors (public API)
Open Library book search on the public API: one row per work - title, authors, first publish year, edition count, ISBNs, subjects, languages, publishers, cover URL, ratings, page count, URL. Filter by query, title, author, subject, year range, language. No key. $5 per 1,000 rows + $0.10 per run.
Pricing
from $5.00 / 1,000 records
Rating
0.0
(0)
Developer
RetrainMap Team
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Returns: one row per Open Library work (book): key, title, subtitle, authors (names + keys + URLs), first publish year, edition count, ISBNs, subjects, languages, publishers, median page count, member ratings and reading counts, full-text / e-book availability, cover URL, Open Library URL.
Input: { "query": "python programming", "max_records": 100 } or { "author": "tolkien", "subject": "fantasy", "first_publish_year_from": 1930, "first_publish_year_to": 1980, "sort": "rating" } — at least one of query, title, author, subject.
Price: $5.00 per 1,000 rows ($0.005 per work row) plus $0.10 per run. Pay per event; no subscription.
Search Open Library's catalogue of 20+ million works by free text, title, author, subject,
first-publish-year range and language — sorted by relevance, year, rating or edition count —
and get a flat, normalised row per work, ready for CSV or JSON: reading lists, ISBN lookups for
a subject, author bibliographies, "books about X published between Y and Z". No key, no
login: the public openlibrary.org/search.json API.
The default input (query python programming, 100 rows) succeeds within 5 minutes and
returns rows — Apify auto-tests it daily.
Data source and status
| Publisher | Open Library, a project of the Internet Archive (https://openlibrary.org) |
| API | GET /search.json?q=&title=&author=&subject=&language=&sort=&fields=&limit=100&page= — public, no key. Documentation: https://openlibrary.org/dev/docs/api/search |
| What this Actor reads | Plain GET requests with an explicit fields list, at most one per request_interval_ms (default 1,000 ms, floor 500 ms); year ranges use the Solr field query first_publish_year:[FROM TO TO] |
| Identification | Open Library asks API users to send a descriptive User-Agent with a contact (https://openlibrary.org/developers/api). The Actor sends its product-token User-Agent with the contact e-mail in the comment and in the standard From: header |
| Refresh cadence | Live on every run; fetched_at on each row is the fetch time |
| Licence / attribution | Open Library data are open — the catalogue is released under a public-domain / CC0 style licence for records, but please credit Open Library / Internet Archive when you republish. Cover images (cover_url) are served by covers.openlibrary.org under their own usage terms (do not hot-link at scale) |
| Known caveats | Rows are works, not editions: isbn lists ISBNs across all editions (cut to 10; isbn_count is the total), subjects is cut to 25 (subject_count is the total); rating_average/rating_count and the reading counts come from Open Library members and are empty for most works; first_publish_year can be missing or wrong on community-edited records; the search index lags catalogue edits by minutes to hours; deep paging beyond a few thousand rows gets slow on the API side |
Honesty note: the rows are the search API's own work-level fields renamed and flattened — nothing is inferred, summarised or classified by this Actor, and a run stops with an error rather than guess when the API's shape changes.
Input
| Field | Type | Meaning |
|---|---|---|
query | string | Free text (title, author, subject, text). Solr field syntax such as publisher:penguin works |
title | string | Title words |
author | string | Author name |
subject | string | Subject, e.g. fantasy, machine learning |
first_publish_year_from / first_publish_year_to | integer | Inclusive year bounds |
language | string | 3-letter MARC code: eng, fre, ger, spa, jpn |
sort | string | relevance (default), new, old, rating, editions, title |
max_records | integer | Default 100, at most 10,000 |
request_interval_ms | integer | Default 1000 (floor 500) |
contact_email | string | Sent in the User-Agent comment and the From: header |
Example — Tolkien's English-language fantasy works first published 1930-1980, best rated first:
{ "author": "tolkien", "subject": "fantasy", "first_publish_year_from": 1930, "first_publish_year_to": 1980, "language": "eng", "sort": "rating", "max_records": 25 }
Output (dataset row)
key (/works/OL27482W), work_id, title, subtitle, authors, author_keys,
author_urls, first_publish_year, edition_count, isbn_count, isbn (first 10),
subject_count, subjects (first 25), languages, publishers (first 10), pages_median,
rating_average, rating_count, want_to_read_count, currently_reading_count,
already_read_count, has_fulltext, ebook_access, archive_org_ids, first_sentence,
cover_id, cover_url (medium JPEG), cover_edition_key, url, json_url, fetched_at,
source.
A run summary (filters, Open Library's own match count, pages, requests, whether the
pay-per-event budget stopped the run) is stored as RUN_SUMMARY in the run's key-value store.
Pricing (pay per event)
| Event | Price |
|---|---|
run-start — once per run | $0.10 |
record — per row written | $0.005 |
The default run (100 rows) costs $0.60; 1,000 work rows cost $5.10. Rows stop when your run's maximum charge is reached; the run summary says so.
Operator
Steelyard Ventures LLC (RetrainMap) — info@steelyardclinical.com. Not affiliated with Open Library or the Internet Archive. The Actor writes only to its own dataset and key-value store; it stores no credentials and sends nothing else.