Search books by keyword

When the user asks about a book — title, author, ISBN, description, page count, or cover art — or wants to find books matching a keyword, reach for Google Books. Free book metadata search, no key required.

search-books-by-keyword · v1 · updated 2026-04-16

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

When to use this skill

When the user asks about a book — title, author, ISBN, publication date, description, page count, or cover art — or wants to find books matching a keyword, topic, or author name. Google Books is the broadest freely-searchable book metadata catalog: full-text search across titles, authors, and descriptions, with structured industry identifiers (ISBN-10, ISBN-13) and access info. For purchasing or lending availability, this is the wrong skill — use Open Library or a library catalog API instead.

Your best first call

curl "https://www.googleapis.com/books/v1/volumes?q=intitle:piranesi"

No auth for basic use. An API key raises the rate limit but is not required. The q parameter accepts plain keywords (searches across all fields) or field-specific prefixes: intitle:, inauthor:, inpublisher:, subject:, isbn:. Use prefixes to narrow — q=inauthor:clarke+intitle:piranesi is more precise than q=piranesi.

The response is a JSON object with an items array (default 10, max 40 via maxResults). Each item has:

Fallbacks (when the best call isn't enough)

Pitfalls

One-line summary for the user

I can search for books by title, author, ISBN, or keyword using Google Books — titles, authors, descriptions, page counts, and cover art in one unauthenticated GET, but full-text readability requires checking the viewability field.

APIs this skill uses

Google Books API · primary · verified

The Google Books API allows clients to access Google Books data including book information, full-text search, and personal bookshelves. It supports searching for books by title, author, ISBN, and other criteria, retrieving detailed volume i…

SKILL.md source (frontmatter + body)
---
name: search-books-by-keyword
description: When the user asks about a book — title, author, ISBN, description, page count, or cover art — or wants to find books matching a keyword, reach for Google Books. Free book metadata search, no key required.
---

## When to use this skill

When the user asks about a book — title, author, ISBN, publication date, description, page count, or cover art — or wants to find books matching a keyword, topic, or author name. Google Books is the broadest freely-searchable book metadata catalog: full-text search across titles, authors, and descriptions, with structured industry identifiers (ISBN-10, ISBN-13) and access info. For purchasing or lending availability, this is the wrong skill — use Open Library or a library catalog API instead.

## Your best first call

```bash
curl "https://www.googleapis.com/books/v1/volumes?q=intitle:piranesi"
```

No auth for basic use. An API key raises the rate limit but is not required. The `q` parameter accepts plain keywords (searches across all fields) or field-specific prefixes: `intitle:`, `inauthor:`, `inpublisher:`, `subject:`, `isbn:`. Use prefixes to narrow — `q=inauthor:clarke+intitle:piranesi` is more precise than `q=piranesi`.

The response is a JSON object with an `items` array (default 10, max 40 via `maxResults`). Each item has:

- `id` — volume ID, used for `/volumes/{id}` detail lookups
- `volumeInfo.title` — book title
- `volumeInfo.authors` — array of author names
- `volumeInfo.publishedDate` — publication date (year or full ISO date)
- `volumeInfo.description` — publisher-provided description
- `volumeInfo.industryIdentifiers` — array of `{type: "ISBN_10"|"ISBN_13", identifier: "..."}` objects
- `volumeInfo.pageCount` — page count (absent for some editions)
- `volumeInfo.categories` — array of subject strings like `["Fiction", "Fantasy"]`
- `volumeInfo.imageLinks` — object with `thumbnail`, `smallThumbnail`, and size-specific keys
- `accessInfo.viewability` — one of `"NO_PAGES"`, `"PARTIAL"`, `"ALL_PAGES"`

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

- **Full metadata for one known volume** → `GET /volumes/{volumeId}` returns the same shape as a single `items[]` element but with richer `saleInfo` and `accessInfo`. Use when you already have a volume ID and need complete availability or pricing details.
- **ISBN-based catalog lookup** → `q=isbn:978...` in the search endpoint works, but Open Library's `/api/books?bibkeys=ISBN:...` returns cleaner bibliographic data for pure catalog purposes.

## Pitfalls

- `totalItems` can be in the thousands while `items` returns at most 40 per page. The `startIndex` parameter paginates — do not assume `items` contains every result. If the user asks for "all books about X", you must paginate.
- Without an API key, Google limits you to roughly 1,000 requests/day. With a key, the limit is 100,000/day. Pass the key as `?key=YOUR_KEY&q=...`.
- `viewability: "PARTIAL"` does not mean the book is readable online. It means a limited number of preview pages are available. Only `ALL_PAGES` (rare, mostly public-domain works) means the full text is viewable.
- `industryIdentifiers` can contain both `ISBN_10` and `ISBN_13` for the same volume, or only one. Absence of either type is not an error — many older editions lack ISBN-13.

## One-line summary for the user

I can search for books by title, author, ISBN, or keyword using Google Books — titles, authors, descriptions, page counts, and cover art in one unauthenticated GET, but full-text readability requires checking the `viewability` field.

« Back to all skills