# Douban Book Scraper 豆瓣读书: Top 250, Tags, New Releases, Changes (`getascraper/douban-book-rankings-scraper`) Actor

Scrape public Douban Book (豆瓣读书) Top 250, topic tag lists and new releases with rating, rating count, publisher, price, ISBN and star split. Filter by rating, year, price or author, and track rank movers and new entries on a schedule. 豆瓣读书数据采集 to JSON, CSV or Excel. No login.

- **URL**: https://apify.com/getascraper/douban-book-rankings-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** Social media, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 book rows

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## 📚 Douban Book Scraper 豆瓣读书: Top 250, Tags, New Releases, Changes

<table width="100%" style="width:100%;min-width:100%;border-collapse:collapse;table-layout:fixed;margin-bottom:0">
<tbody style="display:table;width:100%;min-width:100%;border-collapse:collapse;table-layout:fixed">
<tr style="width:100%">
<td colspan="3" style="padding:14px 18px;background:#F0F8F1;border-top:3px solid #2F963D;border-left:1px solid #D5EAD8;border-right:1px solid #D5EAD8;border-radius:8px 8px 0 0">
<span style="font-size:16px;font-weight:700;color:#1C1917">Douban rates books, films and albums. This suite reads all three.</span> <span style="font-size:15px;color:#57534E">Run the book charts here, then pull the film and album rankings with the same filters and change tracking.</span>
</td>
</tr>
<tr style="width:100%">
<td colspan="3" style="padding:10px 14px;background:#1F6B2B;border-left:1px solid #D5EAD8;border-right:1px solid #D5EAD8">
<span style="color:#FFFFFF;font-size:14px;font-weight:700;letter-spacing:0.5px">DOUBAN RANKINGS SUITE</span>
<span style="color:#FFFFFF;font-size:13px;opacity:0.85">&nbsp;&nbsp;&bull;&nbsp;&nbsp;Books, films and albums from Douban's public charts</span>
</td>
</tr>
<tr style="width:100%">
<td width="33%" style="width:33.333%;padding:10px 12px;border-left:1px solid #D5EAD8;border-bottom:1px solid #D5EAD8;vertical-align:top;background:#F0F8F1;border-radius:0 0 0 8px;">
<span style="overflow-wrap:break-word;word-break:break-word"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-5B6iDxeDl5xf2s17t-rfmsGBx8He-images_%2858%29.jpeg" width="20" height="20" style="vertical-align:middle;border-radius:4px">&nbsp;<a href="https://apify.com/getascraper/douban-book-rankings-scraper" style="color:#1F6B2B;text-decoration:none;font-weight:700;font-size:13px">Douban&nbsp;Books</a></span><br><span style="color:#1F6B2B;font-size:11px;font-weight:700">&#10148; You are here</span>
</td>
<td width="33%" style="width:33.333%;padding:10px 12px;border-left:1px solid #D5EAD8;border-bottom:1px solid #D5EAD8;vertical-align:top;background:#FFFFFF;">
<span style="overflow-wrap:break-word;word-break:break-word"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-Brro3SbyNbOfOJJGq-95AsrlT8ct-images_%2858%29.jpeg" width="20" height="20" style="vertical-align:middle;border-radius:4px">&nbsp;<a href="https://apify.com/getascraper/douban-movie-rankings-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Douban&nbsp;Movies</a></span><br><span style="color:#57534E;font-size:11px">10 charts and 28 genre charts</span>
</td>
<td width="33%" style="width:33.333%;padding:10px 12px;border-left:1px solid #D5EAD8;border-bottom:1px solid #D5EAD8;border-right:1px solid #D5EAD8;vertical-align:top;background:#FFFFFF;border-radius:0 0 8px 0;">
<span style="overflow-wrap:break-word;word-break:break-word"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/jNDbFabbVxMhnQNb4-actor-mc0pxfceymXv6oYBc-CPg5KYovoc-images_%2858%29.jpeg" width="20" height="20" style="vertical-align:middle;border-radius:4px">&nbsp;<a href="https://apify.com/getascraper/douban-music-rankings-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Douban&nbsp;Music</a></span><br><span style="color:#57534E;font-size:11px">Top 250, weekly charts, tags</span>
</td>
</tr>
</tbody>
</table>
<table width="100%" style="margin-top:0;margin-bottom:0">
<tr>
<td style="padding:24px 28px;background:#F0F8F1;border:1px solid #D5EAD8;border-top:4px solid #2F963D;border-radius:12px">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">Know which books China rates highest, and which ones are climbing</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Collect Douban Books rankings with rating, rating count, publisher and price on every row: the Top 250, topic tag lists and new releases. Turn on change tracking to see rank movers and new entries on each scheduled run.</span>
</td>
</tr>
</table>
<table width="100%" style="margin-top:0">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #D5EAD8;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#1F6B2B">📚 Three kinds of lists</span><br>
<span style="font-size:12px;color:#57534E">Top 250, any topic tag list and new releases by category, or paste the books you want.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #D5EAD8;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#1F6B2B">🎯 Filters that cut cleanup</span><br>
<span style="font-size:12px;color:#57534E">Keep only books that meet your rating, rating count, year, price, publisher, author or keyword limits.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #D5EAD8;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#1F6B2B">🔎 Optional deep detail</span><br>
<span style="font-size:12px;color:#57534E">Add ISBN, page count, star split, reader counts and the full description for each book.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #D5EAD8;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#1F6B2B">📈 Rank movers</span><br>
<span style="font-size:12px;color:#57534E">Change tracking shows new entries, places moved and rating shifts since your last run.</span>
</td>
</tr>
</table>

