Overview
Gutendex provides a programmatic interface to the extensive collection of public domain books available through Project Gutenberg. Project Gutenberg digitizes and archives cultural works, making them freely available, and Gutendex offers a structured API layer over this dataset. This allows developers and researchers to access book metadata, including titles, authors, subjects, and download links, without needing to scrape or parse raw Project Gutenberg files directly.
The API is designed for ease of use, primarily employing simple HTTP GET requests to query the database. Users can filter books by various parameters such as author, title, language, and subject, or search for specific keywords across the catalog. The response format is JSON, which is a widely adopted standard for data interchange on the web, facilitating integration into a variety of programming environments. This makes Gutendex suitable for building applications like digital libraries, literary analysis tools, educational platforms, or content aggregators focused on classic literature.
Gutendex distinguishes itself by focusing exclusively on Project Gutenberg's public domain content, which means all books accessible via the API are free from copyright restrictions in the United States and often globally. This eliminates legal complexities associated with copyrighted material, making it a reliable resource for projects that require freely distributable content. Its simplicity and dedicated purpose make it a strong choice for developers who need specific, well-structured access to a canonical collection of public domain texts for literary applications or academic research, where the emphasis is on historical and cultural works rather than contemporary publications.
The API's architecture prioritizes direct access to book data, providing details like the book ID, title, authors, subjects, bookshelves, languages, and various download formats (e.g., plain text, EPUB, MOBI). This granular access supports diverse use cases, from populating a mobile e-reading app with classic novels to conducting large-scale text analysis on literary trends over centuries. The absence of complex authentication or rate limits (within reasonable usage) further lowers the barrier to entry for new projects and individual researchers.
Key features
- Comprehensive Project Gutenberg Catalog Access: Provides an API interface to over 70,000 public domain books from Project Gutenberg, including metadata and download links.
- Advanced Filtering Capabilities: Allows users to filter books by author, title, language, subject, bookshelves, and more, enabling precise data retrieval.
- Full-text Search: Supports keyword searches across the book catalog to find relevant titles based on content or metadata.
- Multiple Download Formats: Offers direct links to books in various formats, such as plain text, EPUB, and MOBI, suitable for different reading devices and applications.
- JSON Response Format: Returns data in a standard JSON format, which is easily parsable and integrates with most programming languages and web frameworks.
- Simple HTTP GET Requests: Utilizes straightforward RESTful principles, making the API intuitive to learn and implement with minimal setup.
- No Authentication Required: Eliminates the need for API keys or tokens, simplifying access for development and testing.
- Public Domain Content Focus: Exclusively provides access to works that are out of copyright, ensuring legal compliance for free redistribution and use.
Pricing
As of May 28, 2026, Gutendex is a free service, offering full access to its API without any subscription fees or usage-based charges. There are no tiered plans or premium features; all capabilities described are available to all users.
| Plan | Cost | Features |
|---|---|---|
| Standard Access | Free | Full access to Project Gutenberg book data, filtering, searching, and download links. |
For the most current information regarding Gutendex's service terms, refer to the Gutendex homepage.
Common integrations
- Web and Mobile Applications: Developers can integrate Gutendex to populate digital libraries, e-reader apps, or educational platforms with public domain literary content.
- Data Analysis Tools: Researchers can use the API to gather datasets for literary analysis, natural language processing (NLP) projects, or historical studies of text.
- Content Management Systems (CMS): Integrate to automatically fetch and display classic literature within a CMS, enriching content offerings.
- E-commerce Platforms: For platforms selling related products (e.g., custom book covers, literary merchandise), Gutendex can provide relevant book metadata.
- Educational Software: Build tools for students and educators to easily access and study classic texts and their metadata.
Alternatives
- Google Books API: Offers a vast catalog of books, including both public domain and copyrighted works, with more extensive metadata and preview capabilities (Google Books API documentation).
- Open Library API: Provides access to a wide range of book data, including author information, editions, and cover images, often drawing from library catalogs.
- Internet Archive API: Offers programmatic access to a massive collection of digitized materials, including books, though it may require more complex parsing for specific book data.
- WorldCat API: A comprehensive catalog of library materials worldwide, suitable for academic and research-focused applications requiring extensive bibliographic data.
Getting started
To begin using the Gutendex API, you can make a simple HTTP GET request to its base URL. The following Python example demonstrates how to fetch a list of books and filter them by language:
import requests
import json
# Base URL for the Gutendex API
BASE_URL = "https://gutendex.com/books/"
# Example 1: Fetch the first page of books
print("Fetching the first page of books...")
response = requests.get(BASE_URL)
if response.status_code == 200:
data = response.json()
print(f"Total books found: {data['count']}")
print("First 5 books:")
for book in data['results'][:5]:
print(f" - {book['title']} by {', '.join([author['name'] for author in book['authors']])}")
else:
print(f"Error fetching books: {response.status_code}")
print("\n" + "-" * 30 + "\n")
# Example 2: Filter books by language (e.g., French - 'fr')
print("Fetching books in French...")
params = {
"languages": "fr"
}
response = requests.get(BASE_URL, params=params)
if response.status_code == 200:
data = response.json()
print(f"Total French books found: {data['count']}")
print("First 5 French books:")
for book in data['results'][:5]:
print(f" - {book['title']} by {', '.join([author['name'] for author in book['authors']])}")
else:
print(f"Error fetching French books: {response.status_code}")
print("\n" + "-" * 30 + "\n")
# Example 3: Search for books by a specific author
print("Searching for books by Jane Austen...")
params = {
"search": "Austen Jane"
}
response = requests.get(BASE_URL, params=params)
if response.status_code == 200:
data = response.json()
print(f"Total books by Jane Austen found: {data['count']}")
print("First 5 books by Jane Austen:")
for book in data['results'][:5]:
print(f" - {book['title']} (Languages: {', '.join(book['languages'])})")
else:
print(f"Error searching for books: {response.status_code}")
This Python script uses the requests library to make HTTP calls to the Gutendex API. It demonstrates how to retrieve a list of books, filter them by language, and search for specific authors. The API's responses are in JSON, which is then parsed to extract relevant book information. For more detailed filtering and search parameters, refer to the Gutendex API documentation on its homepage.