Open Library API: List books by author
Finds an Open Library author by name, link or key and lists their works with first publication year, edition count, cover and an author profile.
Unofficial. Not affiliated with or endorsed by Open Library.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Sort optional
sort Order of books, for example newest. Popular is the default.
popular (default)
One of
popular,newest,oldest.- Author, required
author Author name, Open Library author link, or author key, for example Toni Morrison.
Toni Morrison
- Max Results optional
max_results Maximum number of books to return, for example 50 (up to 200).
50 (default)
Whole number from 1 to 200.
Input as JSON
{ "author": "Toni Morrison"}Output
{ "books": [ { "title": "Beloved", "edition_count": 111, "cover_image_link": "https://covers.openlibrary.org/b/id/8261367-L.jpg" , "open_library_link": "https://openlibrary.org/works/OL50548W" , "first_published_year": 1987 }, { "title": "The Bluest Eye", "edition_count": 63, "cover_image_link": "https://covers.openlibrary.org/b/id/15152696-L.jpg" , "open_library_link": "https://openlibrary.org/works/OL50565W" , "first_published_year": 1970 }, { "title": "Sula", "edition_count": 55, "cover_image_link": "https://covers.openlibrary.org/b/id/8384008-L.jpg" , "open_library_link": "https://openlibrary.org/works/OL50567W" , "first_published_year": 1973 } ], "biography": "Toni Morrison is a Nobel Prize and Pulitzer Prize-winning American author, editor, and professor. Her novels are known for their epic themes, vivid dialogue, and richly detailed black characters. Among her best known novels are The Bluest Eye, Song of Solomon, and Beloved.", "author_key": "OL31120A", "birth_date": "18 February 1931", "death_date": "5 August 2019", "photo_link": "https://covers.openlibrary.org/a/id/6388126-L.jpg" , "author_link": "https://openlibrary.org/authors/OL31120A" , "author_name": "Toni Morrison", "total_works": 95}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"openlibrary.org/list_author_books","input":{"author":"Toni Morrison"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "openlibrary.org/list_author_books" , "input": { "author": "Toni Morrison" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "openlibrary.org/list_author_books" , "input": { "author": "Toni Morrison" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run openlibrary.org/list_author_books# with {"author":"Toni Morrison"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "author" ], "properties": { "sort": { "enum": [ "popular", "newest", "oldest" ], "type": "string", "default": "popular", "description": "Order of books, for example newest. Popular is the default." }, "author": { "type": "string", "minLength": 1, "description": "Author name, Open Library author link, or author key, for example Toni Morrison." }, "max_results": { "type": "integer", "default": 50, "maximum": 200, "minimum": 1, "description": "Maximum number of books to return, for example 50 (up to 200)." } }}Output schema
{ "type": "object", "required": [ "author_name", "birth_date", "death_date", "biography", "photo_link", "author_link", "total_works", "author_key", "books" ], "properties": { "books": { "type": "array", "items": { "type": "object", "required": [ "title", "first_published_year", "edition_count", "cover_image_link", "open_library_link" ], "properties": { "title": { "type": "string" }, "edition_count": { "type": [ "integer", "null" ] }, "cover_image_link": { "type": [ "string", "null" ] }, "open_library_link": { "type": "string" }, "first_published_year": { "type": [ "integer", "null" ] } }, "additionalProperties": false }, "description": "Books by this author in the requested order." }, "biography": { "type": [ "string", "null" ], "description": "Short plain-text author biography." }, "author_key": { "type": "string", "description": "Open Library author key." }, "birth_date": { "type": [ "string", "null" ], "description": "Birth date as listed by Open Library, which may be a partial date." }, "death_date": { "type": [ "string", "null" ], "description": "Death date as listed by Open Library, which may be a partial date." }, "photo_link": { "type": [ "string", "null" ], "description": "Author portrait image link." }, "author_link": { "type": "string", "description": "Open Library author page." }, "author_name": { "type": "string", "description": "Author name on Open Library." }, "total_works": { "type": "integer", "description": "Number of works attributed to this author." } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
openlibrary.org/list_author_books- Returns
- author profile (name, dates, biography, photo), total works, and books (title, first year, editions, cover, link)
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method openlibrary.org/list_author_books with the inputs above.
Ask your agent
- Show me all the books by Toni Morrison on Open Library, sorted from newest to oldest, with their first publication years.
- Can you pull up the author profile and bibliography for Ursula K. Le Guin, limited to the 20 most popular titles?
- List the works of Jane Austen with edition counts and cover images, oldest first.
- I need a list of up to 75 books written by Haruki Murakami, along with the author's biography and photo.
- Find the author OL26320A on openlibrary.org and give me their total works count plus the top 10 books by popularity.
See more
All Open Library methodsFinds Open Library books by search words, optionally narrowed by author and subject, sorted by relevance or publication age. Returns work-level results; free_online means at least one edition is marked public or borrowable, not that a loan is available now.
openlibrary.org/search_booksGets a book's catalog details from Open Library by its title, with an optional author or ISBN to identify the right book. Reading availability reflects listed editions; details may be missing when the catalog has none.
openlibrary.org/get_bookFinds free public-domain Project Gutenberg books by title, author or topic, with authors, languages, subjects, recent downloads, and reading and download links. Public-domain status is based on the United States.
gutenberg.org/search_free_booksLists an artist's songs on Genius by popularity or newest release date, with featured artists, release dates, page views and song art. The artist can be given by name or by Genius artist link; dates or views may be unavailable.
genius.com/list_artist_songsLists a SoundCloud artist's public tracks in latest or SoundCloud popular order, with profile and track details. SoundCloud's popular list may contain fewer than 100 tracks (currently at most 30).
soundcloud.com/list_artist_tracksSearches Google Books by words, author, subject or ISBN, with language, free-ebook and newest-first options. Ratings counts are not shown by the public book feed; newest sorts the available matches by publication date.
books.google.com/search_booksSearches Library of Congress digital collections by keywords, material format and date range, in Library search relevance order. Rights notes may be unavailable for some records.
loc.gov/search_collectionsLists the latest public articles by a Medium writer or publication (by username, publication name or Medium link), with dates, reading times, claps, member-only labels and tags.
medium.com/list_author_articles