Skip to main content

Gutendex

Gutendex is a free, open JSON web API that provides metadata for over 70,000 public domain books from Project Gutenberg—one of the world's largest collections of free ebooks. The API allows developers to search and filter the complete Project Gutenberg catalog by title, author, language, subject, copyright status, and more, returning structured data including book titles, author names, download counts, available formats, and cover image URLs. Gutendex requires no API key or authentication, making it easy to integrate for research, content discovery, digital library applications, and data analysis projects.

Gutendex icon

Power end-to-end data operations for your Gutendex API with Nexla. Our bi-directional Gutendex connector is purpose-built for Gutendex, making it simple to ingest data, sync it across systems, and deliver it anywhere — all with no coding required. Nexla turns API-sourced data into ready-to-use, reusable data products and makes it easy to send data to Gutendex or any other destination. With comprehensive monitoring, lineage tracking, and access controls, Nexla keeps your Gutendex workflows fast, secure, and fully governed.

Features

Type: API

SourceDestination

  • Seamless API Integration: Connect to any endpoint as source or destination without coding, with automatic data product creation
  • Visual Composition & Chaining: Build complex integrations using visual templates, chain API calls, and compose workflows with data validation and filtering
  • API Proxy: Expose curated slices of your data securely with a secure and customizable API proxy that validates and transforms data on the fly
  • Request optimization with intelligent batching, retry, and caching to minimize API calls and costs

Prerequisites

The Gutendex API is a completely open, public service that requires no API key, access token, or user registration. Anyone can make requests to the API immediately without any prior setup.

About the Gutendex API

Gutendex is a self-hostable JSON web API that serves metadata from Project Gutenberg's catalog of public domain books. The public instance is available at https://gutendex.com and is freely accessible without credentials.

For long-term or high-volume production usage, Project Gutenberg's official documentation recommends running your own Gutendex server instance using the open-source code available at https://github.com/garethbjohnson/gutendex. This ensures availability and avoids placing excessive load on the shared public endpoint.

Authenticate

Create a credential in Nexla

  1. After selecting the data source/destination type, click the Add Credential tile to open the Add New Credential overlay.

  2. Enter a name for the credential in the Credential Name field and a short, meaningful description in the Credential Description field.

  3. Enter the base URL for the Gutendex API in the Base URL field. The default public endpoint is https://gutendex.com. If your organization runs a self-hosted Gutendex instance, enter the base URL of your private server instead.

    The base URL should not include a trailing slash or any path segments. For the public Gutendex instance, use https://gutendex.com exactly as shown.

  4. Click the Save button at the bottom of the overlay. The newly added credential will now appear in a tile on the Authenticate screen during data source/destination creation.

Use as a data source

To create a new data flow, navigate to the Integrate section, and click the New Data Flow button. Select the Gutendex API connector tile, then select the credential that will be used to connect to the Gutendex API instance, and click Next; or, create a new Gutendex API credential for use in this flow.

Endpoint templates

Nexla provides pre-built templates that can be used to rapidly configure data sources to ingest data from common Gutendex API endpoints. Select the endpoint from which this source will fetch data from the Endpoint pulldown menu. Available endpoint templates are listed in the expandable boxes below.

List books

Retrieves a paginated list of books from Project Gutenberg, with support for filtering by sort order, language codes, search terms, and topic. Use this endpoint to bulk-ingest book metadata or to build filtered catalogs for specific subjects or languages.

  • Sends a GET request to /books using the base URL configured in your Gutendex API credential, with optional query parameters for Sort, Language Codes, Search, and Topic.
  • Response data is extracted from $.results[*], returning each book as an individual record. Each response page contains up to 32 records; Nexla automatically follows pagination links to retrieve the full result set.
  • Configure the following parameters: Sort — result ordering (e.g., popular, ascending, descending). Language Codes — comma-separated ISO 639-1 language codes to filter by (e.g., en, fr,fi). Search — space-separated keywords to search author names and titles. Topic — filter by bookshelf or subject phrase.

The Gutendex dataset is a static catalog of public domain books — it does not update in real time. For most use cases, a one-time or infrequent scheduled ingestion is sufficient.

Get book by ID

Retrieves detailed metadata for a single book using its Project Gutenberg ID number. Use this endpoint when you need the full metadata record for a specific known book.

  • Sends a GET request to /books/{id} using the base URL configured in your Gutendex API credential, where {id} is the numeric Project Gutenberg book ID.
  • Response data is extracted from $, returning the full book metadata as a single record.
  • Configure the following parameters: Book ID — the numeric Project Gutenberg ID of the book to retrieve (e.g., 1342 for Pride and Prejudice).

Project Gutenberg book IDs can be found in the URL of any book's page on gutenberg.org, or retrieved from the List books endpoint. Use a lookup macro to pass book IDs dynamically when chaining API calls.

Once the selected endpoint template has been configured, click the Test button to the right of the endpoint selection menu to retrieve a sample of the data that will be fetched. Sample data will be displayed in the Endpoint Test Result panel on the right, allowing you to verify that the source is configured correctly before saving.

Manual configuration

Gutendex API sources can also be manually configured to ingest data from the Gutendex /books endpoint, including additional query parameters not covered by the pre-built templates. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, endpoint URL, date/time and lookup macros, path to data, metadata, and request headers.

The primary endpoint for listing and filtering books is https://gutendex.com/books; to retrieve a single book by its Project Gutenberg ID, use https://gutendex.com/books/{id} (for example, https://gutendex.com/books/1342 for Pride and Prejudice). If your organization runs a self-hosted Gutendex instance, use its base URL instead — this should match the Base URL configured in your Gutendex API credential.

In addition to Sort, Language Codes, Search, and Topic, the /books endpoint accepts query parameters appended to the URL for author_year_start/author_year_end (filter by an author's lifespan year, e.g. author_year_start=1800&author_year_end=1899), copyright (true, false, or null), ids (comma-separated Project Gutenberg IDs, e.g. ids=1342,11,1661 — useful with a lookup macro), and mime_type (filter by download format prefix, e.g. mime_type=text/).

Response data is nested under a top-level results array, so set Path to Data to $.results[*] — without it, Nexla treats the entire paginated response (including count, next, and previous) as a single record. The count field can be captured as metadata with $.count. The Gutendex public API does not require any authentication headers, and since the catalog is largely static, date/time macros are rarely needed.

Once all of the relevant settings have been configured, click the Create button in the upper right corner of the screen to save and create the new Gutendex API data source. Nexla will now begin ingesting data from the configured endpoint and will organize any data that it finds into one or more Nexsets.