{
  "openapi": "3.0.1",
  "info": {
    "title": "Douban Movie Scraper: Reviews",
    "description": "Collect public Douban data without a Douban login or API key. Search movie, TV, or book subjects by keyword, or add public URLs for media, people, collections, and group topics, then collect metadata, reviews, or comments. Save available ratings, authors, dates, links, and available replies.",
    "version": "0.0",
    "x-build-id": "Y4HSsU2a1fZXHP8vf"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/maximedupre~douban-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-maximedupre-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/maximedupre~douban-scraper/runs": {
      "post": {
        "operationId": "runs-sync-maximedupre-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/maximedupre~douban-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-maximedupre-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",
        "required": [
          "target"
        ],
        "properties": {
          "target": {
            "title": "Target",
            "enum": [
              "searchSubjects",
              "subjectMetadata",
              "collections",
              "trending",
              "people",
              "longFormReviews",
              "shortComments",
              "groupTopics"
            ],
            "type": "string",
            "description": "Choose one type of Douban data to collect. Use the matching fields below. Fields for other targets are ignored."
          },
          "keyword": {
            "title": "Keyword",
            "minLength": 1,
            "type": "string",
            "description": "For Search media subjects, enter one keyword. Douban can return movie, TV, or book subjects. Other targets ignore this field.",
            "default": "流浪地球"
          },
          "mediaType": {
            "title": "Media type",
            "enum": [
              "all",
              "movie",
              "tv",
              "book"
            ],
            "type": "string",
            "description": "For Search media subjects, choose movies, TV, books, or all supported types. Other targets ignore this field.",
            "default": "all"
          },
          "collectionUrls": {
            "title": "Collection or chart URLs",
            "minItems": 1,
            "type": "array",
            "description": "For Collections and charts, add one or more public Douban collection or chart URLs. Other targets ignore this list.",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "title": "URL",
                  "type": "string",
                  "description": "Add a public Douban collection or chart URL.",
                  "pattern": "^https?://(?:[^/]+\\.)?douban\\.com(?:/|$)"
                }
              },
              "required": [
                "url"
              ]
            }
          },
          "listType": {
            "title": "List type",
            "enum": [
              "movieHot",
              "movieRanking",
              "tvHot",
              "tvRanking"
            ],
            "type": "string",
            "description": "For Hot and ranking lists, choose a current Douban movie or TV list. Other targets ignore this field."
          },
          "personUrls": {
            "title": "Person profile URLs",
            "minItems": 1,
            "type": "array",
            "description": "For People profiles, add one or more public Douban person profile URLs. Other targets ignore this list.",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "title": "URL",
                  "type": "string",
                  "description": "Add a public Douban person profile URL.",
                  "pattern": "^https?://(?:[^/]+\\.)?douban\\.com(?:/|$)"
                }
              },
              "required": [
                "url"
              ]
            }
          },
          "includeFullText": {
            "title": "Include full review text",
            "type": "boolean",
            "description": "For Long-form reviews, include the complete review body when this is on. Other targets ignore this setting.",
            "default": false
          },
          "groupTopicUrls": {
            "title": "Group topic URLs",
            "minItems": 1,
            "type": "array",
            "description": "For Group topics, add one or more public Douban group topic URLs. The Actor also returns available replies. Other targets ignore this list.",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "title": "URL",
                  "type": "string",
                  "description": "Add a public Douban group topic URL.",
                  "pattern": "^https?://(?:[^/]+\\.)?douban\\.com(?:/|$)"
                }
              },
              "required": [
                "url"
              ]
            }
          },
          "subjectUrls": {
            "title": "Subject URLs",
            "minItems": 1,
            "type": "array",
            "description": "For Subject metadata, Long-form reviews, or Short comments, add one or more public Douban subject URLs. The Actor returns the data for the selected target. Other targets ignore this list.",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "title": "URL",
                  "type": "string",
                  "description": "Add a public Douban movie, TV, book, or music subject URL.",
                  "pattern": "^https?://(?:[^/]+\\.)?douban\\.com(?:/|$)"
                }
              },
              "required": [
                "url"
              ]
            }
          },
          "reviewCommentOrder": {
            "title": "Review and comment order",
            "enum": [
              "popular",
              "useful",
              "newest"
            ],
            "type": "string",
            "description": "For Long-form reviews, only Most popular is supported. For Short comments, choose Most popular, Most useful, or Newest. Other targets ignore this field."
          },
          "onlyNewItems": {
            "title": "Return only new items",
            "type": "boolean",
            "description": "On repeat runs, return only records not seen before for the same target and submitted values. Leave this off to return all available records.",
            "default": false
          },
          "maxItems": {
            "title": "Maximum items",
            "minimum": 1,
            "type": "integer",
            "description": "Optional work limit for results. Leave it empty to return all available results until the public source is exhausted. If set, the Actor stops after that many results. This is a work limit, not a page number."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}