{
  "openapi": "3.0.1",
  "info": {
    "title": "Booking.com Hotel Rates Scraper",
    "description": "Scrape Booking.com hotel prices: a nightly price calendar for up to 365 dates, every room type and rate plan for a stay, or a hotel's Booking.com slug by name. Batch many hotels, export JSON/CSV. No proxies or API key needed.",
    "version": "0.0",
    "x-build-id": "IcoXXyGWeY4uDzC0n"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapercompany~booking-hotel-rates-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapercompany-booking-hotel-rates-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/scrapercompany~booking-hotel-rates-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapercompany-booking-hotel-rates-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/scrapercompany~booking-hotel-rates-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapercompany-booking-hotel-rates-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": [
              "rates",
              "rooms",
              "search"
            ],
            "type": "string",
            "description": "<b>Price calendar</b>: nightly price and availability for a range of dates. <b>Rooms</b>: every room type and rate plan for one stay. <b>Find hotel slug</b>: look up the Booking.com slug for a hotel name.",
            "default": "rates"
          },
          "pagenames": {
            "title": "Booking.com hotel slugs",
            "type": "array",
            "description": "The part of the Booking.com URL after the country code, e.g. <code>moxy-boston-downtown</code> for <code>booking.com/hotel/us/moxy-boston-downtown.html</code>. One request per slug. Used by the Price calendar and Rooms modes; use Find hotel slug mode if you only know the name.",
            "default": [
              "moxy-boston-downtown"
            ],
            "items": {
              "type": "string"
            }
          },
          "country": {
            "title": "Hotel country code (from the URL)",
            "enum": [
              "ad",
              "ae",
              "af",
              "ag",
              "ai",
              "al",
              "am",
              "ao",
              "aq",
              "ar",
              "as",
              "at",
              "au",
              "aw",
              "ax",
              "az",
              "ba",
              "bb",
              "bd",
              "be",
              "bf",
              "bg",
              "bh",
              "bi",
              "bj",
              "bl",
              "bm",
              "bn",
              "bo",
              "bq",
              "br",
              "bs",
              "bt",
              "bv",
              "bw",
              "by",
              "bz",
              "ca",
              "cc",
              "cd",
              "cf",
              "cg",
              "ch",
              "ci",
              "ck",
              "cl",
              "cm",
              "cn",
              "co",
              "cr",
              "cu",
              "cv",
              "cw",
              "cx",
              "cy",
              "cz",
              "de",
              "dj",
              "dk",
              "dm",
              "do",
              "dz",
              "ec",
              "ee",
              "eg",
              "eh",
              "er",
              "es",
              "et",
              "fi",
              "fj",
              "fk",
              "fm",
              "fo",
              "fr",
              "ga",
              "gb",
              "gd",
              "ge",
              "gf",
              "gg",
              "gh",
              "gi",
              "gl",
              "gm",
              "gn",
              "gp",
              "gq",
              "gr",
              "gs",
              "gt",
              "gu",
              "gw",
              "gy",
              "hk",
              "hm",
              "hn",
              "hr",
              "ht",
              "hu",
              "id",
              "ie",
              "il",
              "im",
              "in",
              "io",
              "iq",
              "ir",
              "is",
              "it",
              "je",
              "jm",
              "jo",
              "jp",
              "ke",
              "kg",
              "kh",
              "ki",
              "km",
              "kn",
              "kp",
              "kr",
              "kw",
              "ky",
              "kz",
              "la",
              "lb",
              "lc",
              "li",
              "lk",
              "lr",
              "ls",
              "lt",
              "lu",
              "lv",
              "ly",
              "ma",
              "mc",
              "md",
              "me",
              "mf",
              "mg",
              "mh",
              "mk",
              "ml",
              "mm",
              "mn",
              "mo",
              "mp",
              "mq",
              "mr",
              "ms",
              "mt",
              "mu",
              "mv",
              "mw",
              "mx",
              "my",
              "mz",
              "na",
              "nc",
              "ne",
              "nf",
              "ng",
              "ni",
              "nl",
              "no",
              "np",
              "nr",
              "nu",
              "nz",
              "om",
              "pa",
              "pe",
              "pf",
              "pg",
              "ph",
              "pk",
              "pl",
              "pm",
              "pn",
              "pr",
              "ps",
              "pt",
              "pw",
              "py",
              "qa",
              "re",
              "ro",
              "rs",
              "ru",
              "rw",
              "sa",
              "sb",
              "sc",
              "sd",
              "se",
              "sg",
              "sh",
              "si",
              "sj",
              "sk",
              "sl",
              "sm",
              "sn",
              "so",
              "sr",
              "ss",
              "st",
              "sv",
              "sx",
              "sy",
              "sz",
              "tc",
              "td",
              "tf",
              "tg",
              "th",
              "tj",
              "tk",
              "tl",
              "tm",
              "tn",
              "to",
              "tr",
              "tt",
              "tv",
              "tw",
              "tz",
              "ua",
              "ug",
              "uk",
              "um",
              "us",
              "uy",
              "uz",
              "va",
              "vc",
              "ve",
              "vg",
              "vi",
              "vn",
              "vu",
              "wf",
              "ws",
              "xk",
              "ye",
              "yt",
              "za",
              "zm",
              "zw"
            ],
            "type": "string",
            "description": "The two-letter segment before the slug in the Booking.com URL (<code>us</code> in <code>/hotel/us/...</code>). It is part of the hotel address, not your location.",
            "default": "us"
          },
          "currency": {
            "title": "Currency",
            "enum": [
              "AED",
              "ARS",
              "AUD",
              "BRL",
              "CAD",
              "CHF",
              "CLP",
              "CNY",
              "COP",
              "CZK",
              "DKK",
              "EGP",
              "EUR",
              "GBP",
              "HKD",
              "HUF",
              "IDR",
              "ILS",
              "INR",
              "JPY",
              "KRW",
              "MXN",
              "MYR",
              "NOK",
              "NZD",
              "PEN",
              "PHP",
              "PLN",
              "QAR",
              "RON",
              "SAR",
              "SEK",
              "SGD",
              "THB",
              "TRY",
              "TWD",
              "USD",
              "VND",
              "ZAR"
            ],
            "type": "string",
            "description": "Currency for the returned prices.",
            "default": "USD"
          },
          "adults": {
            "title": "Adults",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "Adults per room (1-8).",
            "default": 2
          },
          "rooms": {
            "title": "Rooms",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "Rooms requested (1-8).",
            "default": 1
          },
          "start": {
            "title": "Calendar start date (Price calendar)",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$|^(\\d+)\\s*(day|week|month|year)s?$",
            "type": "string",
            "description": "First date of the price calendar: an exact date or a relative one such as <code>7 days</code> from today. Leave empty for today.",
            "default": "7 days"
          },
          "days": {
            "title": "Number of dates (Price calendar)",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "How many consecutive dates to price, up to 365. Each request returns the whole range for one property.",
            "default": 30
          },
          "check_in": {
            "title": "Check-in date (Rooms)",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$|^(\\d+)\\s*(day|week|month|year)s?$",
            "type": "string",
            "description": "Check-in for the Rooms mode: an exact date or a relative one such as <code>30 days</code> from today.",
            "default": "30 days"
          },
          "nights": {
            "title": "Nights (Rooms)",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Length of stay for the Rooms mode (1-30).",
            "default": 1
          },
          "hotelNames": {
            "title": "Hotel names (Find hotel slug)",
            "type": "array",
            "description": "Hotel names to look up, one request each. Used only by the Find hotel slug mode.",
            "default": [
              "Moxy Boston Downtown"
            ],
            "items": {
              "type": "string"
            }
          },
          "city": {
            "title": "City",
            "type": "string",
            "description": "City of the hotels you are looking up. Strongly recommended for common names."
          },
          "limit": {
            "title": "Candidates per name",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Maximum candidates returned per hotel name, best match first.",
            "default": 5
          },
          "customRequests": {
            "title": "Custom requests (advanced)",
            "type": "array",
            "description": "Optional list of JSON objects, one request each, using the API field names shown above. Each object is merged over the options above, so you only need to give what differs. Add <code>\"mode\": \"rooms\"</code> or <code>\"mode\": \"search\"</code> to an object to use another mode for it. Example: <code>{\"pagename\":\"moxy-boston-downtown\",\"country\":\"us\",\"start\":\"2026-12-20\",\"days\":14}</code>"
          },
          "includeErrors": {
            "title": "Include failed requests in the dataset",
            "type": "boolean",
            "description": "When on, a request that fails (for example an unknown property id) is saved as a dataset item with an <code>error</code> message so you can see what went wrong. Failed requests are never charged.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many API requests run at the same time.",
            "default": 3
          },
          "maxRetries": {
            "title": "Retries per request",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Retries for rate limits (HTTP 429), temporary server errors (5xx) and network errors, with exponential backoff. Validation errors are never retried.",
            "default": 2
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}