# Douban Movie Top 250 Scraper 豆瓣电影: Hot Charts, Filters, Changes (`getascraper/douban-movie-rankings-scraper`) Actor

Scrape Douban Top 250, weekly best, trending, cinema and TV charts plus 28 genre charts (豆瓣电影榜单 数据采集). Filter by rating, year, genre and country, add IMDb IDs and star-rating shares, and track rank changes between runs. Export JSON, CSV or Excel. No login or cookies needed.

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

## Pricing

from $3.00 / 1,000 ranked titles

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 Movie Top 250 Scraper 豆瓣电影: Hot Charts, Filters, 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 films, books and albums. This suite reads all three.</span> <span style="font-size:15px;color:#57534E">Run the film and TV charts here, then pull the book 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:#FFFFFF;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:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Douban&nbsp;Books</a></span><br><span style="color:#57534E;font-size:11px">Top 250, tags, new releases</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:#F0F8F1;">
<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:#1F6B2B;text-decoration:none;font-weight:700;font-size:13px">Douban&nbsp;Movies</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;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">Douban film and TV charts in one run, filtered to the titles you need</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Collect the Top 250, weekly best, trending, cinema and TV charts plus 28 genre charts, with rating, rating count, directors, cast and genres on every row. Turn on change tracking to see what moved between runs.</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">🎞️ Ten charts, 28 genres</span><br>
<span style="font-size:12px;color:#57534E">Top 250, weekly best, trending, now showing, coming soon and TV charts, plus genre charts.</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">🎯 Precise filters</span><br>
<span style="font-size:12px;color:#57534E">Filter by rating, rating count, year, genre, country, language, title text or a director or actor name.</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">🔎 IMDb ID and audience stats</span><br>
<span style="font-size:12px;color:#57534E">Optionally add IMDb IDs, full cast, release dates, star-rating shares and watched or want-to-watch counts.</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">📈 What changed</span><br>
<span style="font-size:12px;color:#57534E">Change tracking flags new entries, titles that moved, rating changes and titles that dropped out.</span>
</td>
</tr>
</table>

Point this Actor at 豆瓣电影, Douban's film and TV community, and get its charts as a clean dataset you can filter, sort and export to JSON, CSV or Excel. No login required.

### 🔍 What does Douban Movie Top 250 Scraper do?

This Actor reads Douban's public movie and TV charts and returns one tidy row per title. Pick one chart or several, add the genre charts you care about, filter the results, and choose how many titles you want from each list.

- **Ten charts:** Douban Top 250, weekly best-rated movies, real-time hottest, now showing, coming soon, trending, recent popular, and three TV series charts (global weekly best, Chinese-language weekly best, recent popular).
- **Genre charts:** Douban's ranked chart for 28 genres, from Drama and Sci-Fi to Animation and Film noir.
- **Every row:** rank, Douban ID, Chinese and original titles, year, rating, number of ratings, directors, lead cast, genres, countries, poster and page link.
- **Optional title details:** full cast, writers, spoken languages, runtime, every release date, IMDb ID, summary, tags, other charts the title appears on, and review counts.
- **Optional audience statistics:** share of 5 to 1 star ratings, how many people watched or want to watch it, and how it ranks inside its genres.
- **Optional change tracking:** new entries, places moved up or down, rating changes and titles that dropped out of a chart.

No Douban account is needed. Review counts are returned as numbers, and this Actor does not collect the text of reviews or comments.

### 💡 Why use it

- **I am a film distributor's acquisitions analyst** comparing Douban scores and rating counts of foreign films by country and year, so I can see which titles Chinese audiences rate highest before I pitch.
- **I am a streaming programmer** shortlisting highly rated titles in one genre, such as Sci-Fi after 2010 rated above 8.5, so I can fill a catalogue gap with proven picks.
- **I am an entertainment journalist** running the charts every week with change tracking on, so my column on what China is watching starts from what entered, climbed or dropped.
- **I am a data analyst** joining Douban scores to my own IMDb dataset through the IMDb ID, so one table shows how a film rates in both markets.

