Reference · Tools
Google Books
Search and manage books and bookshelves using the Google Books API.
The Google Books node connects your workflows to the Google Books API, letting you search volumes, fetch book details by ID, and fully manage your personal bookshelves — adding, moving, listing, and removing volumes. A practical use case: automatically add every book from a curated Airtable list to a specific Google Books shelf without touching the app manually.
- Node type
- Action
- Parameters
- 19
- Outputs
- Output, Error
- Credentials
- Google Books OAuth2
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 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:
{
"type": "google_books",
"parameters": {
"authentication": "oAuth2",
"resource": "volume",
"operation": "getAll",
"searchQuery": "{{ $json.query }}",
"returnAll": false,
"limit": 10
}
}
Look up one volume by ID:
{
"type": "google_books",
"parameters": {
"resource": "volume",
"operation": "get",
"volumeId": "{{ $json.id }}"
}
}
List a user’s public bookshelves:
{
"type": "google_books",
"parameters": {
"resource": "bookshelf",
"operation": "getAll",
"userId": "117435690842326208722"
}
}
Add a volume to a shelf in your own library:
{
"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.
Frequently asked questions
Which operations require OAuth2 and which don't?
Write operations on your own library — adding a volume to a shelf, clearing a shelf, moving a volume to a position, and removing a volume — all require OAuth2 authentication with write scope. Read-only operations like searching volumes, fetching a volume by ID, or listing another user's public bookshelves only need a userId and do not require write access. Make sure your OAuth2 credential includes the write scope if you plan to modify any shelf.
How do I read someone else's bookshelves versus my own?
To read another user's public bookshelves, you supply their userId and use the public bookshelf operations (get a bookshelf by ID or list all public bookshelves). To manage your own shelves — adding, removing, or moving volumes — the node targets your authenticated user's My Library automatically via OAuth2; no userId is needed for those write operations.
What does the node return when something goes wrong?
The node has two distinct outputs: Output and Error. If an API call fails — for example, an invalid volume ID, insufficient OAuth2 scope, or a shelf that doesn't exist — execution is routed through the Error output rather than stopping the entire workflow. This lets you branch your workflow to handle failures gracefully, such as logging the error or retrying with corrected parameters.
Can I move a volume to a specific position on a shelf?
Yes. The 'move a volume to a position within a shelf' operation lets you reorder volumes on a shelf by specifying the target position. This operates on your own authenticated My Library shelves and requires OAuth2 with write scope, like all other shelf modification operations.
What credential do I need to set up, and where do I get it?
You need a Google Books OAuth2 credential, identified in BusyBot as googleBooksOAuth2Api. You create this by setting up an OAuth2 client in the Google Cloud Console with the Books API enabled, then authorizing it inside BusyBot's credential manager. If you only need read access to public data, a minimal scope is sufficient, but shelf write operations require the full library write scope.
Build with the Google Books node
Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Google Books OAuth2 credentials first.
Open BusyBotLast updated . Spotted something wrong? Tell us.