{
  "openapi": "3.0.1",
  "info": {
    "title": "Douban Scraper 豆瓣 — Movies, Books, Music, Comments & Reviews",
    "description": "Scrape Douban (豆瓣) without login: search movies, TV, books and music; full details and 1–5 star rating breakdown; hot short comments (incl. movies) and full-text reviews; Top 250 and 18 more charts. From $1 per 1,000 rows.",
    "version": "0.1",
    "x-build-id": "Lh274SulXXAe5WrC9"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/china-data~douban-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-china-data-douban-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/china-data~douban-scraper/runs": {
      "post": {
        "operationId": "runs-sync-china-data-douban-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/china-data~douban-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-china-data-douban-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",
        "properties": {
          "searchQueries": {
            "title": "Search keywords (搜索关键词)",
            "type": "array",
            "description": "Search Douban for these keywords, in Chinese or English. Each keyword returns up to 'Max results per keyword' subjects of the type chosen below.",
            "items": {
              "type": "string"
            }
          },
          "searchType": {
            "title": "Search in",
            "enum": [
              "movie",
              "book",
              "music"
            ],
            "type": "string",
            "description": "Douban searches movies and TV series together.",
            "default": "movie"
          },
          "maxResultsPerQuery": {
            "title": "Max results per keyword",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Douban stops at a few hundred results for most keywords.",
            "default": 50
          },
          "subjectUrls": {
            "title": "Subject URLs or IDs (条目链接)",
            "type": "array",
            "description": "Full details of specific movies, TV series, books or albums. Accepts movie.douban.com/subject/…, book.douban.com/subject/…, music.douban.com/subject/… and m.douban.com links. A bare numeric ID is treated as a movie or TV series.",
            "items": {
              "type": "string"
            }
          },
          "charts": {
            "title": "Charts (榜单)",
            "type": "array",
            "description": "Get the current entries of these Douban charts and lists.",
            "items": {
              "type": "string",
              "enum": [
                "movie_top250",
                "movie_hot_gaia",
                "movie_showing",
                "movie_soon",
                "movie_weekly_best",
                "movie_real_time_hotest",
                "tv_hot",
                "tv_domestic",
                "tv_american",
                "tv_korean",
                "tv_japanese",
                "tv_animation",
                "show_hot",
                "tv_real_time_hotest",
                "book_top250",
                "book_fiction",
                "book_nonfiction",
                "book_bestseller",
                "music_hot",
                "music_single"
              ],
              "enumTitles": [
                "Movie Top 250 电影Top250",
                "Popular movies 豆瓣热门电影",
                "In cinemas now 影院热映",
                "Coming to cinemas 即将上映",
                "Best movies this week 一周口碑电影榜",
                "Trending movies now 实时热门电影",
                "Popular TV series 热门剧集",
                "Popular Chinese TV 热门国产剧",
                "Popular US TV 热门美剧",
                "Popular Korean TV 热门韩剧",
                "Popular Japanese TV 热门日剧",
                "Popular animation 热门动画",
                "Popular variety shows 热门综艺",
                "Trending TV now 实时热门电视",
                "Book Top 250 读书Top250",
                "Most followed fiction 最受关注虚构类图书",
                "Most followed non-fiction 最受关注非虚构类图书",
                "Bestselling books 畅销图书",
                "Popular new albums 热门新唱片",
                "Popular singles 热门单曲榜"
              ]
            }
          },
          "maxPerChart": {
            "title": "Max entries per chart",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "The Top 250 charts have 250 entries, most other lists 10–300.",
            "default": 50
          },
          "includeDetails": {
            "title": "Full details and rating breakdown",
            "type": "boolean",
            "description": "Add directors, cast, authors, genres, countries, release dates, synopsis, comment and review counts, the 1–5 star rating breakdown and watched / want-to-watch counts to subjects from search and charts. Uses two extra requests per subject. Subjects from 'Subject URLs' always have full details.",
            "default": false
          },
          "includeComments": {
            "title": "Short comments (短评)",
            "type": "boolean",
            "description": "Save the most popular short comments of every subject as separate rows (type = comment): text, star rating, votes, date, IP location and user. Works for movies, TV, books and music. Douban shows visitors who are not logged in the top 150 or so per movie or TV series, 100 per book and up to about 400 per album.",
            "default": false
          },
          "maxCommentsPerSubject": {
            "title": "Max comments per subject",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Comments are charged per row, so this also caps the cost per subject.",
            "default": 20
          },
          "includeReviews": {
            "title": "Reviews (影评 / 书评 / 乐评)",
            "type": "boolean",
            "description": "Save the most helpful long reviews of every subject as separate rows (type = review): title, text, star rating, helpful votes, read count, date and author.",
            "default": false
          },
          "maxReviewsPerSubject": {
            "title": "Max reviews per subject",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Douban shows visitors who are not logged in the 40 or so most helpful reviews per subject.",
            "default": 10
          },
          "fullReviewText": {
            "title": "Full review text",
            "type": "boolean",
            "description": "Get the complete text of each review (one extra request per review). When off, reviews have Douban's short abstract.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Douban limits how many pages one IP address can open, so Apify Proxy is on by default and the actor switches IP when Douban slows it down.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}