Point this Actor at 豆瓣读书, Douban's book community, and get its Top 250, topic tag lists and new releases as a clean dataset you can filter, sort and export to JSON, CSV or Excel. No login required.

### 🔍 What does Douban Book Scraper do?

This Actor reads Douban Books' public ranking pages and returns one tidy row per book. Choose the all-time Top 250, any topic tag list such as 小说, 科幻, 历史 or 经济学 (ordered by Douban default, rating or newest), the new releases page by category, or paste specific book links or IDs.

- **Every row:** rank, Douban book ID, title, subtitle, authors, publisher, publication date and year, listed price as text and as a number with currency, rating, rating count, summary, cover and link.
- **Optional full details:** ISBN, page count, binding, translators, original title, series, the 1 to 5 star rating split in percent, how many readers are reading, have read and want to read the book, and the full description.
- **Optional extras:** author biography and chapter list.
- **Optional change tracking:** previous rank, places moved, new on the list, rating change and rating count change since your last run. Books that dropped off a list are named in the run summary.

No Douban account is needed. This Actor does not collect user reviews or comments.

### 💡 Why use it

- **I am a book publisher's acquisitions editor** shortlisting Chinese titles by Douban score and rating count, so I only look at books that thousands of readers have actually rated.
- **I am an online bookseller** watching the new releases page by category and capping the listed price in yuan, so I can decide what to stock without opening every book page.
- **I am a market researcher on Chinese reading trends** running a topic tag like 科幻 every week, so I can see which books enter the list and which ones climb.
- **I am a book blogger** pulling every novel above 8.5 with at least 10,000 ratings from a tag, so my best-of list is built from data instead of guesses.

### 🚀 How it works

<table width="100%">
<tr>
<td style="padding:16px 14px;width:33%;background:#F0F8F1;border:1px solid #D5EAD8;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#1F6B2B;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Pick your lists</span><br>
<span style="font-size:12px;color:#57534E">Choose Top 250, topic tags or new releases, or paste book links.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#F0F8F1;border:1px solid #D5EAD8;border-left:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#1F6B2B;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Set filters and extras</span><br>
<span style="font-size:12px;color:#57534E">Limit by rating, year, price, publisher or author, and add full details if you need them.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#F0F8F1;border:1px solid #D5EAD8;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#1F6B2B;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Export or monitor</span><br>
<span style="font-size:12px;color:#57534E">Download JSON, CSV or Excel, or schedule runs with change tracking on.</span>
</td>
</tr>
</table>

