Kobo APIkobo.com ↗
Search Kobo's ebook and audiobook catalog, browse bestsellers, daily deals, free books, and categories. Get prices, ratings, and full book metadata.
What is the Kobo API?
The Kobo API exposes 8 endpoints covering Kobo's ebook and audiobook catalog, including full-text search, category browsing, bestseller lists, and daily deals. The search_books endpoint returns paginated results with fields like title, authors, isbn, price, rating, publication_date, and work_id. Use get_book_details to retrieve a full synopsis, format type, and canonical URL for any title by its slug.
curl -X GET 'https://api.parse.bot/scraper/078a9b99-174b-4b09-a750-ecdf4bd91941/search_books?page=1&query=python+programming&country=ie' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace kobo-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.kobo_books_api import Kobo, Book, BookSummary, Category, CatalogEntry, Suggestion
kobo = Kobo()
# Full-text search with auto-pagination
for entry in kobo.catalogentries.search(query="python programming"):
print(entry.title, entry.authors, entry.price, entry.rating)
# Navigate to full book detail
book = entry.details()
print(book.title, book.author, book.description, book.url)
# Browse categories
for category in kobo.categories.list():
print(category.name, category.slug)
# Drill into a category by slug and list its books
fiction = kobo.category("fiction-literature")
for book_summary in fiction.books.list():
print(book_summary.title, book_summary.author, book_summary.price_info)
# Navigate to full detail
detail = book_summary.details()
print(detail.title, detail.price, detail.type)
# Browse bestselling books
for book in kobo.booksummaries.bestsellers():
print(book.title, book.author, book.url)
# Browse free ebooks
for book in kobo.booksummaries.free():
print(book.title, book.price_info, book.type)
# Daily deals
for deal in kobo.booksummaries.daily_deals():
print(deal.title, deal.slug)
# Autocomplete suggestions
for suggestion in kobo.suggestions.search(query="harry"):
print(suggestion.display, suggestion.suggestion_type, suggestion.series)
Full-text search across Kobo's ebook and audiobook catalog. Returns paginated results with pricing, ratings, and metadata. Some broad queries may redirect to a category listing page, in which case results are parsed from that listing.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination |
| queryrequired | string | Search keyword (e.g. 'python programming', 'romance', 'harry potter') |
{
"type": "object",
"fields": {
"page": "integer current page number",
"books": "array of book objects with title, authors, isbn, slug, format, rating, price, currency, publication_date, image_url, work_id, series, and is_free",
"total": "integer or null total number of results"
},
"sample": {
"data": {
"page": 1,
"books": [
{
"isbn": "9781393712640",
"slug": "python-programming-11",
"price": 6.99,
"title": "Python Programming",
"format": "ebook",
"rating": 5,
"series": null,
"authors": "YASH AKBARI",
"is_free": false,
"work_id": "42d5faf7-1fe5-327a-a60d-e600ea05f4a7",
"currency": "USD",
"image_url": "https://cdn.kobo.com/book-images/3ba6ecfe-7c1a-445d-8ddf-8c5bb733b782/354/1000/False/image.jpg",
"description": "<p>This book introduces Python programming...",
"total_rating": 1,
"publication_date": "2020-11-20T00:00:00.0000000Z"
}
],
"total": null
},
"status": "success"
}
}About the Kobo API
Search and Discovery
The search_books endpoint accepts a query string and optional page integer, returning a books array with per-book fields: title, authors, isbn, slug, format, rating, price, currency, publication_date, image_url, and work_id. The total field gives the result count when available. For partial-query matching — useful for building search-as-you-type features — the autocomplete endpoint takes a partial query and returns up to 30 suggestions grouped by Type (author, title, or series), each with Display, Authors, Title, Series, and ImageId fields.
Catalog Browsing
get_ebook_categories returns a flat list of top-level genre categories with name and slug fields. Pass any category_slug to get_books_by_category to retrieve books in that genre — the response mirrors the listing shape used across the API: title, author, price_info, slug, url, and type. Dedicated endpoints for get_bestselling_ebooks, get_free_ebooks, and get_daily_deals each return the same listing shape with no required inputs, making them straightforward to poll for catalog updates or price monitoring.
Book Detail
get_book_details accepts a book_slug (obtainable from any listing endpoint) and resolves both ebook and audiobook paths, returning type, price, title, author, description, and the canonical url. The description field contains the full synopsis text when available, which listing endpoints do not include. This makes the detail endpoint the right call when you need content for display or indexing beyond the basic metadata surfaced in search results.
The Kobo API is a managed, monitored endpoint for kobo.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when kobo.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official kobo.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Monitor daily deal prices across Kobo's catalog for price-drop alerting tools
- Build a genre-browsing interface using category slugs from get_ebook_categories and listings from get_books_by_category
- Aggregate free ebook availability from get_free_ebooks for reader recommendation services
- Populate book metadata (ISBN, publication_date, rating, image_url) in a personal library management app via search_books
- Implement search-as-you-type author or title suggestions using the autocomplete endpoint
- Track bestseller rankings over time by periodically polling get_bestselling_ebooks
- Fetch full book synopses via get_book_details for content display in reading apps or review sites
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Kobo offer an official developer API?+
What does get_book_details return that search_books doesn't?+
description (synopsis) text and explicitly identifies the book type as either 'ebook' or 'audiobook'. Search results include pricing, ratings, and metadata fields like isbn and publication_date, but do not include the synopsis.How does pagination work across the listing endpoints?+
search_books supports a page input parameter for pagination and returns a total field (which may be null for some queries). The other listing endpoints — get_bestselling_ebooks, get_free_ebooks, get_daily_deals, and get_books_by_category — return a single page of results with no pagination parameter. Multi-page browsing for categories is not currently exposed. You can fork the API on Parse and revise it to add paginated category browsing.Can I retrieve user reviews or reader ratings in detail?+
rating field per book, but the API does not expose individual user reviews, review counts, or review text. The rating is a summary value only. You can fork the API on Parse and revise it to add a reviews endpoint if that data is needed.