<!-- BusyBot node reference — https://busybot.net/tools/google-books/ -->

> Node: Google Books (`google_books`) · Action · v1
> Category: Productivity · Credentials: Google Books OAuth2 (`googleBooksOAuth2Api`)
> Updated: 2026-08-16

# Google Books

> Search and manage books and bookshelves via the Google Books API.

## Overview

Google Books tool provides access to book volumes and user bookshelves. Volume operations: get a volume by ID, search volumes by query. Bookshelf operations: get a public bookshelf by ID, list all public bookshelves for a user. Bookshelf Volume operations: add a volume to a shelf, clear all volumes from a shelf, list volumes on a shelf, move a volume to a position within a shelf, remove a volume from a shelf. Authenticated operations (add, clear, move, remove) use the authenticated user's My Library and require OAuth2 with write scope. Read operations for other users' public shelves only require a userId.

**Category:** Productivity  
**Tool Name:** `google_books`  
**Version:** 1

**Appearance:** Icon: `lucide-BookOpen` | Color: `#4285F4`

## Node Type

**Action** — processes input items and produces output

## Input / Output

| Direction | Port(s) |
|-----------|--------|
| Input | `Input` |
| Output | `Output`, `Error` |

## Credentials

This tool requires **Google Books OAuth2** credentials.
See the [Credentials Guide](https://busybot.net/credentials/google-books-oauth2-api/) for setup instructions.

### Resources

| Resource | Value |
|----------|-------|
| Bookshelf | `bookshelf` |
| Bookshelf Volume | `bookshelfVolume` |
| Volume | `volume` |

### Operations

| Resource | Operation | Value | Description |
|----------|-----------|-------|-------------|
| Volume | Get | `get` | Retrieve a specific book volume by its ID. |
| Volume | Get All | `getAll` | Search for book volumes matching a query string. |
| Bookshelf | Get | `get` | Retrieve a specific bookshelf by ID for a given user. |
| Bookshelf | Get All | `getAll` | List all public bookshelves belonging to a given user. |
| Bookshelf Volume | Add | `add` | Add a volume to the authenticated user's bookshelf. |
| Bookshelf Volume | Clear | `clear` | Remove all volumes from the authenticated user's bookshelf. |
| Bookshelf Volume | Get All | `getAll` | List all volumes in a public bookshelf for a user. |
| Bookshelf Volume | Move | `move` | Move a volume to a specific position within the authenticated user's bookshelf. |
| Bookshelf Volume | Remove | `remove` | Remove a specific volume from the authenticated user's bookshelf. |

### Parameters

#### Volume: Get (`get`)

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Volume ID | `string` | Yes | — | The ID of the volume to retrieve. Supports expressions like {{ $json.volumeId }}. |

#### Volume: Get All (`getAll`)

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Search Query | `string` | Yes | — | The search query string (e.g. "flowers+inauthor:keyes"). Supports Google Books query syntax. Supports expressions. |
| Return All | `boolean` | No | `false` | Whether to return all results or limit to a maximum number. |
| Limit | `number` | No | `10` | Maximum number of results to return. Between 1 and 40. _(shown when Return All is `false`)_ |

#### Bookshelf: Get (`get`)

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Shelf ID | `string` | Yes | — | The ID of the bookshelf to retrieve. |
| User ID | `string` | Yes | — | The ID of the user whose bookshelves to access. |

#### Bookshelf: Get All (`getAll`)

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| User ID | `string` | Yes | — | The ID of the user whose bookshelves to access. |

#### Bookshelf Volume: Add (`add`)

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Volume ID | `string` | Yes | — | The ID of the volume to add, move, or remove. Supports expressions. |
| Shelf ID | `string` | Yes | — | The ID of the bookshelf to operate on. |

#### Bookshelf Volume: Clear (`clear`)

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Shelf ID | `string` | Yes | — | The ID of the bookshelf to operate on. |

#### Bookshelf Volume: Get All (`getAll`)

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Shelf ID | `string` | Yes | — | The ID of the bookshelf to operate on. |
| User ID | `string` | Yes | — | The ID of the user whose bookshelf volumes to list. |
| Return All | `boolean` | No | `false` | Whether to return all results or limit to a maximum number. |
| Limit | `number` | No | `10` | Maximum number of results to return. Between 1 and 40. _(shown when Return All is `false`)_ |

#### Bookshelf Volume: Move (`move`)

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Volume ID | `string` | Yes | — | The ID of the volume to add, move, or remove. Supports expressions. |
| Shelf ID | `string` | Yes | — | The ID of the bookshelf to operate on. |
| Volume Position | `number` | Yes | `0` | The zero-based position to move the volume to within the bookshelf. |

#### Bookshelf Volume: Remove (`remove`)

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Volume ID | `string` | Yes | — | The ID of the volume to add, move, or remove. Supports expressions. |
| Shelf ID | `string` | Yes | — | The ID of the bookshelf to operate on. |

#### All Operations

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Authentication | `options` | No | `oAuth2` | Authentication method to use. |
| | | | | Options: `oAuth2` (OAuth2, recommended), `serviceAccount` (Service Account) |
| Google Account | `credential` | No | — | Connect or select your Google account. _(shown when Authentication is `oAuth2`)_ |
| Service Account Email | `string` | Yes | — | The email address of the Google service account, for example `my-service-account@project.iam.gserviceaccount.com`. _(shown when Authentication is `serviceAccount`)_ |
| Private Key | `string` | Yes | — | The private key from the service account JSON key file. Paste the full PEM block, including the BEGIN and END lines. _(shown when Authentication is `serviceAccount`)_ |
| Max Concurrency | `number` | No | `5` | Maximum number of items to process concurrently. Between 1 and 20. |

## Output Data

The API response is merged into the item JSON, so the incoming fields pass through except where a response field uses the same name. Binary data on the input item is not carried to the output.

How many output items an input item produces depends on the operation:

| Operation | Output |
|-----------|--------|
| Volume `get` | One item carrying the volume record. |
| Volume `getAll` | **Fans out** — one item per matching volume. A search with no matches still emits one item, carrying the input JSON unchanged. |
| Bookshelf `get` | One item carrying the bookshelf record. |
| Bookshelf `getAll` | **Fans out** — one item per bookshelf. An empty shelf list still emits one item, carrying the input JSON unchanged. |
| Bookshelf Volume `getAll` | **Fans out** — one item per volume on the shelf. An empty shelf still emits one item, carrying the input JSON unchanged. |
| Bookshelf Volume `add`, `clear`, `move`, `remove` | One item carrying `success: true`. The Google Books API returns no body for these calls, so there is nothing else to report. |

Because the fan-out operations already emit one item per record, you do not need a Split Out node after them. Reference a returned field downstream by expression, e.g. `{{ $json.volumeInfo.title }}`.

## Usage Examples

- Search for books by title, author, or keyword
- Get detailed information about a specific book by volume ID
- List all public bookshelves for a Google Books user
- Add a book to a personal library bookshelf
- Remove a book from a library bookshelf
- Move a book to a specific position on a shelf
- Clear all books from a bookshelf

## Example Configuration

Search the catalogue and return the first 10 matches, one item each:

```json
{
  "type": "google_books",
  "parameters": {
    "authentication": "oAuth2",
    "resource": "volume",
    "operation": "getAll",
    "searchQuery": "{{ $json.query }}",
    "returnAll": false,
    "limit": 10
  }
}
```

Look up one volume by ID:

```json
{
  "type": "google_books",
  "parameters": {
    "resource": "volume",
    "operation": "get",
    "volumeId": "{{ $json.id }}"
  }
}
```

List a user's public bookshelves:

```json
{
  "type": "google_books",
  "parameters": {
    "resource": "bookshelf",
    "operation": "getAll",
    "userId": "117435690842326208722"
  }
}
```

Add a volume to a shelf in your own library:

```json
{
  "type": "google_books",
  "parameters": {
    "resource": "bookshelfVolume",
    "operation": "add",
    "shelfId": "1001",
    "volumeId": "{{ $json.id }}"
  }
}
```

### Error Handling

| Mode | Behavior |
|------|----------|
| **stop** | Halts workflow on first error |
| **continue** | Skips failed items, passes successful ones through |
| **errorPort** | Routes failed items to Error output port |

## Tips

Search volumes and manage bookshelves using the Google Books API — get books by ID, search, and manage your library shelves.