BYTETOOLS

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.

No API key requiredCORS enabledHTTPSFree tier

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
curl 'https://openlibrary.org/api/books?bibkeys=ISBN:0451526538&format=json&jscmd=data'
JavaScript (fetch)
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);
Python (requests)
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())
Response — HTTP 200 (truncated)
{
  "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

ParameterTypeRequiredDescription
bibkeysstringRequiredIdentifiers to look up, e.g. ISBN:0451526538. ISBN:0451526538
formatstringRequiredSet to `json`. json
jscmdstringOptional`data` for full details, `viewapi` for availability. data
qstringOptionalFree-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

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.