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 19 Aug 2026

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 19 Aug 2026, 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

Alternatives to Open Library API

If Open Library does not fit, these book & dictionary apis cover similar ground. Every one was called before publishing, and each links to its own reference page with a working curl command and the response it returned.

APIWhat it doesAuthCORSLast verified
Free Dictionary APIFree dictionary API with no key: definitions, phonetics, audio pronunciation, synonyms, antonyms and examples for English words. Tested curl example.No keyYes19 Aug 2026
DatamuseFree word-finding API with no key: rhymes, synonyms, antonyms, related words, spelling suggestions and autocomplete. 100k requests/day. Tested example.No keyYes19 Aug 2026
PoetryDBFree poetry API with no key: full poem text by author, title or line count from a public-domain corpus. CORS enabled. Tested curl example and live JSON.No keyYes19 Aug 2026
Bible APIFree Bible API with no key: fetch any verse, passage or chapter as JSON with multiple translations. Simple URL-based reference lookup. Tested example.No keyYes19 Aug 2026
PotterAPI (Fedeperin)Free Harry Potter API with no key: books, characters, houses and spells in eight languages, with covers and images. Tested curl example and live response.No keyYes21 Aug 2026
Al Quran CloudFree Quran API with no key: Arabic text, translations in 40+ languages, verse-by-verse audio recitations and multiple editions. Tested curl example.No keyYes19 Aug 2026
All Book & Dictionary APIs

Open Library is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 19 Aug 2026; always check the official documentation before relying on this API in production, as terms and limits can change.