Open Library books - search, editions, authors (public API) avatar

Open Library books - search, editions, authors (public API)

Pricing

from $5.00 / 1,000 records

Go to Apify Store
Open Library books - search, editions, authors (public API)

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

RetrainMap Team

Maintained by Community

Actor 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

PublisherOpen Library, a project of the Internet Archive (https://openlibrary.org)
APIGET /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 readsPlain 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]
IdentificationOpen 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 cadenceLive on every run; fetched_at on each row is the fetch time
Licence / attributionOpen 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 caveatsRows 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

FieldTypeMeaning
querystringFree text (title, author, subject, text). Solr field syntax such as publisher:penguin works
titlestringTitle words
authorstringAuthor name
subjectstringSubject, e.g. fantasy, machine learning
first_publish_year_from / first_publish_year_tointegerInclusive year bounds
languagestring3-letter MARC code: eng, fre, ger, spa, jpn
sortstringrelevance (default), new, old, rating, editions, title
max_recordsintegerDefault 100, at most 10,000
request_interval_msintegerDefault 1000 (floor 500)
contact_emailstringSent 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)

EventPrice
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.