### 📥 Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `rankingLists` | array of options | No | Which lists to read: Top 250, topic tag lists, new releases. Defaults to Top 250. Leave empty to collect only the books in `bookUrls`. |
| `tags` | array of strings | No | Douban topic tags to read when topic tag lists are selected, one per row, for example 小说 or 科幻. Chinese names work best. |
| `latestCategories` | array of options | No | Categories of the new releases page to read, such as literature, fiction, history, science or business. Defaults to all books. |
| `bookUrls` | array of strings | No | Specific books to collect with full detail, as Douban book links or plain ID numbers such as 1007305. |
| `tagSort` | enum | No | Order inside each topic tag list: Douban default, highest rated first, or newest first. |
| `minRating` | number | No | Keep only books rated at or above this score on the 0 to 10 scale. Use 0 to switch off. |
| `minRatingCount` | integer | No | Keep only books rated by at least this many people. Use 0 to switch off. |
| `publishedFromYear` | integer | No | Keep only books published in this year or later. Use 0 to switch off. |
| `publishedToYear` | integer | No | Keep only books published in this year or earlier. Use 0 to switch off. |
| `maxListPrice` | number | No | Keep only books listed at or below this price in Chinese yuan. Books priced in another currency or with no price are left out. Use 0 to switch off. |
| `publisherContains` | string | No | Keep only books whose publisher name contains this text, for example 人民文学出版社. |
| `authorContains` | string | No | Keep only books whose author or translator text contains this name, for example 村上春树. |
| `keyword` | string | No | Keep only books whose title, subtitle or summary line contains this text. |
| `fetchDetails` | boolean | No | Add ISBN, page count, binding, translators, series, original title, the star rating split, reader counts and the full description. Slower, because each book page is opened. Off by default. |
| `includeAuthorBio` | boolean | No | Add the author biography shown on each book page. Off by default. |
| `includeTableOfContents` | boolean | No | Add the chapter list shown on each book page, when Douban has one. Off by default. |
| `trackChanges` | boolean | No | Compare each list with your previous run and add rank change, new entry, rating change and rating count change. The first run only saves the starting point. |
| `onlyChangedRows` | boolean | No | With change tracking on, return only books that are new on the list, moved position or changed rating. |
| `monitorScope` | string | No | A name for this watch. Runs with the same name are compared with each other, so use a different name for each schedule. |
| `maxItems` | integer | No | Maximum matching books to collect from each list. Defaults to 25. The Top 250 never returns more than 250. |
| `dedupeAcrossLists` | boolean | No | Return a book only once even if it appears in several lists or in `bookUrls`. On by default. |
| `proxyConfiguration` | object | No | Connection settings for Douban's public pages. Leave the default unless your account needs a custom route. |

The default input returns the first 25 books of the Top 250 in a few seconds.

### 📊 Data table

