ShareYourGroupShareYourGroupFree Public APIs

Open Library books

Book records by ISBN, and search and cover services elsewhere in the same API.

Address that will be called:

What it gives you

Book records by ISBN, and search and cover services elsewhere in the same API. The example returns the record of one ISBN.

Terms and limits

Open Library's developer page asks you to cache responses, to identify your application with a User-Agent header and an email, and not to harvest HTML or make hundreds of single-book requests: use the search endpoint for batches. Default requests are limited to 1 per second, and identified ones to 3 per second. A browser cannot set the User-Agent header, so a page that makes many requests should use a server of its own.

_Read on 14 November 2026 from openlibrary.org/developers/api._

Good habits

  1. Cache answers that do not change often.
  2. Handle errors: the service may be busy or down.
  3. Give credit where the terms ask for it.
  4. Do not put secret keys into a web page: this API needs none, but many others do.

The same request in code

curl

curl -L "https://openlibrary.org/isbn/9780140328721.json"

Python

import json, urllib.request

with urllib.request.urlopen("https://openlibrary.org/isbn/9780140328721.json") as r:
    data = json.load(r)
print(data['title'])

JavaScript (browser or Node.js)

const res = await fetch("https://openlibrary.org/isbn/9780140328721.json");
const data = await res.json();
console.log(data.title);

A real answer

This is what the example request above returned when we called it on 14 November 2026 with the default values (it took about 1.7 s from our computer). Values such as times and temperatures change.

{
  "identifiers": {
    "goodreads": [
      "1507552"
    ],
    "librarything": [
      "6446"
    ]
  },
  "title": "Fantastic Mr. Fox",
  "authors": [
    {
      "key": "/authors/OL34184A"
    }
  ],
  "publish_date": "October 1, 1988",
  "publishers": [
    "Puffin"
  ],
  "covers": [
    15152634,
    8739161,
    -1
  ],
  "contributions": [
    "Tony Ross (Illustrator)"
  ],
  "languages": [
    {
      "key": "/languages/eng"
    }
  ],
  "source_records": [
    "promise:bwb_daily_pallets_2021-05-13:KP-140-654",
    "ia:fantasticmrfox00dahl_834",
    "marc:marc_openlibraries_sanfranciscopubliclibrary/sfpl_chq_2018_12_24_run02.mrc:85081404:4525",
    "amazon:0140328726",
    "bwb:9780140328721",
    "promise:bwb_daily_pallets_2021-04-19:KP-128-107",
    "promise:bwb_daily_pallets_2020-04-30:O6-BTK-941"
  ],
  "local_id": [
    "urn:bwbsku:KP-140-654",
    "urn:sfpl:31223064402481",
    "urn:sfpl:31223117624784",
    "urn:sfpl:31223113969183",
    "urn:sfpl:31223117624800",
    "urn:sfpl:31223113969225",
    "urn:sfpl:31223106484539",
    "urn:sfpl:31223117624792",
    "urn:sfpl:31223117624818",
    "urn:sfpl:31223117624768",
    "urn:sfpl:31223117624743",
    "urn:sfpl:31223113969209",
    "urn:sfpl:31223117624750",
    "urn:sfpl:31223117624727",
    "urn:sfpl:31223117624776",
    "urn:sfpl:31223117624719",
    "urn:sfpl:31223117624735",
    "urn:sfpl:31223113969241",
    "urn:bwbsku:KP-128-107",
    "urn:bwbsku:O6-BTK-941"
  ],
  "type": {
    "key": "/type/edition"
  },
  "first_sentence": {
    "type": "/type/text",
    "value": "Down in the valley there were three farms."
  },
  "key": "/books/OL7353617M",
  "number_of_pages": 96,
  "works": [
    {
      "key": "/works/OL45804W"
    }
  ],
  "classifications": {},
  "ocaid": "fantasticmrfoxpu00roal",
  ...

This is an independent directory. It is not connected with any of the services listed. Each address was called on 14 November 2026 with curl, Python, Node.js and Chrome (from a page on another site), and the answer shown is a real one. APIs change: check the service's own page before you depend on it.