BookWalker APIbookwalker.jp ↗
Access BookWalker Japan's ebook catalog via API. Search manga and light novels, get book details, browse rankings, and fetch autocomplete suggestions.
What is the BookWalker API?
The BookWalker.jp API exposes 5 endpoints covering Japan's largest ebook store, giving developers structured access to book metadata, search results, and category rankings. The get_book_details endpoint returns 10 fields per book including UUID, price in JPY, average rating, series linkage, and author URLs. Companion endpoints handle keyword search with pagination, daily/weekly/monthly rankings by category, autocomplete suggestions, and category landing page sections.
curl -X GET 'https://api.parse.bot/scraper/7391038e-a864-4d2a-9539-7962430edce2/search_books?page=1&order=new&query=naruto&category=ct2' \ -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 bookwalker-jp-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.bookwalker_japan_api import BookWalker, RankingPeriod, RankingCategory, Sort, CategoryPage
bw = BookWalker()
# Get daily manga rankings
for ranked in bw.rankedbooks.list(period=RankingPeriod.DAILY, category=RankingCategory.MANGA):
print(ranked.title, ranked.rank, ranked.price)
# Search for books sorted by popularity
for book_summary in bw.booksummaries.search(query="isekai", order=Sort.POPULAR):
print(book_summary.title, book_summary.price)
full = book_summary.details()
print(full.rating, full.description)
break
# Autocomplete suggestions
for suggestion in bw.suggestions.search(term="naruto"):
print(suggestion.label, suggestion.type_id)
# Browse manga category sections
for section in bw.categorysections.browse(category_id=CategoryPage.MANGA):
print(section.section_title)
for book in section.books:
print(book.title, book.uuid)
Full-text search over BookWalker's catalog. Returns paginated book results matching the query keyword. Results include series-level entries with price ranges when applicable. Pagination via page number; each page returns up to ~20 results.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| order | string | Sort order for results. |
| queryrequired | string | Search keyword (Japanese or English). |
| category | string | Category filter code passed as 'ct' parameter to the site search (e.g. 'ct2' for manga). |
{
"type": "object",
"fields": {
"books": "array of book objects with title, uuid, series_id, author, label, price, image_url, url",
"total_pages": "integer, total number of available pages",
"current_page": "integer, the requested page number"
},
"sample": {
"data": {
"books": [
{
"url": "https://bookwalker.jp/series/13044/list/",
"uuid": "b99403c7-c4a3-4a89-a5b5-9c82bec222d4",
"label": "ジャンプコミックスDIGITAL",
"price": "0 ~ 732",
"title": "こちら葛飾区亀有公園前派出所(ジャンプコミックスDIGITAL)",
"author": "",
"image_url": "https://rimg.bookwalker.jp/279536/eUnObgIVNjRTJtVUNQrbaQ__.jpg",
"series_id": "13044"
}
],
"total_pages": 1,
"current_page": 1
},
"status": "success"
}
}About the BookWalker API
Search and Book Metadata
The search_books endpoint accepts a required query parameter (Japanese or English text) alongside optional filters: category (a category code such as ct2 for manga), order (e.g. new or popular), and page for pagination. Results return an array of book objects each containing title, uuid, author, label, price, image_url, and a canonical url, plus total_pages and current_page for cursor management.
The get_book_details endpoint takes a single uuid and returns the full record for that title: title, authors (array of objects with name and url), price, currency (typically JPY), rating, category, label, series (object with name and url, or null), and the canonical url. This is the primary endpoint for building book pages or enriching catalog data.
Rankings and Discovery
get_rankings returns a ranked list of books filtered by period (daily, weekly, or monthly) and category (total for overall, or codes like ct2 for manga and ct3 for light novels). Each ranked entry includes rank, title, uuid, author, price, image_url, rating, and url — enough to render a full rankings widget without a second request.
autocomplete accepts a term string and returns suggestion objects with label, value, type, typeId, categoryId, and a subscription flag — matching the behavior of BookWalker's live search suggestions. get_category_books takes a category_id slug (e.g. manga, new) and returns the sections displayed on that category landing page, each section carrying a section_title and an array of book objects with the same fields as search_books.
The BookWalker API is a managed, monitored endpoint for bookwalker.jp — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when bookwalker.jp 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 bookwalker.jp 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?+
- Track daily and weekly manga sales rankings to identify trending titles for a recommendation engine.
- Build a BookWalker price monitor by polling
get_book_detailsforpriceandcurrencychanges on a watchlist of UUIDs. - Populate a series tracker by extracting the
seriesobject fromget_book_detailsacross a set of followed titles. - Implement Japanese ebook autocomplete in a reading app using the
autocompleteendpoint'slabelandcategoryIdfields. - Aggregate category landing page content via
get_category_booksto surface curated sections in a third-party storefront. - Compare author output by collecting
authorsarrays fromsearch_booksresults filtered by category code. - Seed a light-novel database by iterating
get_rankingswithct3over weekly and monthly periods.
| 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 BookWalker have an official developer API?+
What does `get_rankings` return and how do I filter by category?+
rankings array where each entry has rank, title, uuid, author, price, image_url, rating, and url. Pass period as daily, weekly, or monthly, and category as total for overall rankings or a code like ct2 (manga) or ct3 (light novel) to narrow results.Does the API return book reviews or individual user review text?+
get_book_details exposes an aggregate rating value (number or null) but does not include review counts, review bodies, or reviewer profiles. You can fork this API on Parse and revise it to add an endpoint that fetches per-book review listings if that data is accessible on the book page.Is BookWalker Global (English storefront) covered by this API?+
Are there pagination limits on `search_books`?+
total_pages alongside current_page, so you can iterate pages programmatically. However, BookWalker's site caps how deep pagination can go for any given query, and requesting a page beyond the available range will return an empty books array rather than an error.