| Field | Type | Description |
| --- | --- | --- |
| `list` | string | Source list: top250, tag, latest or direct (a book you asked for by URL). |
| `tag` | string | Topic tag the book was listed under. |
| `category` | string | New release category the book was listed under. |
| `rank` | integer | Position in the source list. |
| `subjectId` | string | Douban book identifier. |
| `title` | string | Book title. |
| `subtitle` | string | Subtitle. |
| `originalTitle` | string | Original-language title (book page only). |
| `alternateTitle` | string | Alternate title shown on the Top 250 list. |
| `authors` | string | Author and contributor text. |
| `authorList` | array | Authors as separate entries (book page only). |
| `authorUrls` | array | Douban author page links (book page only). |
| `translators` | array | Translators (book page only). |
| `publisher` | string | Publisher. |
| `imprint` | string | Imprint or producer (book page only). |
| `published` | string | Publication date as shown, for example 2012-8. |
| `publishedYear` | integer | Publication year. |
| `listPrice` | string | Listed cover price as shown. |
| `priceAmount` | number | Listed price as a number. |
| `priceCurrency` | string | Currency code when the listing names one, for example CNY. |
| `onlinePaperPrice` | string | Current online paper-edition price shown on new releases. |
| `publicationInfo` | string | Raw publication line from the list page. |
| `binding` | string | Binding such as paperback or hardcover. |
| `pages` | integer | Page count (book page only). |
| `isbn` | string | ISBN (book page only). |
| `series` | string | Book series name (book page only). |
| `seriesUrl` | string | Series page link (book page only). |
| `rating` | number | Douban average rating out of 10. |
| `ratingCount` | integer | Number of ratings. |
| `ratingDistribution` | object | Share of ratings per star level in percent: star5 to star1 (book page only). |
| `readingCount` | integer | Readers currently reading (book page only). |
| `readCount` | integer | Readers who have read it (book page only). |
| `wantToReadCount` | integer | Readers who want to read it (book page only). |
| `summary` | string | Short blurb from the list page. |
| `quote` | string | One-line quote on the Top 250 list. |
| `description` | string | Full book description (book page only). |
| `authorIntro` | string | Author biography (when requested). |
| `tableOfContents` | array | Chapter list (when requested). |
| `coverUrl` | string | Cover image link. |
| `coverUrlLarge` | string | Larger cover image link (book page only). |
| `url` | string | Douban book page. |
| `isNewEntry` | boolean | True when the book was not on the list in the previous run (change tracking). |
| `changeType` | string | new, moved_up, moved_down or unchanged since the previous run (change tracking). |
| `previousRank` | integer | Rank in the previous run (change tracking). |
| `rankChange` | integer | Places moved since the previous run, positive means moved up (change tracking). |
| `previousRating` | number | Rating in the previous run (change tracking). |
| `ratingChange` | number | Rating change since the previous run (change tracking). |
| `ratingCountChange` | integer | Change in number of ratings since the previous run (change tracking). |
| `previousSeenAt` | string | When the previous run was taken (change tracking). |
| `sourceUrl` | string | List page that supplied the row. |
| `retrievedAt` | string | Time the row was collected. |

Fields that Douban does not show are left out of the row, never filled with placeholders. You can download the dataset as JSON, CSV or Excel from the Output tab of any run.

### 📤 Sample output

```json
{
    "list": "top250",
    "rank": 1,
    "subjectId": "1007305",
    "title": "红楼梦",
    "authors": "(清)曹雪芹",
    "publisher": "人民文学出版社",
    "published": "1982-3",
    "listPrice": "59.70元",
    "publicationInfo": "(清)曹雪芹 / 人民文学出版社 / 1982-3 / 59.70元",
    "rating": 9.7,
    "ratingCount": 469920,
    "summary": "都云作者痴，谁解其中味？",
    "quote": "都云作者痴，谁解其中味？",
    "coverUrl": "https://img3.doubanio.com/view/subject/s/public/s1070959.jpg",
    "url": "https://book.douban.com/subject/1007305/",
    "publishedYear": 1982,
    "priceAmount": 59.7,
    "priceCurrency": "CNY",
    "sourceUrl": "https://book.douban.com/top250?start=0",
    "retrievedAt": "2026-10-11T09:26:38.040Z"
}
```

### 💰 Pricing

Pricing is pay per result, with no subscriptions. You pay for each book delivered to your dataset. Extras such as full book details, the author biography or the chapter list are billed only for the books that actually include them. Empty runs cost nothing. If you set a maximum charge per run in Apify, it is respected: the run stops cleanly when the limit is reached and keeps everything already delivered. Your Apify plan sets the rate, and higher plans pay less.

### ⭐ Enjoying Douban Book Scraper?

<table width="100%" style="display:table;width:100%">
<tr>
<td style="padding:20px 24px 14px;background:#F0F8F1;border:1px solid #D5EAD8;border-left:5px solid #2F963D;border-radius:10px 10px 0 0">
<span style="font-size:20px;letter-spacing:4px;color:#1C1917">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">One run turns Douban's book charts into a list you can sort, filter and shortlist.</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other publishers, booksellers and researchers find this actor. Your feedback also tells us what to build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#1F6B2B;border:1px solid #D5EAD8;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/douban-book-rankings-scraper/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

### ❓ FAQ

##### 豆瓣读书 Top 250 怎么导出？

