{
  "openapi": "3.0.1",
  "info": {
    "title": "Douban Scraper - Reviews, Ratings, Movies & Books",
    "description": "Scrape Douban (豆瓣) without login: long-form reviews, short comments with ratings, and full subject data for movies, TV shows and books. Search, ready-made lists (Top 250, now showing) and subject URLs. Built for Chinese-language corpora, sentiment analysis and market research. Failed items are free.",
    "version": "0.1",
    "x-build-id": "0UmpIad4h8lQvH6Fq"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapewise~douban-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapewise-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/scrapewise~douban-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapewise-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/scrapewise~douban-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapewise-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": {
          "urls": {
            "title": "Douban subject URLs or ids",
            "type": "array",
            "description": "Douban pages to read, one per line: movie, TV show or book pages (https://movie.douban.com/subject/1292052/, https://book.douban.com/subject/1084336/), group pages (https://www.douban.com/group/732764/) or a single discussion (https://www.douban.com/group/topic/123456789/). Bare numeric ids work for subjects. Each subject returns its full record (rating, votes, star breakdown, cast or authors, genres, summary), charged as 'Full subject record', plus the reviews and comments set below; each group returns its topics.",
            "items": {
              "type": "string"
            }
          },
          "searchQueries": {
            "title": "Search terms",
            "type": "array",
            "description": "Keywords to search on Douban, one per line, in Chinese or English, for example 霸王别姬 or Harry Potter. Each term returns up to 'Max items' results from the catalogue chosen in 'Search in', charged as list items unless 'Open every search or list result' is on.",
            "items": {
              "type": "string"
            }
          },
          "searchType": {
            "title": "Search in",
            "enum": [
              "movie",
              "book",
              "group"
            ],
            "type": "string",
            "description": "Which catalogue the search terms run against: Movies and TV shows (default), Books, or Groups. 'Groups' returns group profiles whose links you can then paste into the groups field to get their topics.",
            "default": "movie"
          },
          "collections": {
            "title": "Ready-made lists",
            "type": "array",
            "description": "Douban ready-made lists, one name per line. Sizes checked in September 2026: movie_top250 (250), book_top250 (250), tv_hot (204), book_fiction (100), book_nonfiction (100), show_hot (60), tv_domestic (49), movie_showing (20, now in cinemas), movie_weekly_best (10). Asking for more than a list holds returns the whole list. Each entry is charged as a list item.",
            "items": {
              "type": "string"
            }
          },
          "groups": {
            "title": "Douban groups or discussions",
            "type": "array",
            "description": "Douban groups or single discussions, one per line. Group links or ids (https://www.douban.com/group/732764/ or 732764) return that group's topics with the full post text; a discussion link (https://www.douban.com/group/topic/123456789/) returns just that thread. Groups hold most of the long Chinese-language discussion on Douban.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum results for each search term and each ready-made list, from 1 to 10,000 (default 30). Subject links are always returned in full and are not limited by it. You pay per row, so this caps the cost of each search or list.",
            "default": 30
          },
          "onlyNew": {
            "title": "Only new items since the last run",
            "type": "boolean",
            "description": "For scheduled runs. Remembers which group topics, search results and list entries were already delivered (in a named key-value store in your account, 'douban-scraper-only-new') and skips them on the next runs: skipped rows are not charged and do not count against the limits. The first run marks everything it read as seen; later runs stop at the first page with nothing new. The group row comes only on the first run or together with a new topic. Subject and discussion links are always returned.",
            "default": false
          },
          "maxReviewsPerSubject": {
            "title": "Long-form reviews per subject",
            "minimum": 0,
            "maximum": 500,
            "type": "integer",
            "description": "Long-form reviews to fetch for each subject, on top of the subject itself, from 0 to 500. Default 0 (off) because every review is charged as a 'Long-form review', the same price as a subject: one movie with 10 reviews costs 11 items, not 1. Set 5 or 10 when the reviews are what you need.",
            "default": 0
          },
          "fullReviewText": {
            "title": "Full review text",
            "type": "boolean",
            "description": "On (default): opens each review to get the complete text instead of the short abstract shown in the list. One extra request per review, same price. Turn off for faster runs when the abstract is enough.",
            "default": true
          },
          "maxCommentsPerSubject": {
            "title": "Short comments per subject",
            "minimum": 0,
            "maximum": 500,
            "type": "integer",
            "description": "Short comments with star ratings to collect for each subject link, from 0 (default, off) to 500, for example 20. They come 20 per request and each is charged as a list item.",
            "default": 0
          },
          "maxTopicsPerGroup": {
            "title": "Topics per group",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "How many topics to collect from each group, newest first, from 1 to 2,000 (default 20). Each topic is charged as a long-form item.",
            "default": 20
          },
          "fullTopicText": {
            "title": "Full topic text",
            "type": "boolean",
            "description": "On (default): opens each group topic to get the complete post instead of the abstract. One extra request per topic, same price.",
            "default": true
          },
          "maxRepliesPerTopic": {
            "title": "Replies per topic",
            "minimum": 0,
            "maximum": 2000,
            "type": "integer",
            "description": "How many replies to collect from each group topic, from 0 (default, off) to 2,000, for example 50. They come 50 per request and each is charged as a list item.",
            "default": 0
          },
          "includeSubjectDetails": {
            "title": "Open every search or list result",
            "type": "boolean",
            "description": "Off (default): search and list rows come with what the listing shows (title, year, rating, cover, card subtitle), charged as list items. On: each result is opened for the full subject record, one extra request per subject, charged as 'Full subject record'.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Douban limits requests per IP, so a proxy is required. Apify datacenter proxy is the default; blocked requests are retried on a new IP and fall back to residential IPs on their own, with no extra charge. Change it only to use your own proxies.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}