# Douban Books & Music Scraper: 豆瓣 ISBN, Ratings & Top 250 (`forgedata/douban-books-scraper`) Actor

Scrape Douban (豆瓣) books and music: title, author, publisher, ISBN, pages, price, rating, vote count, 5-star breakdown, reader counts, summary and author bio. Top 250, up to 1,000 titles per tag, charts and new releases. Movie Top 250 too. No login.

- **URL**: https://apify.com/forgedata/douban-books-scraper.md
- **Developed by:** [Data Forge](https://apify.com/forgedata) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 titles

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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 Books & Music Scraper (豆瓣读书 / 豆瓣音乐)

Get clean, structured data on **Chinese books and music from Douban (豆瓣)**, China's biggest community for book and music ratings: title, author, publisher, ISBN, pages, price, Douban rating, number of ratings, the full 1 to 5 star breakdown, how many people are reading or have read it, the summary and the author bio. **$3 per 1,000 titles.** No login, no cookies, no browser.

### What you can collect

- **Douban Top 250** for books, music or movies, with rank
- **Any tag**, up to 1,000 titles each: 小说 (fiction), 历史 (history), 科幻 (sci-fi), 经济学 (economics), 心理学 (psychology), 摇滚 (rock), 民谣 (folk) and hundreds more, sorted by popularity, newest or highest rated
- **Current charts** and **new book releases**
- **Specific titles**: paste Douban book or album URLs

### What you can use it for

- **Publishing and rights research:** see what Chinese readers rate highly, which translated titles do well, and which publishers dominate a genre
- **Book data for apps and catalogs:** ISBN, cover, summary and rating for Chinese titles that Western book databases miss
- **Recommendation and AI datasets:** ratings, reader counts and long Chinese summaries per title
- **Market research:** track new releases and charts over time

### What you get for each book

| Field | Example |
|---|---|
| title / subtitle | 三体全集 / 地球往事三部曲 |
| author / translator | 刘慈欣 |
| publisher / producer | 重庆出版社 |
| publishDate | 2012-1 |
| isbn | 9787229042066 |
| pages / binding / price | 1285 / 精装 / 168.00元 |
| series / originalTitle | when available |
| rating / votes | 9.5 / 221,005 |
| ratingDistribution | % of 5, 4, 3, 2 and 1 star ratings |
| readingCount / readCount / wantToReadCount | 48,748 / 380,237 / 216,540 |
| summary / authorIntro | full Chinese text |
| rank | position in Top 250 |
| coverImage, url, subjectId, sourceList | |

Music titles add performer, genre, album type, medium, release date, label, barcode and listening counts. Movie Top 250 rows include director, cast, year, country, genre, rating, vote count and the one-line tagline.

### How to use it

1. Pick a **category**: Books, Music or Movies.
2. Pick **what to collect**: Top 250, by tag, current chart, new releases, or your own URLs.
3. For tags, add one or more Douban tags (they are Chinese, e.g. 小说) and choose a sort order.
4. Leave **full details** on for ISBN, rating breakdown, summary and author bio, or turn it off for faster list-only data.
5. Optional filters: minimum rating and minimum number of ratings.
6. Set **Max items**, run, and download as JSON, CSV or Excel, or use the API.

### Pricing

**$3 per 1,000 titles** saved, pay per result. You are never charged for pages that fail, titles filtered out by your settings, or anything beyond your Max items.

### What it does not do

- **Movies are list-only.** Douban protects individual movie pages with a security check, and this Actor does not try to get around it, so movie data comes from Top 250 and the chart only.
- It does not log in, collect user profiles, or read private data.
- For reviews, use our companion Actor, [Douban Reviews Scraper](https://apify.com/forgedata/douban-reviews-scraper).

### Is it legal?

This Actor reads only public pages that anyone can open without an account, and it skips any page that Douban puts behind its security check. Check copyright rules for your use case before republishing summaries or covers. This Actor is not affiliated with Douban.

### Integrations and API

Run it from the Apify API, schedule it to track charts over time, or connect it to Make, Zapier, n8n, Google Sheets and AI agents through the Apify MCP server.

# Actor input Schema

## `category` (type: `string`):

Books and music get full detail pages. Movies are limited to Top 250 and the movie chart (list data only), because Douban protects movie pages with a security check.

## `source` (type: `string`):

Top 250 is Douban's all-time ranked list. Tags lets you pull up to 1,000 titles per tag (e.g. 小说, 历史, 科幻, 摇滚). Chart and new releases are Douban's current lists. Or paste specific Douban subject URLs.

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

Used when 'By tag' is selected. Douban tags are Chinese, for example 小说 (fiction), 历史 (history), 科幻 (sci-fi), 经济学 (economics), 摇滚 (rock), 民谣 (folk). Each tag returns up to 1,000 titles.

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

How Douban orders a tag's list.

## `subjectUrls` (type: `array`):

Used when 'Only the URLs I paste' is selected. Example: https://book.douban.com/subject/1084336/

## `includeDetails` (type: `boolean`):

Adds ISBN, pages, binding, translator, series, the 5-star rating breakdown, reading counts, full summary and author bio. Turn off for faster list-only data. Movies are always list-only.

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

Stop after saving this many titles. You pay only for titles saved.

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

Keep only titles rated at least this (0 to 10). 0 keeps all.

## `minVotes` (type: `integer`):

Keep only titles rated by at least this many people. 0 keeps all.

## Actor input object example

```json
{
  "category": "books",
  "source": "top250",
  "tags": [
    "小说"
  ],
  "tagSort": "T",
  "subjectUrls": [],
  "includeDetails": true,
  "maxItems": 50,
  "minRating": 0,
  "minVotes": 0
}
```

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("forgedata/douban-books-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("forgedata/douban-books-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 '{}' |
apify call forgedata/douban-books-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,forgedata/douban-books-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/JAYgfT8RPfKOGJxPp/builds/GuMrni8dl1fqZFpRO/openapi.json