Run the Actor with its default settings, then download the dataset as JSON, CSV or Excel from the Output tab. The default reads 25 books, so raise the maximum books per list to 250 to get the whole Top 250.

##### How do I get the books under one Douban tag such as 科幻?

Select topic tag lists, add the tag on its own row (Chinese names work best), and choose Douban default order, highest rated first or newest first. Add a minimum rating count to skip books with only a few votes.

##### How does change tracking work?

Turn on change tracking and keep the same monitor name on every scheduled run. The first run saves the starting point. Later runs add rank change, new entry and rating change to each book, and the run summary names the books that dropped off the list.

##### Does it need a Douban login, and does it collect reviews?

No login is needed. It reads public ranking and book pages and returns ratings and counts, but not user reviews or comments.

### 🔗 Other actors

- [Douban Movie Top 250 Scraper 豆瓣电影: Hot Charts, Filters, Changes](https://apify.com/getascraper/douban-movie-rankings-scraper) ↗ - Collects Douban's film and TV charts and genre charts with filters and change tracking.
- [Douban Music Scraper 豆瓣音乐: Top 250, Weekly Charts and Tag Lists](https://apify.com/getascraper/douban-music-rankings-scraper) ↗ - Collects Douban's album Top 250, weekly charts and tag lists.
- [Ximalaya Scraper 喜马拉雅: Podcasts & Comments](https://apify.com/getascraper/ximalaya-scraper) ↗ - Collects podcasts and comments from Ximalaya, China's audio platform.
- [Bilibili Trending Videos Scraper 哔哩哔哩: Rankings & Hot Searches](https://apify.com/getascraper/bilibili-popular-video-intelligence) ↗ - Collects Bilibili's video rankings and hot searches.

# Changelog

This Actor's version history is a separate document: https://apify.com/getascraper/douban-book-rankings-scraper/changelog.md

# Actor input Schema

## `rankingLists` (type: `array`):

Which public Douban book lists to read. Top 250 is the all-time rated list. Topic tag lists follow the tags you enter below. New releases are Douban's latest published books. Leave empty to collect only the books in Book URLs.

## `tags` (type: `array`):

Douban topic tags to read when Topic tag lists is selected, one per row. Chinese names work best, for example 小说, 科幻, 历史, 经济学, 心理学, 漫画.

## `latestCategories` (type: `array`):

Which categories of the new releases page to read when New releases is selected. Pick All books for the combined list.

## `bookUrls` (type: `array`):

Specific Douban books to collect with full detail, one per row. Paste a book page link such as https://book.douban.com/subject/1007305/ or just the number 1007305.

## `tagSort` (type: `string`):

How books are ordered inside each topic tag list. Highest rated is useful for finding quality titles, newest is useful for tracking releases.

## `minRating` (type: `number`):

Only keep books with a Douban rating at or above this score on the 0 to 10 scale. Use 0 to switch off.

## `minRatingCount` (type: `integer`):

Only keep books rated by at least this many people. Helps avoid high scores based on a handful of votes. Use 0 to switch off.

## `publishedFromYear` (type: `integer`):

Only keep books published in this year or later, for example 2015. Use 0 to switch off.

## `publishedToYear` (type: `integer`):

Only keep books published in this year or earlier, for example 2000. Use 0 to switch off.

## `maxListPrice` (type: `number`):

Only keep books whose listed price is at or below this amount in Chinese yuan. Books priced in another currency or with no price are left out. Use 0 to switch off.

## `publisherContains` (type: `string`):

Only keep books whose publisher name contains this text, for example 人民文学出版社 or 译林. Leave empty to switch off.

## `authorContains` (type: `string`):

Only keep books whose author or translator text contains this name, for example 村上春树 or 余华. Leave empty to switch off.

## `keyword` (type: `string`):

Only keep books whose title, subtitle or summary line contains this text. Leave empty to switch off.

## `fetchDetails` (type: `boolean`):

Open each book page to add ISBN, page count, binding, translators, series, original title, the full 1 to 5 star rating split, how many readers are reading, have read or want to read it, and the full description. Slower, one extra page per book.

## `includeAuthorBio` (type: `boolean`):

Adds the author biography text shown on each book page. Turns on the book page visit even if full details are off.

## `includeTableOfContents` (type: `boolean`):

Adds the chapter list shown on each book page, when Douban has one. Turns on the book page visit even if full details are off.

## `trackChanges` (type: `boolean`):

Remembers each list between runs and adds rank change, new entry, rating change and rating count change to every book. The first run only saves the baseline. Use with a schedule for weekly or daily monitoring.

## `onlyChangedRows` (type: `boolean`):

When change tracking is on, return only books that are new on the list, moved position or changed rating since the last run. Books that dropped off the list are named in the run summary.

## `monitorScope` (type: `string`):

A label for this watch. Runs with the same name are compared with each other, so use a different name for each separate monitor you schedule.

## `maxItems` (type: `integer`):

Maximum number of matching books to collect from each list. Top 250 never returns more than 250.

## `dedupeAcrossLists` (type: `boolean`):

When the same book appears in more than one list or in Book URLs, return it only once, from the first list that shows it.

## `proxyConfiguration` (type: `object`):

Optional Apify Proxy configuration for public Douban pages. Leave the default unless your account needs a custom route.

## Actor input object example

```json
{
  "rankingLists": [
    "top250"
  ],
  "tags": [
    "小说"
  ],
  "latestCategories": [
    "all"
  ],
  "bookUrls": [],
  "tagSort": "T",
  "minRating": 0,
  "minRatingCount": 0,
  "publishedFromYear": 0,
  "publishedToYear": 0,
  "maxListPrice": 0,
  "publisherContains": "",
  "authorContains": "",
  "keyword": "",
  "fetchDetails": false,
  "includeAuthorBio": false,
  "includeTableOfContents": false,
  "trackChanges": false,
  "onlyChangedRows": false,
  "monitorScope": "default",
  "maxItems": 25,
  "dedupeAcrossLists": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "rankingLists": [
        "top250"
    ],
    "tags": [
        "小说"
    ],
    "latestCategories": [
        "all"
    ],
    "bookUrls": [],
    "tagSort": "T",
    "minRating": 0,
    "minRatingCount": 0,
    "publishedFromYear": 0,
    "publishedToYear": 0,
    "maxListPrice": 0,
    "publisherContains": "",
    "authorContains": "",
    "keyword": "",
    "fetchDetails": false,
    "includeAuthorBio": false,
    "includeTableOfContents": false,
    "trackChanges": false,
    "onlyChangedRows": false,
    "monitorScope": "default",
    "maxItems": 25,
    "dedupeAcrossLists": true,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/douban-book-rankings-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "rankingLists": ["top250"],
    "tags": ["小说"],
    "latestCategories": ["all"],
    "bookUrls": [],
    "tagSort": "T",
    "minRating": 0,
    "minRatingCount": 0,
    "publishedFromYear": 0,
    "publishedToYear": 0,
    "maxListPrice": 0,
    "publisherContains": "",
    "authorContains": "",
    "keyword": "",
    "fetchDetails": False,
    "includeAuthorBio": False,
    "includeTableOfContents": False,
    "trackChanges": False,
    "onlyChangedRows": False,
    "monitorScope": "default",
    "maxItems": 25,
    "dedupeAcrossLists": True,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/douban-book-rankings-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "rankingLists": [
    "top250"
  ],
  "tags": [
    "小说"
  ],
  "latestCategories": [
    "all"
  ],
  "bookUrls": [],
  "tagSort": "T",
  "minRating": 0,
  "minRatingCount": 0,
  "publishedFromYear": 0,
  "publishedToYear": 0,
  "maxListPrice": 0,
  "publisherContains": "",
  "authorContains": "",
  "keyword": "",
  "fetchDetails": false,
  "includeAuthorBio": false,
  "includeTableOfContents": false,
  "trackChanges": false,
  "onlyChangedRows": false,
  "monitorScope": "default",
  "maxItems": 25,
  "dedupeAcrossLists": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call getascraper/douban-book-rankings-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,getascraper/douban-book-rankings-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/5B6iDxeDl5xf2s17t/builds/jNtgteUqICxH5LYVI/openapi.json
