Open Library Books

Education API · Works globally · By work/edition/ISBN · Part of Open Library

TL;DR

Open Library's Books API retrieves detailed metadata for specific works, editions, or ISBNs from the massive Open Library catalog. Given a work ID (like OL45804W), it returns the full book description, subjects, author links, edition lists, cover image URLs, and related works. This is the "deep dive" API to use after discovering a book through the Search API, giving you everything needed to display a rich book detail page.

Quick start: https://openlibrary.org/works/OL45804W.json

No API key needed — just make a request!

How to Use This API

1. Get Work Details

Fetch full metadata for a specific work by its Open Library ID:

https://openlibrary.org/works/OL45804W.json

2. Get Edition by ISBN

https://openlibrary.org/isbn/9780544003415.json

3. Get Edition by Open Library Edition ID

https://openlibrary.org/books/OL1234567M.json

4. JavaScript — Display Book Details

fetch('https://openlibrary.org/works/OL45804W.json')
  .then(r => r.json())
  .then(book => {
    console.log('Title:', book.title);
    console.log('Description:', book.description?.value || book.description);
    console.log('Subjects:', book.subjects?.map(s => s.name).join(', '));
    console.log('First published:', book.first_publish_year);
  });

5. Python — Get Book Covers

import requests

# Get edition data for a specific ISBN
resp = requests.get('https://openlibrary.org/isbn/9780544003415.json')
edition = resp.json()
print(f"Title: {edition['title']}")
print(f"Pages: {edition.get('number_of_pages', 'Unknown')}")

# Cover URL format
cover_id = edition.get('covers', [None])[0]
if cover_id:
    print(f"Cover: https://covers.openlibrary.org/b/id/{cover_id}-L.jpg")
Try it: https://openlibrary.org/works/OL45804W.json

API Details

API URL
https://openlibrary.org/works
Documentation
openlibrary.org/developers/api
Category
Education
Authentication
Not Required
Geographic Coverage
Global

Frequently Asked Questions

How do I find a work ID?
Search via the /search.json endpoint first, then use the key field from results (e.g., /works/OL45804W).
Whats the difference between works and editions?
A work is the abstract book (e.g., "The Hobbit"), while editions are specific publications (hardcover, paperback, different publishers). Works contain edition lists.
Can I get book descriptions?
Yes, the work endpoint includes a description field (either a string or an object with value). Some works include rich text descriptions.
How do cover images work?
The covers array contains numeric IDs. Build URLs like: https://covers.openlibrary.org/b/id/{ID}-S.jpg (S=small, M=medium, L=large).
What author information is available?
The authors array includes author keys (e.g., /authors/OL23919A) and optional author name. Authors can be fetched in detail from the Authors API.

What You Can Build