### 🚀 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">Choose your charts</span><br>
<span style="font-size:12px;color:#57534E">Pick one or more charts or genre charts, and set how many titles you want.</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">Add filters and extras</span><br>
<span style="font-size:12px;color:#57534E">Limit by rating, year, country or cast, and switch on IMDb IDs and audience statistics if needed.</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">Run, export or schedule</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 charts to read: Top 250, weekly and real-time charts, cinema lists, trending lists or TV charts. Defaults to the Top 250. Each title is labelled with the list it came from. |
| `genreCharts` | array of options | No | Add Douban's ranked chart for one or more genres, for example Sci-Fi or Animation. Leave empty to skip genre charts. |
| `genreChartBand` | enum | No | Which score slice of each genre chart to read. The first option is the best-rated slice and is what most people want. |
| `minRating` | number | No | Keep only titles rated at least this high on the 10-point scale. Titles without a rating are left out when this is set. Use 0 for no limit. |
| `minRatingCount` | integer | No | Keep only titles with at least this many ratings, which removes titles rated by only a handful of people. Use 0 for no limit. |
| `yearFrom` | integer | No | Keep only titles released in this year or later. Genre charts do not show the year, so this adds one lookup per candidate title there. |
| `yearTo` | integer | No | Keep only titles released in this year or earlier. |
| `genres` | array of options | No | Keep titles that belong to at least one of these genres. |
| `countries` | array of strings | No | Keep titles produced in at least one of these places. English names such as Japan, USA or South Korea work, and so do Chinese names such as 日本. |
| `languages` | array of strings | No | Keep titles with at least one of these spoken languages, for example English, Japanese or Cantonese. Language is only shown on each title's own page, so this adds one lookup per candidate title. |
| `titleContains` | string | No | Keep titles whose Chinese, original or alternative title contains this text. Not case sensitive. |
| `personContains` | string | No | Keep titles where a director, writer or cast member's name contains this text, for example 诺兰. Ranking pages show lead actors only, so turn on title details to match the full cast. |
| `sortBy` | enum | No | Order of results inside each list: Douban order, rating, number of ratings, or release year. Anything other than Douban order reads the whole list first. |
| `maxItems` | integer | No | Most titles to return from each selected list, counted after the filters. Defaults to 25. |
| `dedupeAcrossLists` | boolean | No | Return a title only once, in the first list that has it, when you select several lists. Off by default, which gives one row per list. |
| `enrichDetails` | boolean | No | Add full cast, writers, languages, runtime, every release date, IMDb ID, summary, tags, chart honors, review counts and a larger poster. Runs take longer. Off by default. |
| `includeAudienceStats` | boolean | No | Add the share of 1 to 5 star ratings, how many people watched, are watching or want to watch, and how the title ranks inside its genres. Off by default. |
| `trackChanges` | boolean | No | Compare each list with your previous run and label every title as new, moved up, moved down, rating changed or unchanged, with the previous rank and rating. |
| `onlyChanges` | boolean | No | With change tracking on, skip titles whose rank and rating did not change since the last run. The first run returns everything as new. |
| `stateName` | string | No | A name for this tracker. Runs that share a name continue the same history, and different names keep separate histories. |
| `proxyConfiguration` | object | No | Connection settings for Douban's public pages. The default works for most runs. Switch to residential proxies if Douban refuses many requests. |

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

### 📊 Data table

