Webnovel APIwebnovel.com ↗
Fetch book metadata from Webnovel.com: title, synopsis, cover, ratings, chapter count, view count, ranking, and tags. Search by keyword with pagination.
What is the Webnovel API?
The Webnovel.com API exposes 2 endpoints that return structured metadata for fiction titles hosted on webnovel.com. The get_book_details endpoint returns 10 fields per book — including title, synopsis, cover image URL, category, view count, power stone ranking, rating score and count, chapter count, and tags — given a numeric book ID or URL slug. The search_books endpoint finds titles by keyword and returns paginated result sets of 10 books per page.
curl -X GET 'https://api.parse.bot/scraper/e189b2e3-a0c9-4ac8-9358-cba48c9531d1/get_book_details?book_id=32060926408545505' \ -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 webnovel-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.
"""Walkthrough: Webnovel SDK — search books and fetch full details."""
from parse_apis.webnovel_com_api import Webnovel, InputFormatInvalid
client = Webnovel()
# Search for books by keyword, capped at 5 results.
for book_summary in client.book_summaries.search(query="dragon", limit=5):
print(book_summary.title, book_summary.rating)
# Drill into the first search hit to get its full URL for a detail lookup.
hit = client.book_summaries.search(query="dragon", limit=1).first()
if hit is not None:
print(f"Top result: {hit.title}")
print(f"Categories: {', '.join(hit.categories)}")
print(f"Tags: {', '.join(hit.tags[:5])}")
# Fetch full book details by known ID.
try:
book = client.books.get(book_id="32060926408545505")
except InputFormatInvalid as e:
print(f"Invalid input: {e.message}")
else:
print(f"{book.title} — {book.category}")
print(f"Chapters: {book.chapter_count}, Views: {book.view_count}")
print(f"Rating: {book.rating_score} ({book.rating_count} ratings)")
print(f"Ranking: {book.ranking}") # None when unavailable
print(f"Synopsis: {book.synopsis[:120]}...")
print("exercised: book_summaries.search / books.get")
Fetches detailed metadata for a webnovel book given its ID or URL slug. Returns the page URL, title, cover image URL, category, chapter count, view count, power ranking position (may be null when unavailable), rating score and count, full synopsis, and tags. Accepts both the numeric book ID (e.g. '32060926408545505') and the full URL slug with title (e.g. 'o-mais-fraco-domador-de-bestas-consegue-todos-os-dragoes-sss_32060926408545505').
| Param | Type | Description |
|---|---|---|
| book_idrequired | string | Webnovel book identifier. Can be the numeric ID (e.g. '32060926408545505') or the full slug including title (e.g. 'o-mais-fraco-domador-de-bestas-consegue-todos-os-dragoes-sss_32060926408545505'). |
{
"type": "object",
"fields": {
"tags": "array of strings — book tags",
"title": "string — book title",
"ranking": "integer or null — power stone ranking position, null when unavailable",
"category": "string — book category (e.g. Fantasia)",
"page_url": "string — canonical URL of the book page",
"synopsis": "string — full book description/synopsis",
"view_count": "integer — total number of views",
"cover_image": "string — URL of the book cover image",
"rating_count": "integer — number of ratings/reviews",
"rating_score": "number — average rating score out of 5",
"chapter_count": "integer — total number of chapters"
},
"sample": {
"data": {
"tags": [
"AÇÃO",
"ROMANCE",
"AVENTURA",
"MAGIA",
"FRACO A FORTE",
"INVENCÍVEL",
"SOBREVIVÊNCIA",
"DRAGÃO",
"O FORTE FINGIR SER FRACO",
"INVOCAÇÕES"
],
"title": "O Mais Fraco Domador de Bestas Consegue Todos os Dragões SSS",
"ranking": null,
"category": "Fantasia",
"page_url": "https://www.webnovel.com/pt/book/32060926408545505",
"synopsis": "\"Dragões e seus descendentes dominam os céus, a terra e os mares... a humanidade sobrevive nas brechas, sonhando com um retorno.\"...",
"view_count": 1067910,
"cover_image": "https://book-pic.webnovel.com/bookcover/32060926408545505?imageMogr2/thumbnail/600x&imageId=1742814881493",
"rating_count": 127,
"rating_score": 4.67,
"chapter_count": 1202
},
"status": "success"
}
}About the Webnovel API
Book Metadata Retrieval
The get_book_details endpoint accepts a book_id parameter as either a numeric ID (e.g. 32060926408545505) or a full URL slug including the title. It returns the canonical page_url, title, cover_image URL, category (such as "Fantasia"), chapter_count, view_count, synopsis, and tags array. The rating_score is a decimal out of 5 alongside a rating_count indicating how many users contributed that score. The ranking field reflects the book's current power stone ranking position and returns null when the book is not ranked.
Keyword Search with Pagination
The search_books endpoint takes a required query string and an optional page integer. Each page returns up to 10 results, and the has_more boolean tells you whether additional pages exist. Each result object includes url, title, cover_image, categories, rating, synopsis, and tags — enough to compare titles and filter candidates before fetching full details with get_book_details.
Data Coverage Notes
Both endpoints cover publicly visible book pages on webnovel.com regardless of the language or regional variant of the URL. Tags and categories reflect how Webnovel itself classifies titles, so values like "Fantasia" may appear on Portuguese-locale pages. The power stone ranking is a live position that changes daily and may be absent (null) for books outside the current ranked pool.
The Webnovel API is a managed, monitored endpoint for webnovel.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when webnovel.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 webnovel.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?+
- Build a reading-list tracker that stores cover images, synopses, and chapter counts for followed titles.
- Compare power stone rankings across multiple books to surface trending fiction in a given category.
- Run keyword searches to discover new titles in a genre, using the tags and synopsis fields to filter candidates.
- Monitor view_count growth on a specific book_id over time to gauge audience momentum.
- Aggregate rating_score and rating_count across search results to rank the highest-rated books in a category.
- Populate a recommendation widget with cover images and synopses pulled from search_books results.
- Cross-reference chapter_count against view_count to identify high-engagement shorter works.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Webnovel.com have an official developer API?+
What does the ranking field actually represent, and when is it null?+
ranking field is the book's current position in Webnovel's power stone leaderboard. Power stones are votes readers cast each week, and the ranking resets periodically. When a book is not participating in or does not appear on the ranked list, the field returns null rather than a numeric position.Does search_books return results across all Webnovel languages and locales?+
search_books endpoint searches against the Webnovel catalog using the query string you supply. Results reflect what the platform surfaces for that keyword. Titles that exist only in specific regional catalogs may not consistently appear. You can fork this API on Parse and revise it to target a specific locale URL if you need region-scoped results.Does the API return individual chapter content or reading progress data?+
How fresh is the data returned by get_book_details?+
view_count and ranking reflect point-in-time values at the moment the request is made. The power stone ranking in particular changes daily, so repeated calls to the same book_id may return different ranking values across days.