{
  "openapi": "3.0.1",
  "info": {
    "title": "Douban 豆瓣 Scraper: Movies, Books, Music, Charts & Ratings",
    "description": "Douban (豆瓣电影, 豆瓣读书, 豆瓣音乐) movies, TV, books and music: ratings, cast, Top 250, charts and 29 genre rankings, short comments with stars, full reviews, search, rating and rank change tracking. No login, no browser. From $4.35 per 1,000 rows.",
    "version": "0.1",
    "x-build-id": "xPrMFElKdgJZdLOBq"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/deepurple~douban-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-deepurple-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/deepurple~douban-scraper/runs": {
      "post": {
        "operationId": "runs-sync-deepurple-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/deepurple~douban-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-deepurple-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": {
          "mode": {
            "title": "Mode",
            "enum": [
              "subjects",
              "search",
              "top250",
              "charts"
            ],
            "type": "string",
            "description": "subjects: given films, series, books or albums. search: by keyword. top250: the Douban Top 250 films or books. charts: Douban charts (now showing, weekly, hot, bestsellers, genre rankings).",
            "default": "subjects"
          },
          "subjectUrls": {
            "title": "Subject URLs",
            "type": "array",
            "description": "Mode subjects: movie.douban.com/subject/<id>/, book.douban.com/subject/<id>/, music.douban.com/subject/<id>/, m.douban.com/movie/subject/<id> URLs, or a bare numeric id (taken as a film or series).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Mode search: Chinese or English words, for example \"三体\". Films and series are searched; set Content type to Books for books.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Per keyword (search) or in total (top250, at most 250 exist). 1 to 1000.",
            "default": 50
          },
          "includeComments": {
            "title": "Include short comments",
            "type": "boolean",
            "description": "Also return the most popular short comments with stars of every subject. Search and top250 need Fetch full cards.",
            "default": false
          },
          "maxCommentsPerSubject": {
            "title": "Max comments per subject",
            "minimum": 1,
            "maximum": 400,
            "type": "integer",
            "description": "1 to 400. Douban shows visitors who are not logged in at most the 150 most popular comments of a film, series or book (100 for books) and up to 400 of an album.",
            "default": 50
          },
          "includeReviews": {
            "title": "Include reviews",
            "type": "boolean",
            "description": "Also return the most popular reviews of every subject. Search and top250 need Fetch full cards.",
            "default": false
          },
          "maxReviewsPerSubject": {
            "title": "Max reviews per subject",
            "minimum": 1,
            "maximum": 40,
            "type": "integer",
            "description": "1 to 40. Douban shows visitors who are not logged in at most the 40 most popular reviews.",
            "default": 20
          },
          "fullReviewText": {
            "title": "Full review text",
            "type": "boolean",
            "description": "Open every review for its full text, useful and useless votes and read count (one extra request per review, billed as review-full). Off: abstract only.",
            "default": true
          },
          "fetchDetails": {
            "title": "Fetch full cards",
            "type": "boolean",
            "description": "Search and top250: open the card of every result and return a subject row instead of a short list row; comments and reviews then work as in mode subjects.",
            "default": false
          },
          "contentType": {
            "title": "Content type",
            "enum": [
              "movie",
              "book",
              "music"
            ],
            "type": "string",
            "description": "Modes search and top250: Movies & TV, Books (book Top 250) or Music (albums; keyword search only, music has no Top 250). Ignored in mode subjects.",
            "default": "movie"
          },
          "minRating": {
            "title": "Min rating",
            "minimum": 0,
            "maximum": 10,
            "type": "number",
            "description": "Search and top250: drop results rated below this (0-10). Unrated results are dropped too. 0 = off.",
            "default": 0
          },
          "minRatingCount": {
            "title": "Min number of ratings",
            "minimum": 0,
            "type": "integer",
            "description": "Search and top250: drop results with fewer ratings. 0 = off.",
            "default": 0
          },
          "yearFrom": {
            "title": "Year from",
            "minimum": 0,
            "type": "integer",
            "description": "Search and top250: drop results released before this year. Results without a known year are dropped. 0 = off.",
            "default": 0
          },
          "yearTo": {
            "title": "Year to",
            "minimum": 0,
            "type": "integer",
            "description": "Search and top250: drop results released after this year. Results without a known year are dropped. 0 = off.",
            "default": 0
          },
          "genres": {
            "title": "Genres",
            "type": "array",
            "description": "Search and top250 of films and series: keep results with at least one of these genres. Empty = all. Ignored for books and music.",
            "items": {
              "type": "string",
              "enum": [
                "剧情",
                "喜剧",
                "动作",
                "爱情",
                "科幻",
                "动画",
                "悬疑",
                "惊悚",
                "恐怖",
                "犯罪",
                "同性",
                "音乐",
                "歌舞",
                "传记",
                "历史",
                "战争",
                "西部",
                "奇幻",
                "冒险",
                "灾难",
                "武侠",
                "古装",
                "家庭",
                "儿童",
                "纪录片",
                "短片",
                "运动",
                "情色"
              ],
              "enumTitles": [
                "Drama",
                "Comedy",
                "Action",
                "Romance",
                "Sci-Fi",
                "Animation",
                "Mystery",
                "Thriller",
                "Horror",
                "Crime",
                "LGBTQ",
                "Music",
                "Musical",
                "Biography",
                "History",
                "War",
                "Western",
                "Fantasy",
                "Adventure",
                "Disaster",
                "Martial Arts",
                "Costume",
                "Family",
                "Kids",
                "Documentary",
                "Short",
                "Sport",
                "Erotic"
              ]
            },
            "default": []
          },
          "charts": {
            "title": "Charts",
            "type": "array",
            "description": "Mode charts: Douban charts to scrape, one row per position with rank, rank change (when given), rating and rating count. Empty with no genre charts = now showing + weekly best.",
            "items": {
              "type": "string",
              "enum": [
                "movie_showing",
                "movie_hot_gaia",
                "movie_real_time_hotest",
                "movie_weekly_best",
                "movie_soon",
                "tv_hot",
                "tv_real_time_hotest",
                "tv_chinese_best_weekly",
                "tv_global_best_weekly",
                "tv_variety_show",
                "book_bestseller",
                "music_single"
              ],
              "enumTitles": [
                "Movies: now showing (正在热映)",
                "Movies: hot (热门)",
                "Movies: trending now (实时热门)",
                "Movies: weekly best (一周口碑榜)",
                "Movies: coming soon (即将上映)",
                "TV: hot (热门剧集)",
                "TV: trending now (实时热门剧集)",
                "TV: Chinese weekly (华语口碑剧集榜)",
                "TV: global weekly (全球口碑剧集榜)",
                "TV: variety shows (综艺)",
                "Books: bestsellers (畅销图书)",
                "Music: new singles (新碟/单曲)"
              ]
            },
            "default": []
          },
          "genreCharts": {
            "title": "Genre charts",
            "type": "array",
            "description": "Mode charts: film rankings by genre (29 genres), best rated first within the chosen score band. Films only.",
            "items": {
              "type": "string",
              "enum": [
                "Documentary",
                "Biography",
                "Crime",
                "History",
                "Action",
                "Erotic",
                "Musical",
                "Kids",
                "Mystery",
                "Drama",
                "Disaster",
                "Romance",
                "Music",
                "Adventure",
                "Fantasy",
                "Sci-Fi",
                "Sport",
                "Thriller",
                "Horror",
                "War",
                "Short",
                "Comedy",
                "Animation",
                "LGBT",
                "Western",
                "Family",
                "Wuxia",
                "Costume",
                "Film Noir"
              ],
              "enumTitles": [
                "Documentary (纪录片)",
                "Biography (传记)",
                "Crime (犯罪)",
                "History (历史)",
                "Action (动作)",
                "Erotic (情色)",
                "Musical (歌舞)",
                "Kids (儿童)",
                "Mystery (悬疑)",
                "Drama (剧情)",
                "Disaster (灾难)",
                "Romance (爱情)",
                "Music (音乐)",
                "Adventure (冒险)",
                "Fantasy (奇幻)",
                "Sci-Fi (科幻)",
                "Sport (运动)",
                "Thriller (惊悚)",
                "Horror (恐怖)",
                "War (战争)",
                "Short (短片)",
                "Comedy (喜剧)",
                "Animation (动画)",
                "LGBT (同性)",
                "Western (西部)",
                "Family (家庭)",
                "Wuxia (武侠)",
                "Costume (古装)",
                "Film Noir (黑色电影)"
              ]
            },
            "default": []
          },
          "genreScoreBand": {
            "title": "Genre chart score band",
            "enum": [
              "100:90",
              "90:80",
              "80:70",
              "70:60",
              "60:50",
              "50:40",
              "40:30",
              "30:20",
              "20:10",
              "10:0"
            ],
            "type": "string",
            "description": "Genre charts: which slice of the genre's Douban ranking to list. Douban splits every genre into 10% slices by how a film scores against the rest of the genre: 100:90 = films better than 90-100% of the genre (the best 10%), 90:80 = the next 10%, and so on.",
            "default": "100:90"
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "none",
              "rating",
              "ratingCount",
              "year"
            ],
            "type": "string",
            "description": "Search and top250: sort the results. Rows are collected first (up to Max results), then sorted; unknown values go last. Search sorts within one keyword.",
            "default": "none"
          },
          "extraDetails": {
            "title": "Extra details",
            "type": "boolean",
            "description": "Subject cards only: add the rating distribution by stars, want/done counts, IMDb id and awards (2-3 extra requests per card, slower, same price).",
            "default": false
          },
          "trackChanges": {
            "title": "Track changes between runs",
            "type": "boolean",
            "description": "Compare every subject, Top 250 and chart row with the previous run: new or not, rating and ratings-count change, place shift; items that left a fully read chart come as dropped rows. The previous snapshot is kept in a named key-value store on your account.",
            "default": false
          },
          "onlyChanges": {
            "title": "Only changed rows",
            "type": "boolean",
            "description": "With Track changes: skip and do not pay for rows that did not change since the previous run. Use it to run the Actor on a schedule as a monitor.",
            "default": false
          },
          "trackerName": {
            "title": "Tracker name",
            "type": "string",
            "description": "Name of the key-value store with the snapshot (lower-case letters, digits and dashes, up to 63). Use different names for different monitors.",
            "default": "douban-tracker"
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify datacenter proxy is enough.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}