| Field | Type | Description |
| --- | --- | --- |
| `rankingList` | string | Which list the row came from, for example top250 or genre:剧情. |
| `rankingListName` | string | Readable name of that list. |
| `rank` | integer | Position in the list as Douban shows it. |
| `subjectId` | string | Douban title ID, a stable key for joining and deduplicating. |
| `mediaType` | string | movie or tv. |
| `title` | string | Chinese title. |
| `originalTitle` | string | Title in its original language. |
| `alternativeTitles` | array | Other titles and regional names. |
| `year` | integer | Release year. |
| `rating` | number | Douban rating out of 10. |
| `ratingCount` | integer | Number of Douban ratings. |
| `ratingDistribution` | object | Share of 5, 4, 3, 2 and 1 star ratings in percent (audience statistics). |
| `genrePercentiles` | array | Share of titles in each genre that this title out-scores (audience statistics). |
| `watchedCount` | integer | People who marked the title as watched (audience statistics). |
| `watchingCount` | integer | People currently watching (audience statistics). |
| `wishlistCount` | integer | People who want to watch it (audience statistics). |
| `reviewCount` | integer | Number of long reviews (title details). |
| `shortCommentCount` | integer | Number of short comments (title details). |
| `directors` | array | Directors. |
| `writers` | array | Writers (title details). |
| `cast` | array | Cast. Lead actors only on ranking pages, full cast with title details. |
| `genres` | array | Genres. |
| `countries` | array | Countries or regions of production. |
| `languages` | array | Spoken languages (title details). |
| `runtimeMinutes` | integer | Runtime in minutes (title details). |
| `episodeCount` | integer | Number of episodes for TV (title details). |
| `episodesInfo` | string | Episode progress text for TV series. |
| `firstReleaseDate` | string | Earliest release date listed (title details). |
| `releaseDates` | array | All release dates with region or festival (title details). |
| `imdbId` | string | IMDb ID such as tt0111161 (title details). |
| `quote` | string | Short quote shown on the Top 250. |
| `summary` | string | Plot summary (title details). |
| `tags` | array | Viewer tags (title details). |
| `honors` | array | Charts this title also appears on, with its rank there (title details). |
| `weeksOnChart` | integer | Consecutive weeks on a weekly chart. |
| `posterUrl` | string | Poster image URL. |
| `stillUrls` | array | Still image URLs shown with the list. |
| `url` | string | Douban title page. |
| `changeType` | string | NEW, RANK_UP, RANK_DOWN, RATING_CHANGE, UNCHANGED or DROPPED (change tracking). |
| `previousRank` | integer | Rank at the previous run (change tracking). |
| `rankChange` | integer | Places moved since the previous run, positive means moved up (change tracking). |
| `previousRating` | number | Rating at the previous run (change tracking). |
| `ratingChange` | number | Rating difference since the previous run (change tracking). |
| `ratingCountChange` | integer | Change in number of ratings since the previous run (change tracking). |
| `firstSeenAt` | string | When the tracker first saw this title in this list (change tracking). |
| `previousSeenAt` | string | When the tracker last saw it before this run (change tracking). |
| `sourceUrl` | string | Page or feed the row came from. |
| `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
{
    "rankingList": "top250",
    "rankingListName": "Douban Top 250",
    "rank": 1,
    "subjectId": "1292052",
    "mediaType": "movie",
    "title": "肖申克的救赎",
    "originalTitle": "The Shawshank Redemption",
    "alternativeTitles": [
        "月黑高飞(港)",
        "刺激1995(台)"
    ],
    "year": 1994,
    "rating": 9.7,
    "ratingCount": 3349614,
    "directors": [
        "弗兰克·德拉邦特"
    ],
    "cast": [
        "蒂姆·罗宾斯"
    ],
    "genres": [
        "犯罪",
        "剧情"
    ],
    "countries": [
        "美国"
    ],
    "quote": "希望让人自由。",
    "posterUrl": "https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2934829882.webp",
    "url": "https://movie.douban.com/subject/1292052/",
    "sourceUrl": "https://movie.douban.com/top250",
    "retrievedAt": "2026-10-11T09:26:53.599Z"
}
```

### 💰 Pricing

Pricing is pay per result, with no subscriptions. You pay for each title delivered to your dataset. Full title details and audience statistics are billed separately, and only for the titles where that extra data was actually delivered. A title that dropped out of a chart counts as one ranked title when change tracking is on. 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 Movie Top 250 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 puts every Douban chart you follow in a single table you can sort and filter.</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other film buyers, programmers and analysts 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-movie-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 and download the dataset as JSON, CSV or Excel from the Output tab. The default reads 25 titles, so raise the maximum titles per list to 250 to get the whole Top 250.

##### 豆瓣电影 评分 8.5 以上 日本 怎么筛选？

Set a minimum rating of 8.5 and add Japan to the countries filter. Filters apply to every selected chart, and you can add a release year range or a genre the same way.

##### How do I get a weekly feed of what changed on Douban?

Turn on change tracking, schedule the Actor weekly and switch on the option to return only changes. Each run returns new entries, titles that moved, rating changes and titles that dropped out.

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

No login is needed. It reads public charts and title pages and returns the number of reviews and comments, but not their text.

### 🔗 Other actors

