# Douban Movie Scraper — Ratings, Reviews & Hot Lists (`sian.agency/douban-movie-scraper`) Actor

Scrape Douban (豆瓣电影) into clean datasets — movie & TV ratings, cast and crew, long-form reviews, viewer comments with province geo, IMDb cross-IDs, and the live Recent Hot Movie & Hot TV trending lists. Six operations, one actor. No account or API key needed.

- **URL**: https://apify.com/sian.agency/douban-movie-scraper.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** Social media, Videos, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.50 / 1,000 hot movie results

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Douban Movie Scraper — Ratings, Reviews & Hot Lists 🎬

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Bilibili Scraper](https://img.shields.io/badge/Store-Bilibili%20Scraper-00A1D6)](https://apify.com/sian.agency/bilibili-video-scraper?fpr=sian) [![Xiaohongshu Scraper](https://img.shields.io/badge/Store-Xiaohongshu%20Scraper-FF2442)](https://apify.com/sian.agency/xiaohongshu-rednote-scraper?fpr=sian) [![Taobao Tmall Scraper](https://img.shields.io/badge/Store-Taobao%20%26%20Tmall-FF4F00)](https://apify.com/sian.agency/taobao-tmall-product-scraper?fpr=sian)

#### 🎉 The only Douban scraper that answers "what's hot right now" — pull live Hot Movie & Hot TV lists with zero seed IDs
##### Built for entertainment researchers, China-market analysts, and film data scientists who need ratings, reviews, and sentiment at scale

---

### 📋 Overview

**Douban (豆瓣电影) is China's IMDb** — the single most influential rating and review community for movies and TV in the Chinese-speaking world. This actor turns it into clean, structured datasets: ratings, cast and crew, long-form reviews, viewer comments, and the live trending lists — six operations in one tool, no account and no API key required.

**Why analysts and researchers choose us:**
- ✅ **Trending-first**: Pull the live **Recent Hot Movie** and **Recent Hot TV** lists with ratings and posters — no seed ID needed. The only Douban actor that answers "what's hot on Douban *today*."
- 🎯 **IMDb cross-ID bridge**: Every subject detail returns the **IMDb ID** alongside Douban ratings — join Chinese scores to Western film datasets for global reception studies.
- 💬 **Sentiment + geo at scale**: Full long-form review bodies plus short viewer comments with rating labels and **province-level geo** — ready for sentiment and regional analysis.
- 💰 **Transparent pay-per-row pricing**: Only charged for successful rows. Generous FREE tier to test before you scale.
- 💎 **Six scrapers in one**: Discovery → deep-dive in a single actor — hot lists, subject detail, reviews, comments, and full review bodies.
- ✨ **No setup**: No Douban account, no API key, no cookies. Pick an operation, hit run.

---

### ✨ Features

- 🔥 **Recent Hot Movie** — live trending movie list (20 / page), ratings + posters, no seed ID required
- 📺 **Recent Hot TV** — live trending TV-series list (20 / page), ratings + posters, no seed ID required
- 🎬 **Subject Detail** — title, year, director, writer, cast, genre, region, language, release date, duration, rating, and **IMDb ID** for any movie or TV
- 📝 **Reviews** — long-form reviews with rating label, upvotes/downvotes, reply counts, sortable by *most popular* or *newest*
- 💬 **Comments** — short viewer comments with rating label, vote counts, and **province-level location**, sortable by *most useful* or *newest*
- 🔎 **Review Detail** — the full body of any single review, plus forward and collect counts
- 🌐 **Clean structured output** — curated camelCase fields plus raw upstream data, HTTPS-normalized image URLs
- 📊 **Per-operation table views** — hot list, reviews, and comments each get a tailored dataset view

---

### 🎞️ Quick Start

Pick an operation, supply the ID it needs (or none, for the hot lists), and run. Each row from a hot list carries a `subjectId` you can drop straight into Subject Detail, Reviews, or Comments. Results land in a clean Apify dataset, exportable to JSON, CSV, or Excel.

```bash
curl -X POST https://api.apify.com/v2/acts/sian.agency~douban-movie-scraper/runs?token=YOUR_TOKEN \
-H 'Content-Type: application/json' \
-d '{"operation": "recentHotMovie", "maxPages": 1}'
````

***

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Pick an operation

Choose from Recent Hot Movie, Recent Hot TV, Subject Detail, Reviews, Comments, or Review Detail.

#### Step 2: Provide the input it needs

Hot lists need nothing. Subject Detail / Reviews / Comments need a `subjectId`. Review Detail needs a `reviewId`. Set `maxPages` for paginated operations.

#### Step 3: Run and export

Hit run and collect your structured dataset — export to JSON, CSV, or Excel.

**That's it! In under a minute, you'll have:**

- The live Douban trending lists with ratings and posters
- Deep subject metadata with IMDb cross-IDs
- Reviews and viewer comments ready for sentiment analysis

***

### 📥 Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `operation` | string | **Yes** | One of `recentHotMovie`, `recentHotTv`, `subjectDetail`, `movieReviews`, `subjectComments`, `reviewDetail` |
| `subjectId` | string | For detail/reviews/comments | Numeric Douban movie or TV ID (e.g. `37067461`) |
| `reviewId` | string | For review detail | Numeric Douban review ID (e.g. `17621937`) |
| `sort` | string | No | Reviews: `hotest` or `time`. Comments: `new_score` or `time`. |
| `maxPages` | integer | No | Pages to scrape for paginated operations (1–50, default 5) |

**Example — trending movies (no ID needed):**

```json
{
  "operation": "recentHotMovie",
  "maxPages": 2
}
```

**Example — reviews for a subject, most popular first:**

```json
{
  "operation": "movieReviews",
  "subjectId": "37067461",
  "sort": "hotest",
  "maxPages": 3
}
```

***

### 📤 Output

Results are saved to the Apify dataset with curated camelCase fields plus the raw upstream data. Filter by `_operation` to split modes. Key fields:

| Field | Type | Description |
|-------|------|-------------|
| `subjectId` | string | Douban movie/TV ID |
| `subjectType` | string | `movie` or `tv` |
| `movieTitle` | string | Title |
| `ratingValue` | number | Douban rating (out of 10) |
| `ratingCount` | integer | Number of ratings |
| `imdbId` | string | IMDb cross-ID (subject detail) |
| `director` / `cast` / `genre` | string | Subject metadata |
| `reviewId` | string | Review ID |
| `reviewTitle` / `reviewDescription` / `reviewContent` | string | Review title, snippet, full body |
| `reviewRatingLabel` | string | Reviewer rating label (力荐 / 推荐 / …) |
| `upvoteCount` / `replyCount` | integer | Review engagement |
| `commentContent` | string | Viewer comment text |
| `commenterLocation` | string | Commenter province |
| `voteCount` | integer | Comment useful-votes |
| `subjectUrl` / `reviewUrl` | string | Canonical Douban link |

**Example — a hot-movie row:**

```json
{
  "_operation": "recentHotMovie",
  "status": "success",
  "subjectId": "37067461",
  "subjectType": "movie",
  "movieTitle": "女士优先 Ladies First",
  "ratingValue": 6.4,
  "ratingCount": 2771,
  "posterUrl": "https://img3.doubanio.com/view/photo/...webp",
  "cardSubtitle": "2026 / 美国 / 喜剧 爱情 / 西娅·夏罗克 / 萨莎·拜伦·科恩",
  "isNew": true,
  "subjectUrl": "https://movie.douban.com/subject/37067461/"
}
```

***

### 💼 Use Cases & Examples

#### 1. Trending Movie & TV Tracking

**Media monitors and content teams who need to know what's surfacing on China's biggest film community.**

**Input:** `recentHotMovie` / `recentHotTv`, no ID needed
**Output:** Live trending lists with ratings, posters, and subject IDs
**Use:** Schedule a daily run to track rising titles and build a China trend dashboard.

#### 2. Audience Sentiment Mining

**Researchers studying how a film or series was received.**

**Input:** `movieReviews` and `subjectComments` for a `subjectId`
**Output:** Long-form reviews + short comments with rating labels, upvotes, and province geo
**Use:** Feed an NLP pipeline for sentiment scoring and regional reaction analysis.

#### 3. Cross-Market Film Intelligence

**Analysts bridging Chinese and Western film datasets.**

**Input:** `subjectDetail` for a `subjectId`
**Output:** Douban rating + cast/crew + **IMDb ID**
**Use:** Join Douban scores to IMDb / box-office datasets for global reception and localization studies.

#### 4. Reception & Critical Analysis

**Film scholars and journalists profiling how a title performed critically.**

**Input:** `subjectDetail` + `movieReviews` + `reviewDetail`
**Output:** Ratings, review counts, and full review bodies
**Use:** Map critical vs. audience reception over a release window.

#### 5. China Entertainment Research

**Strategy and localization teams building China-market content plans.**

**Input:** Hot lists + subject detail + comments
**Output:** Structured ratings, trends, and viewer sentiment
**Use:** Inform acquisition, dubbing, and release-timing decisions with real audience data.

***

### 🔗 Integration Examples

#### JavaScript/Node.js

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });

const run = await client.actor('sian.agency/douban-movie-scraper').call({
  operation: 'recentHotMovie',
  maxPages: 1
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);
```

#### Python

```python
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')

run = client.actor('sian.agency/douban-movie-scraper').call(
    run_input={'operation': 'subjectDetail', 'subjectId': '37067461'}
)

for item in client.dataset(run['defaultDatasetId']).iterate_items():
    print(item)
```

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~douban-movie-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"operation": "movieReviews", "subjectId": "37067461", "sort": "hotest"}'
```

#### Automation Workflows (N8N / Zapier / Make)

1. **Trigger**: Schedule or webhook
2. **HTTP Request**: Call the actor API
3. **Process**: Handle JSON results
4. **Action**: Save, notify, or transform

***

### 📊 Performance & Pricing

#### FREE Tier (Try It Now)

- Full feature access across all six operations, same data quality
- No credit card required
- Perfect for testing and small projects

#### PAID Tier (Production Ready)

- Scale to large trending lists, review archives, and comment datasets
- Pay-per-result: only charged for successful rows
- Premium single-row operations (subject detail, review detail) priced separately

💰 **Transparent per-row pricing** — bulk operations (hot lists, reviews, comments) are charged at the lowest per-row rate, so high-volume runs stay affordable.

🔗 [View current pricing](https://apify.com/sian.agency/douban-movie-scraper?fpr=sian)

***

### ❓ Frequently Asked Questions

**Q: Do I need a Douban account or API key?**
A: No. Pick an operation and run — no account, no key, no cookies.

**Q: How do I find a subject ID or review ID?**
A: Every Hot Movie / Hot TV row includes a `subjectId`. Review rows include a `reviewId`. You can also read them from any Douban URL — `movie.douban.com/subject/37067461/` or `movie.douban.com/review/17621937/`.

**Q: Can I get both ratings and reviews in one run?**
A: Each run does one operation. Chain them: run a hot list, then feed the `subjectId` into Subject Detail, Reviews, and Comments.

**Q: Does it return the IMDb ID?**
A: Yes — the Subject Detail operation includes `imdbId` when Douban has it, so you can join to Western datasets.

**Q: What output formats are available?**
A: JSON, CSV, and Excel — export directly from the Apify dataset.

**Q: Is this legal?**
A: We only extract publicly available data. See the legal section below.

***

### 🐛 Troubleshooting

**No rows returned**

- For Reviews/Comments, confirm the `subjectId` is valid and the title actually has reviews/comments.
- A subject with few reviews may exhaust before reaching your `maxPages` — that's expected.

**"Subject not found" / "Review not found" error row**

- The ID may be invalid or the content removed. Double-check the ID from a current Douban URL.

**"Data source temporarily unavailable"**

- A transient upstream signal. The actor retries automatically; re-run if it persists.

**Want a specific page only?**

- Set `maxPages` to control how many pages of a hot list, review, or comment set you pull.

***

### ⚠️ Trademark Disclaimer

This is an **independent scraping tool**. It is not affiliated with, endorsed by, or sponsored by Douban (豆瓣), Beijing Douban Technology Co., Ltd., or any of their subsidiaries. The **Douban®** and **豆瓣电影®** names appear under nominative fair use solely to describe the data source this tool works with.

***

### ⚖️ Is it legal to scrape data?

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the **GDPR** in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

***

### 🤝 Support

[![Telegram Support](https://img.shields.io/badge/Telegram-Support%20Group-0088cc?logo=telegram)](https://t.me/+vyh1sRE08sAxMGRi)

**Join our active support community**

- For issues or questions, open an issue in the actor's repository
- Check [SIÁN Agency Store](https://apify.com/sian.agency?fpr=sian) for more automation tools
- 📧 <apify@sian-agency.online>

***

**Built by [SIÁN Agency](https://www.sian-agency.online)** | **[More Tools](https://apify.com/sian.agency?fpr=sian)**

# Actor input Schema

## `operation` (type: `string`):

Pick what you want to scrape. Each run does one operation.

## `subjectId` (type: `string`):

The numeric Douban movie or TV ID. Find it in the `subjectId` field of any Hot Movie / Hot TV row, or in a Douban URL like movie.douban.com/subject/**37067461**/. Required for Subject Detail, Reviews, and Comments.

## `reviewId` (type: `string`):

The numeric Douban review ID. Find it in the `reviewId` field of any Reviews row, or in a review URL like movie.douban.com/review/**17621937**/. Required for Review Detail.

## `sort` (type: `string`):

How to order results. Reviews accept `hotest` (most popular) or `time` (newest). Comments accept `new_score` (most useful) or `time` (newest). Ignored by other operations.

## `maxPages` (type: `integer`):

Max pages to scrape. Applies to Recent Hot Movie, Recent Hot TV, Reviews, and Comments. Default 5. Range 1-50.

## Actor input object example

```json
{
  "operation": "recentHotMovie",
  "subjectId": "37067461",
  "reviewId": "17621937",
  "sort": "hotest",
  "maxPages": 5
}
```

# Actor output Schema

## `output` (type: `string`):

Movies, TV, reviews, or comments — one flat row per upstream item with curated camelCase aliases (subjectId, movieTitle, ratingValue, imdbId, reviewContent, commenterLocation, ...) plus the raw upstream fields spread alongside.

## `report` (type: `string`):

HTML report with run status, success/error row counts, success rate, pages fetched, duration, and the inputs used — written even on fatal crash.

# 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("sian.agency/douban-movie-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("sian.agency/douban-movie-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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 sian.agency/douban-movie-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=sian.agency/douban-movie-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Douban Movie Scraper — Ratings, Reviews & Hot Lists",
        "description": "Scrape Douban (豆瓣电影) into clean datasets — movie & TV ratings, cast and crew, long-form reviews, viewer comments with province geo, IMDb cross-IDs, and the live Recent Hot Movie & Hot TV trending lists. Six operations, one actor. No account or API key needed.",
        "version": "1.0",
        "x-build-id": "ElymYGLXgb6OaaGdK"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/sian.agency~douban-movie-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-sian.agency-douban-movie-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/sian.agency~douban-movie-scraper/runs": {
            "post": {
                "operationId": "runs-sync-sian.agency-douban-movie-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/sian.agency~douban-movie-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-sian.agency-douban-movie-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "operation"
                ],
                "properties": {
                    "operation": {
                        "title": "Operation",
                        "enum": [
                            "recentHotMovie",
                            "recentHotTv",
                            "subjectDetail",
                            "movieReviews",
                            "subjectComments",
                            "reviewDetail"
                        ],
                        "type": "string",
                        "description": "Pick what you want to scrape. Each run does one operation.",
                        "default": "recentHotMovie"
                    },
                    "subjectId": {
                        "title": "Subject ID (for Subject Detail / Reviews / Comments)",
                        "type": "string",
                        "description": "The numeric Douban movie or TV ID. Find it in the `subjectId` field of any Hot Movie / Hot TV row, or in a Douban URL like movie.douban.com/subject/**37067461**/. Required for Subject Detail, Reviews, and Comments."
                    },
                    "reviewId": {
                        "title": "Review ID (for Review Detail)",
                        "type": "string",
                        "description": "The numeric Douban review ID. Find it in the `reviewId` field of any Reviews row, or in a review URL like movie.douban.com/review/**17621937**/. Required for Review Detail."
                    },
                    "sort": {
                        "title": "Sort order (for Reviews / Comments)",
                        "enum": [
                            "hotest",
                            "new_score",
                            "time"
                        ],
                        "type": "string",
                        "description": "How to order results. Reviews accept `hotest` (most popular) or `time` (newest). Comments accept `new_score` (most useful) or `time` (newest). Ignored by other operations.",
                        "default": "hotest"
                    },
                    "maxPages": {
                        "title": "Max pages (for paginated operations)",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Max pages to scrape. Applies to Recent Hot Movie, Recent Hot TV, Reviews, and Comments. Default 5. Range 1-50.",
                        "default": 5
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
