{
  "openapi": "3.0.1",
  "info": {
    "title": "Trip.com & Ctrip 携程酒店价格 Hotel Price Scraper | 101 Fields",
    "description": "Extract every room type and rate plan from Trip.com and Ctrip 携程 hotels, worldwide and in mainland China: nightly price, rack rate, discount, breakfast, cancellation policy, payment method and rooms left. 101 fields per rate plan. Search by hotel link, name, district or a whole city.",
    "version": "0.0",
    "x-build-id": "eDiAGAmGchpVd59b0"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/zen-studio~ctrip-hotel-prices-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-zen-studio-ctrip-hotel-prices-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-prices-scraper/runs": {
      "post": {
        "operationId": "runs-sync-zen-studio-ctrip-hotel-prices-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-prices-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-zen-studio-ctrip-hotel-prices-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 rate plans 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": 20
          },
          "checkIn": {
            "title": "Check-in 入住日期",
            "type": "string",
            "description": "Check-in date, format <code>YYYY-MM-DD</code>, for example <code>2026-09-10</code>. Defaults to tomorrow if left empty, and must be today or later.<br><br>入住日期，格式 <code>YYYY-MM-DD</code>。留空则默认为明天。必须是今天或之后的日期。"
          },
          "checkOut": {
            "title": "Check-out 离店日期",
            "type": "string",
            "description": "Check-out date, format <code>YYYY-MM-DD</code>. Defaults to the night after check-in. A longer stay returns different rate plans.<br><br>离店日期，格式 <code>YYYY-MM-DD</code>。留空则默认为入住次日。多住几晚会拿到不同的价格方案。"
          },
          "adults": {
            "title": "Adults 成人人数",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Guests per room. Some rates are only sold for a particular occupancy, so changing this changes which plans appear.<br><br>每间房的入住人数。部分价格方案只针对特定人数开放，改人数会看到不同的方案。",
            "default": 2
          },
          "rooms": {
            "title": "Rooms 房间数",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many rooms the stay needs.<br><br>需要预订的房间数量。",
            "default": 1
          },
          "hotelDetails": {
            "title": "Hotel details 附加酒店资料",
            "type": "boolean",
            "description": "Also fetch each hotel's check-in and check-out times, distances to the airport, railway station and metro, and the site's own FAQ (breakfast, dining, transfers). None of this is part of the rate data, so it costs one extra fetch per hotel and the run is a little slower.<br><br>额外获取每家酒店的入住／退房时间、到机场／火车站／地铁站的距离，以及官方常见问题（早餐种类、餐饮、接送）。这些资料不在价格数据里，需要为每家酒店多取一次页面，运行会稍慢一些。",
            "default": false
          },
          "currency": {
            "title": "Currency 货币",
            "enum": [
              "USD",
              "CNY",
              "HKD",
              "EUR",
              "GBP",
              "JPY",
              "KRW",
              "SGD",
              "AUD",
              "TWD"
            ],
            "type": "string",
            "description": "The currency prices are returned in. Changing it only changes how the amounts are quoted, never which rooms and rate plans are sellable.<br><br>价格返回时使用的货币。换货币只改变金额的计价方式，不会改变可售的房型和方案。",
            "default": "USD"
          },
          "language": {
            "title": "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 and policy text.<br><br>Prices are identical across languages, but <b>the set of sellable rooms differs slightly</b> because distribution differs per language market — so keep one language for one dataset. Note the source serves Traditional Chinese only, never Simplified.<br><br>酒店名称、房型名称与政策文字的语言。<br><br>价格不随语言变化，但<b>可售房型会略有差异</b>（各语言市场的分销不同），因此同一份数据请保持同一语言。<br><br><b>注意：数据源只提供繁体中文，不提供简体中文。</b>",
            "default": "en-XX"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}