A Free API for Chinese Web Novel Data: What You Can Build With It
Everything a book page shows, as JSON, for your bot, your userscript or your reading tracker. One key per account, free, with room to spare.
本文为英文。
If you build things for web novel readers, you've probably wanted this: give a program a Qidian link or a Chinese title and get back the English title, the author, the status, the length and the numbers.
Since the 1.12 release you can. DaoSearch has a public API, free for personal projects and tools, and since 22 October it does more: a book's reader comments, its figures day by day, up to 50 books in one request, free re-checks, and ten times the daily units. This post is the tour: what's in it, what it costs, and a few things worth building. The full reference is the API guide.
What it is
A read-only JSON API over the same data as the site. Every call is a GET, every answer is JSON, and there's nothing in it the pages don't already show a reader. It covers all six platforms: Qidian, Fanqie, JJWXC, Faloo, Qimao and Zongheng.
It's for tools that look things up. It isn't a way to copy the catalogue: every listing stops at a fixed depth, which is also why the daily allowance can be generous.
What you can ask for
A book. Name a platform and the book's id there, the same id that's in the platform's own link, and you get everything its page shows: titles and author in English and Chinese, the English synopsis, genre and tags, the book's other names (earlier titles, RandomTranslator's name and so on), the platform's own figures, the ranking boards it sits on now, whether the platform still carries it, the same novel on other platforms, and a link to an English translation when we know of one.
Several books at once. Send up to 50 ids in one request and get them back in the order you asked, each marked found, moved (the id belongs to a book filed under another platform, and you get that book) or not found. One request, 5 units, however many books.
A book's comments. What readers say about a book, as its page shows them: most liked first or newest first, in Chinese and English, with their likes and dates. Twenty a page, the first hundred in each order, and nothing at all about who wrote them.
A book's history. The book's figures for every day since 15 October 2026: fans, votes, favourites or score, depending on the platform. A day is recorded when a figure changes and the days between are filled in, so you get every day without gaps, each marked changed or not.
Search. A title in English or Chinese returns up to five books across all six platforms. A book is found by its other names too, such as a title it had before a rename. Paste a book's link from its platform and you get that one book. There's an author search too.
A catalogue. Each platform's Browse page as data, with the same filters: title, author, status, genre, tags to include and exclude, length, last update, the platform's own extras, the minimum filters and Hide dropped, and every sort.
Genres and tags. Each platform's vocabulary with book counts, the same lists as the genre index and the tag index.
Rankings. The boards we hold for a platform, and any board's entries with each book's position and how it moved since the previous day.
Booklists. A platform's reader-made lists, the lists that contain a given book, and one list with its books. Zongheng has no booklists, and the API says so up front.
One call, /sources, describes all of it: for each platform, what every figure means, which sorts and filters its catalogue takes and on which steps. Start there, and read the allowed values from it instead of hard-coding them.
What it costs
Nothing. You need an account and a key.
- One key per account. Create it on your account page, under "API key". The account has to be a day old.
- The key is shown once. Store it when you create it. We keep only a hash, so nobody can show it to you again. Regenerate replaces it and the old key stops at once. Revoke stops it and leaves you without one.
- 120 requests a minute and 50,000 units a day. A single record, like one book or one book's history, costs 1 unit. A page of a listing, a page of comments or a batch of up to 50 books costs 5. A request turned away by the limits, or for a wrong parameter, costs nothing.
- Re-checking is free. Every answer carries an ETag. Send it back with your next request and, if nothing changed, you get a 304 that costs no units.
- Every answer says where you stand. Three headers carry your daily units, how many are left and when they come back, so a tool can pace itself without hitting the wall.
- Need more? Ask. If a project needs more than the defaults, email us and we can give your account limits of its own. The API guide says what to send.
For scale: 50,000 units is 50,000 book lookups a day. Checking a thousand books once a day, in batches of 50, costs 100. A Discord bot for a busy server won't come close.
We keep the day your key was last used and today's count against the limits. We don't keep what a key asked for.
Things worth building
A lookup bot. Someone pastes a qidian.com or fanqienovel.com link in your Discord server. The bot sends it to search, gets the book, and replies with the English title, author, status, length and a link to the page. One unit.
A "has it finished yet" checker. Keep a list of book ids and batch-fetch them once a day, 50 at a time, sending back the ETag you got last time. An unchanged batch costs nothing. Status, chapter count and last update are all on the book record. (If you only want this for yourself, the daily digest already does it for the books on your shelf.)
A trend chart. Ask for a book's history and draw its fans or votes over the last month, one point a day. One unit, and no need to have been collecting it yourself.
A "what are readers saying" panel. Show the three most liked comments beside a book in your tool, in English, each quoted short with a link back to the book's page. Good for deciding whether to start a novel.
A userscript for raw readers. On a platform's book page, call the API with the id from the address bar and show the English title and synopsis beside the Chinese. The API can't be called from an ordinary web page on another site, but a userscript or a browser extension can call it.
A ranking watcher. Fetch a board once a day and post the new entries. Each entry says whether it's new, up, down or flat, so you don't have to keep yesterday's copy.
A tool for an AI agent. The OpenAPI document gives every endpoint a name that reads as an intent, like get_book, get_books and search_books, with a description of when to use it and what it costs. Most agent tooling can turn that into tools directly. There's also an llms.txt that describes the site's public pages and the API's endpoints in a few lines.
A translator's shortlist. Ask a catalogue for completed books in a length range with a floor on a reader figure, and you have candidates for your next project, with the Chinese title and author ready to copy.
How answers are shaped
A few choices that make the data easier to work with:
- A book is named by its platform and its id there, sent as text. Fanqie's ids are 19 digits, longer than a JavaScript number holds.
- Text in two languages comes as a pair, English and Chinese. English is null until a book has been translated. Genres and tags are named by their Chinese in parameters, since that's the part that never changes.
- A missing fact is null, never zero or an empty string.
- Numbers are raw. 22256029, not "22.3M". Times are in UTC.
- Figures come as a list. The six platforms count different things, so each figure has a key, the label the site prints, a value and the period it covers. Don't compare a figure across platforms. Why not.
- Every object carries the address of its page here.
- A parameter the endpoint doesn't have is refused, not ignored. A typo gets you an error that says which parameter, and not a quietly wrong answer.
Errors are JSON with a stable code to branch on and a message that says what to do next.
What it won't do
- No chapters. DaoSearch is a catalogue. It hosts no chapter text and neither does the API.
- No Chinese synopsis. Chinese titles and tags are sent because they identify a book. The synopsis is sent in English only.
- No commenters. A comment comes without a name, an account or a picture, and the terms ask you never to try to find out who wrote one.
- No anonymous access and no demo key. Every request needs a key, in the
Authorizationheader. A key in the address is refused, because addresses end up in logs. - No calls from a web page on another site. A key in a public page is a published key. Call the API from a server, a script, an extension or a userscript.
- No catalogue across platforms. Each platform has its own, as on the site, because their figures don't compare.
- No deep paging. A catalogue view with two or more filters goes five pages deep, and comments stop at the first hundred in each order. Narrow a view to see more of it.
The terms, in short
Creating a key means agreeing to seven things:
- It's free, for personal projects and tools. It may change or stop, and a breaking change gets a new version path and 90 days' notice.
- Show a link to the book's page wherever you show its data.
- Keep to your limits and cache what you fetch. If you need more, ask, rather than spreading the work over several accounts.
- Don't use it to copy the catalogue or to train on it in bulk. Titles, synopses and covers belong to their authors and the platforms.
- Reader comments are for analysis and for short quotes shown with a link to the book's page. Don't republish them as a collection, and never try to identify who wrote one.
- Keep your key out of public pages and repositories. A published key gets revoked.
- Send a User-Agent that names your tool.
The lines on comments and on asking for more arrived on 22 October. A key made before then keeps working, with nothing to accept again.
Getting started
- Sign in, open your account page and create a key.
- Read the API guide. It has a quickstart in curl, Python and JavaScript, and a request and a real answer for every endpoint.
- Call
/sourcesfirst, then try search with a title you know. - Point your tooling at the OpenAPI document if it can read one. It needs no key.
The status page shows whether the API is up, beside the website, search and rankings. If a limit is too tight for something reasonable, or you find a bug, tell us on the Discord or through the contact page.
And if you build something, show us. We'd like to see it.