Search public domain books

When the user asks about Project Gutenberg books, public domain ebooks, classic literature, or wants to find free ebooks by author, topic, language, or copyright status — reach for Gutendex. Search 70,000+ books in one unauthenticated GET.

search-public-domain-books · v1 · updated 2026-04-16

Agents: This page is a SKILL.md-style capability guide. For JSON, call GET /api/skills/search-public-domain-books. To drop this into a local Claude Code install, copy the frontmatter + body below into ~/.claude/skills/search-public-domain-books/SKILL.md.

When to use this skill

When the user asks about Project Gutenberg books, public domain ebooks, classic literature, or wants to find free ebooks by author name, topic, language, or copyright status. Gutendex is a search-first API — the search parameter on /books handles both title and author queries, and topic filters by Library of Congress subject headings or Gutenberg bookshelves. For purchasing modern books or checking retail availability, this is the wrong skill.

Your best first call

curl "https://gutendex.com/books?search=frankenstein"

No auth. No key. Returns a paginated JSON object. The search parameter matches against both titles and author names — "frankenstein" finds Mary Shelley's novel and any other book with that word in title or author.

The response shape:

Each book object:

Fallbacks (when the best call isn't enough)

Pitfalls

One-line summary for the user

I can search and browse over 70,000 free public domain books on Project Gutenberg — by keyword, topic, language, or author era — via Gutendex, no key required.

APIs this skill uses

Gutendex API · primary · verified

A web API for Project Gutenberg ebook metadata. Gutendex provides access to over 70,000 free e-books with full metadata including titles, authors, subjects, languages, and download formats.

SKILL.md source (frontmatter + body)
---
name: search-public-domain-books
description: When the user asks about Project Gutenberg books, public domain ebooks, classic literature, or wants to find free ebooks by author, topic, language, or copyright status — reach for Gutendex. Search 70,000+ books in one unauthenticated GET.
---

## When to use this skill

When the user asks about Project Gutenberg books, public domain ebooks, classic literature, or wants to find free ebooks by author name, topic, language, or copyright status. Gutendex is a search-first API — the `search` parameter on `/books` handles both title and author queries, and `topic` filters by Library of Congress subject headings or Gutenberg bookshelves. For purchasing modern books or checking retail availability, this is the wrong skill.

## Your best first call

```bash
curl "https://gutendex.com/books?search=frankenstein"
```

No auth. No key. Returns a paginated JSON object. The `search` parameter matches against both titles and author names — "frankenstein" finds Mary Shelley's novel and any other book with that word in title or author.

The response shape:

- `count` — total matching results
- `results` — array of book objects (up to 32 per page)
- `next` / `previous` — pagination URLs (or `null`)

Each book object:

- `id` — Project Gutenberg ID (use for `/books/{id}` lookups)
- `title` — book title
- `authors` — array of `{name, birth_year, death_year}` objects
- `subjects` — Library of Congress subject headings (e.g., "Horror tales", "Science fiction")
- `bookshelves` — curated Gutenberg categories (e.g., "Gothic Fiction", "Banned Books")
- `languages` — ISO 639-1 codes (e.g., `["en"]`)
- `copyright` — `false` for public domain in the USA, `true` for copyrighted, `null` for unknown
- `download_count` — popularity metric
- `formats` — map of MIME type to download URL (includes HTML, EPUB, plain text)

## Fallbacks (when the best call isn't enough)

- **Get a specific book by Gutenberg ID** → `https://gutendex.com/books/84` returns a single book object (not wrapped in a `results` array). Use when you already know the ID from a previous search.
- **Browse by topic or bookshelf** → `https://gutendex.com/books?topic=gothic+fiction` filters by LC subjects and Gutenberg bookshelves simultaneously. Use when the user wants a category, not a keyword.
- **Filter by language** → `https://gutendex.com/books?languages=de` accepts comma-separated ISO 639-1 codes. Use when the user wants books in a specific language.

## Pitfalls

- `search` matches both titles and author names — searching for "shelley" returns books by Shelley and books with "Shelley" in the title. If you need author-only results, use `author_year_start` / `author_year_end` to narrow by era instead.
- `/books/{id}` returns a single book object, not a `results` array. Code that parses `/books` responses will break if applied to `/books/{id}` — the wrapper shape is different.
- `summaries` are auto-generated by Project Gutenberg, not human-written. Treat them as suggestive, not authoritative.
- `topic` is case-insensitive but matches against both `subjects` and `bookshelves` fields simultaneously. These are different taxonomies — `subjects` are Library of Congress headings (broad, academic), `bookshelves` are Gutenberg's curated categories (more reader-friendly).

## One-line summary for the user

I can search and browse over 70,000 free public domain books on Project Gutenberg — by keyword, topic, language, or author era — via Gutendex, no key required.

« Back to all skills