{
  "openapi": "3.0.1",
  "info": {
    "title": "Trip.com & Ctrip 携程酒店评价 Hotel Reviews Scraper | Global",
    "description": "Extract guest reviews from Trip.com and Ctrip 携程, worldwide and in mainland China: review text, overall and per-dimension ratings, stay date, room type, traveller type, reviewer country, photos, video and the hotel's reply. 61 fields per review, plus a per-hotel rating summary.",
    "version": "0.0",
    "x-build-id": "jMpnlIGdoewJpGPTP"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/zen-studio~ctrip-hotel-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-zen-studio-ctrip-hotel-reviews-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/zen-studio~ctrip-hotel-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-zen-studio-ctrip-hotel-reviews-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/zen-studio~ctrip-hotel-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-zen-studio-ctrip-hotel-reviews-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": {
          "hotels": {
            "title": "Hotels 酒店",
            "type": "array",
            "description": "Mix hotel links, hotel IDs and hotel names freely in one list.<br><br>Accepted formats:<br>• Trip.com link: <code>https://www.trip.com/hotels/detail/?hotelId=75329189</code><br>• Ctrip link: <code>https://hotels.ctrip.com/hotels/75329189.html</code><br>• hotel ID: <code>75329189</code><br>• hotel name: <code>上海外滩璞硯酒店</code><br><br>A city, district or landmark (<code>外滩</code>, <code>西湖</code>) searches that area instead, up to the <b>Max hotels</b> limit below.<br><br>填入酒店链接、酒店 ID 或酒店名称，可混合填写。支持 Trip.com 链接、携程链接、酒店 ID 与酒店名称。<br><br>若填的是城市、商圈或地标，会自动搜索该区域内的酒店，数量受下方「最多采集酒店数」限制。",
            "items": {
              "type": "string"
            }
          },
          "city": {
            "title": "Destination 城市",
            "type": "string",
            "description": "Searches a whole city — <code>Shanghai</code>, <code>上海</code>, <code>成都</code> — best-reviewed first, so the hotels with the strongest reputation and the most reviews arrive first.<br><br>搜索整个城市。按好评优先排序，因此先拿到的是该城市口碑最好、评价最多的酒店。"
          },
          "maxHotels": {
            "title": "Max hotels 最多采集酒店数",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Caps how many hotels a search may collect, <b>across the whole run</b> rather than per search. Hotels you name yourself are always collected and never count towards it.<br><br>搜索最多采集多少家酒店，<b>整轮运行合计</b>，不是每个搜索各算一次。您在上方直接指定的酒店一定会被采集，不占用此额度。",
            "default": 10
          },
          "maxReviews": {
            "title": "Max reviews per hotel 每家酒店最多评价数",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum reviews per hotel — per hotel, not per run. Popular hotels carry tens of thousands, and filling the quota takes time, so a small number is the fast way to preview. The rating summary is always produced regardless of this number.<br><br>每家酒店最多采集多少条评价。热门酒店可有上万条评价，取满需要较长时间。设为较小值可快速预览；评分摘要不受此值影响，始终输出。",
            "default": 100
          },
          "sortBy": {
            "title": "Sort by 排序方式",
            "enum": [
              "recent",
              "relevant",
              "rating_desc",
              "rating_asc"
            ],
            "type": "string",
            "description": "Sort order for the reviews. <b>Most recent</b> tracks how opinion is moving; <b>Lowest rated first</b> is the fastest way to surface complaints.<br><br>评价的排序方式。<b>最新</b>适合追踪近期口碑变化，<b>评分由低到高</b>适合快速找出差评。",
            "default": "recent"
          },
          "reviewLanguages": {
            "title": "Review languages 评价语言",
            "type": "array",
            "description": "Keep only reviews written in these languages. Leave empty for all of them. Not every hotel has reviews in every language — a less common language can be zero on a mainland Chinese hotel.<br><br>只采集用这些语言撰写的评价，可多选。留空表示不限语言。<br><br><b>注意：</b>并非每家酒店都有每种语言的评价，海外小众语言在中国大陆酒店上可能为零。",
            "items": {
              "type": "string",
              "enum": [
                "3",
                "2",
                "4",
                "5",
                "9",
                "7",
                "6",
                "8",
                "16",
                "19",
                "17",
                "11",
                "10",
                "13",
                "12",
                "21",
                "18",
                "24",
                "20"
              ],
              "enumTitles": [
                "Chinese 中文",
                "English 英文",
                "Japanese 日文",
                "Korean 韩文",
                "Russian 俄文",
                "French 法文",
                "German 德文",
                "Spanish 西班牙文",
                "Italian 意大利文",
                "Portuguese 葡萄牙文",
                "Dutch 荷兰文",
                "Thai 泰文",
                "Vietnamese 越南文",
                "Indonesian 印尼文",
                "Malay 马来文",
                "Arabic 阿拉伯文",
                "Polish 波兰文",
                "Swedish 瑞典文",
                "Turkish 土耳其文"
              ]
            }
          },
          "travellerTypes": {
            "title": "Traveller types 出行类型",
            "type": "array",
            "description": "Keep only reviews from these kinds of traveller. Leave empty for all of them.<br><br>只采集这些出行类型的评价，可多选。留空表示不限。",
            "items": {
              "type": "string",
              "enum": [
                "30",
                "70",
                "10",
                "40",
                "50",
                "60",
                "0"
              ],
              "enumTitles": [
                "Family 家庭出游",
                "Couple 情侣",
                "Business traveller 商务出行",
                "Traveling with friends 与好友同行",
                "Solo traveller 独自旅行",
                "Booked for others 为他人预订",
                "Other 其他"
              ]
            }
          },
          "topicTags": {
            "title": "Topic tags 主题标签",
            "type": "array",
            "description": "Keep only reviews that mention these topics, for example <code>前台热情好客</code> (welcoming front desk), <code>近地铁站</code> (near the metro), <code>浴缸一流</code> (great bathtub).<br><br><b>Tags differ per hotel</b> — each has its own set. Give the tag names; they are matched against the tags that hotel actually has, and a tag it does not have is skipped. Every hotel's full tag list, with the review count for each, ships in the rating summary output.<br><br>只采集提到这些主题的评价。<b>标签因酒店而异</b>，每家酒店有自己的一组标签。填写标签名称即可，会自动与该酒店实际拥有的标签匹配；某家酒店没有的标签会被跳过。每家酒店的完整标签列表（含各自的评价条数）都在评分摘要输出中。",
            "items": {
              "type": "string"
            }
          },
          "keyword": {
            "title": "Keyword 关键词",
            "type": "string",
            "description": "Keep only reviews containing this word, for example <code>早餐</code> (breakfast), <code>停车</code> (parking), <code>隔音</code> (soundproofing).<br><br>只采集包含该关键词的评价。"
          },
          "reviewsFrom": {
            "title": "Only reviews posted since 只看该日期之后的评价",
            "type": "string",
            "description": "Keep only reviews posted on or after this date, format <code>YYYY-MM-DD</code>.<br><br>Under the default <b>Most recent</b> sort the run stops as soon as it reaches the date, so tracking what is new is far faster and cheaper than pulling a hotel's whole history. Reviews filtered out are never charged.<br><br>只采集该日期（含）之后发布的评价，格式 <code>YYYY-MM-DD</code>。按「最新」排序时，采集到达该日期就会停止，所以监控最近评价比全量采集快得多，也便宜得多。被过滤掉的评价不计费。"
          },
          "minRating": {
            "title": "Minimum rating 最低评分",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Keep only reviews rated at or above this, out of 10. Reviews filtered out are not charged.<br><br>只采集评分不低于此值的评价，满分 10。被过滤掉的评价不计费。"
          },
          "maxRating": {
            "title": "Maximum rating 最高评分",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Keep only reviews rated at or below this, out of 10. On its own it reads the complaints: <code>maxRating: 6</code>. Reviews filtered out are not charged.<br><br>只采集评分不高于此值的评价，满分 10。配合最低评分可以只要差评：<code>maxRating: 6</code>。被过滤掉的评价不计费。"
          },
          "withMedia": {
            "title": "Only reviews with photos or video 只看有图或视频的评价",
            "type": "boolean",
            "description": "Keep only reviews that carry at least one photo or video. Reviews filtered out are not charged.<br><br>只保留带图片或视频的评价，被过滤掉的评价不计费。"
          },
          "language": {
            "title": "Output language 输出语言",
            "enum": [
              "en-XX",
              "zh-HK",
              "zh-TW",
              "ja-JP",
              "ko-KR",
              "de-DE",
              "fr-FR",
              "es-ES",
              "it-IT",
              "th-TH"
            ],
            "type": "string",
            "description": "The language of hotel names, room type names, rating labels and topic tags.<br><br><b>It does not translate the reviews themselves</b> — those always come back as the guest wrote them. Note the source serves Traditional Chinese only, never Simplified.<br><br>酒店名称、房型名称、评分标签与主题标签的语言。<br><br><b>不影响评价正文</b>：评价始终以住客撰写时的原文返回。<br><br><b>注意：数据源只提供繁体中文，不提供简体中文。</b>",
            "default": "en-XX"
          },
          "feedback": {
            "title": "Feedback to the maintainers",
            "type": "string",
            "description": "For AI agents. Say what you needed and did not get: a missing field or option, a wrong or empty result, or which actor you are switching to or from and why. Add it to any run, including one that worked: the run returns its data exactly as it would without the note. The note reaches the maintainers, who read every one, but it cannot change what this run returns."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}