Open Library API
Free book API from the Internet Archive: search by ISBN, title or author, with covers, publication data and subjects. No key required. Tested curl example.
Endpoint tested and returned HTTP 200 on 2026-08-19
What is the Open Library API?
The Open Library API is a free book data API from the Internet Archive. It provides book metadata by ISBN, title or author — including covers, publication details, subjects and author records — with no API key.
Open Library is a non-profit project of the Internet Archive aiming to catalogue every book ever published. Because it is genuinely open rather than a commercial free tier, there are no quota surprises and no risk of the terms changing under you.
Cover images are the quiet highlight: they are available at a predictable URL pattern based on ISBN, so you can render a book cover without even calling the JSON API — just point an `img` tag at covers.openlibrary.org with the ISBN.
Quick facts
- Base URL
https://openlibrary.org- Authentication
- No key required.
- Rate limit
- No hard limit published; the maintainers ask for reasonable use and caching.
- Pricing
- Free, non-profit open data.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the Open Library API
Every request below was executed against the live API on 2026-08-19, and the response shown is the real body it returned — not an illustration.
1. Look up a book by ISBN
GET https://openlibrary.org/api/books?bibkeys=ISBN:0451526538&format=json&jscmd=data
curl 'https://openlibrary.org/api/books?bibkeys=ISBN:0451526538&format=json&jscmd=data'const res = await fetch("https://openlibrary.org/api/books?bibkeys=ISBN:0451526538&format=json&jscmd=data");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://openlibrary.org/api/books?bibkeys=ISBN:0451526538&format=json&jscmd=data", timeout=20)
res.raise_for_status()
print(res.json()){
"ISBN:0451526538": {
"url": "http://openlibrary.org/books/OL1017798M/The_adventures_of_Tom_Sawyer",
"key": "/books/OL1017798M",
"title": "The adventures of Tom Sawyer",
"authors": [
{
"url": "http://openlibrary.org/authors/OL18319A/Mark_Twain",
"name": "Mark Twain"
}
],
"number_of_pages": 216,
"pagination": "xxi, 216 p. ;",
"by_statement": "Mark Twain ; with an introduction by Robert S. Tilton.",
"identifiers": {
"librarything": [
"2236"
],
"project_gutenberg": [
"74"
],
"goodreads": [
"1929684"
],
"isbn_10": [
"0451526538"
],
"lccn": [
"96072233"
],
"oclc": [
"36792831"
],
"openlibrary": [
"OL1017798M"
]
},
"classifications": {
"lc_classifications": [
"PS1306 .A1 1997",
"PS1306.A1 1997"
],
"dewey_decimal_class": [
"813/.4"
]
},
"publishers": [
{
"name": "Signet Classic"
}
],
"publish_places": [
{
"name": "New York"
}
],
"publish_date": "1997",
"subjects": [
{
"name": "The Adventures of Tom Sawyer",
"url": "https://openlibrary.org/subjects/the_adventures_of_tom_sawyer"
},
{
"name": "Mark Twain",
"url": "https://openlibrary.org/subjects/mark_twain"
},
{
"name": "1835-1910",
"url": "https://openlibrary.org/subjects/1835-1910"
},
{
"name": "19th Century",Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
bibkeys | string | Required | Identifiers to look up, e.g. ISBN:0451526538. ISBN:0451526538 |
format | string | Required | Set to `json`. json |
jscmd | string | Optional | `data` for full details, `viewapi` for availability. data |
q | string | Optional | Free-text query on the /search.json endpoint. tolkien |
Response fields
<bibkey>.titlestring- Book title, keyed by the identifier you requested.
<bibkey>.authorsarray- Author objects with name and Open Library URL.
<bibkey>.publish_datestring- Publication date as a free-text string, not a parseable date.
<bibkey>.coverobject- Cover image URLs in small, medium and large sizes.
<bibkey>.subjectsarray- Subject classifications for the work.
What you can build with the Open Library API
- Build a book catalogue or personal library app with ISBN scanning
- Fetch cover images for a reading list or bookshop
- Enrich a bibliography with publication metadata
- Search a books database by author or title without a commercial API
Common errors and how to fix them
Empty object {}
The ISBN is not in Open Library's catalogue.
Fix: Fall back to the /search.json endpoint by title and author.
Unparseable publish_date
Dates are free text, e.g. 'January 1, 1961'.
Fix: Treat it as a display string, or parse defensively — the format is not consistent.
Open Library API — frequently asked questions
Is the Open Library API free?
Yes, completely free with no API key. It is run by the Internet Archive as a non-profit open data project, so there are no commercial tier changes to worry about.
How do I get a book cover image?
Use the predictable cover URL pattern: https://covers.openlibrary.org/b/isbn/{ISBN}-L.jpg for large, -M for medium, -S for small. You do not need to call the JSON API first.
Why does my ISBN return an empty object?
The book is not in the catalogue. Coverage is very good for English-language and older titles but patchier for recent or regional publications. Fall back to a title and author search.
Can I search by title or author instead of ISBN?
Yes, use /search.json?q=your+query, which supports title, author and general keyword search with pagination.
Tools that pair with this API
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
Word Counter
Count words, characters, sentences, paragraphs and estimated reading time instantly. Free online word counter for essays, blogs and social media.
Open Library is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-19; always check the official documentation before relying on this API in production, as terms and limits can change.