- [Douban Book Scraper 豆瓣读书: Top 250, Tags, New Releases, Changes](https://apify.com/getascraper/douban-book-rankings-scraper) ↗ - Collects Douban's book Top 250, topic tag lists and new releases.
- [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.
- [Bilibili Trending Videos Scraper 哔哩哔哩: Rankings & Hot Searches](https://apify.com/getascraper/bilibili-popular-video-intelligence) ↗ - Collects Bilibili's video rankings and hot searches.
- [Xigua Video Scraper 西瓜视频: Keyword & Hashtag Search, Play Stats](https://apify.com/getascraper/xigua-video-search-scraper) ↗ - Collects Xigua video search results with play stats by keyword or hashtag.

# Changelog

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

# Actor input Schema

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

Which Douban charts to read. Pick one or several: the Top 250, weekly and real-time charts, cinema lists, trending lists, or TV charts. Each title is labelled with the list it came from.

## `genreCharts` (type: `array`):

Add Douban's ranked chart for one or more genres, for example Sci-Fi or Animation. Leave empty to skip genre charts.

## `genreChartBand` (type: `string`):

Which slice of each genre chart to read. The first option is the best-rated slice and is what most people want.

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

Keep only titles rated at least this high on Douban's 10-point scale. Titles without a rating are left out when this is set. Use 0 for no limit.

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

Keep only titles with at least this many Douban ratings, which removes titles rated by only a handful of people. Use 0 for no limit.

## `yearFrom` (type: `integer`):

Keep only titles released in this year or later. Leave empty for no lower limit. Genre charts do not show the year, so this triggers one extra lookup per candidate title there.

## `yearTo` (type: `integer`):

Keep only titles released in this year or earlier. Leave empty for no upper limit.

## `genres` (type: `array`):

Keep titles that belong to at least one of these genres.

## `countries` (type: `array`):

Keep titles produced in at least one of these places. Type English names such as Japan, USA, UK, France, South Korea or China, or Douban's Chinese names such as 日本 or 美国.

## `languages` (type: `array`):

Keep titles with at least one of these spoken languages, for example English, Japanese, Mandarin or Cantonese. Language is only shown on each title's own page, so this adds one lookup per candidate title.

## `titleContains` (type: `string`):

Keep titles whose Chinese title, original title or alternative title contains this text. Not case sensitive.

## `personContains` (type: `string`):

Keep titles where a director, writer or cast member's name contains this text, for example 诺兰 or 周星驰. Cast names on ranking pages cover the lead actors only. Turn on detail enrichment to match the full cast.

## `sortBy` (type: `string`):

The order of the results inside each list. Douban order keeps the official ranking. The other options read the whole list first, then sort.

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

The most titles to return from each selected list, counted after the filters. The Top 250 has 250 titles, genre charts hold several hundred.

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

When you select several lists, a film that appears in more than one list is returned only once, in the first list that has it. Leave off to get one row per list.

## `enrichDetails` (type: `boolean`):

Adds the full cast, writers, languages, runtime, every release date, IMDb ID, summary, tags, awards and chart honors, review counts and a larger poster. Costs a few extra lookups per title, so runs take longer.

## `includeAudienceStats` (type: `boolean`):

Adds the share of 1 to 5 star ratings, how many people watched, are watching or want to watch the title, and how it ranks inside its genres.

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

Remembers each list between runs and labels every title as new, moved up, moved down, rating changed or unchanged, with the previous rank and rating. Reads of the whole list also report titles that dropped out.

## `onlyChanges` (type: `boolean`):

With change tracking on, skip titles whose rank and rating did not change since the last run. The first run returns everything as new.

## `stateName` (type: `string`):

A name for this tracker. Runs that share a name continue the same history, and different names keep separate histories. Leave empty to use one shared default history.

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

Apify Proxy settings used to reach Douban. The default works for most runs. Switch to residential proxies if Douban refuses many requests.

## Actor input object example

```json
{
  "rankingLists": [
    "top250"
  ],
  "genreCharts": [],
  "genreChartBand": "100:90",
  "minRating": 0,
  "minRatingCount": 0,
  "genres": [],
  "countries": [],
  "languages": [],
  "sortBy": "listOrder",
  "maxItems": 25,
  "dedupeAcrossLists": false,
  "enrichDetails": false,
  "includeAudienceStats": false,
  "trackChanges": false,
  "onlyChanges": false,
  "stateName": "",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

No description

## `summary` (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"
    ],
    "genreCharts": [],
    "genreChartBand": "100:90",
    "minRating": 0,
    "minRatingCount": 0,
    "genres": [],
    "countries": [],
    "languages": [],
    "sortBy": "listOrder",
    "maxItems": 25,
    "dedupeAcrossLists": false,
    "enrichDetails": false,
    "includeAudienceStats": false,
    "trackChanges": false,
    "onlyChanges": false,
    "stateName": "",
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/douban-movie-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"],
    "genreCharts": [],
    "genreChartBand": "100:90",
    "minRating": 0,
    "minRatingCount": 0,
    "genres": [],
    "countries": [],
    "languages": [],
    "sortBy": "listOrder",
    "maxItems": 25,
    "dedupeAcrossLists": False,
    "enrichDetails": False,
    "includeAudienceStats": False,
    "trackChanges": False,
    "onlyChanges": False,
    "stateName": "",
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/douban-movie-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"
  ],
  "genreCharts": [],
  "genreChartBand": "100:90",
  "minRating": 0,
  "minRatingCount": 0,
  "genres": [],
  "countries": [],
  "languages": [],
  "sortBy": "listOrder",
  "maxItems": 25,
  "dedupeAcrossLists": false,
  "enrichDetails": false,
  "includeAudienceStats": false,
  "trackChanges": false,
  "onlyChanges": false,
  "stateName": "",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call getascraper/douban-movie-rankings-scraper --silent --output-dataset

```

## MCP server setup

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