{
  "openapi": "3.0.1",
  "info": {
    "title": "Booking.com Scraper: Hotels, Prices & Reviews ($1/1k)",
    "description": "Scrape Booking.com hotels by destination, search URL or hotel URL: prices, ratings, address, facilities, photos and anonymous reviews. Accepts the input of voyager/booking-scraper. $1 per 1,000 hotels.",
    "version": "0.1",
    "x-build-id": "3FmrbYLQfx1t4Yg9K"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/praguedatalab~booking-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-praguedatalab-booking-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/praguedatalab~booking-scraper/runs": {
      "post": {
        "operationId": "runs-sync-praguedatalab-booking-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/praguedatalab~booking-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-praguedatalab-booking-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": {
          "search": {
            "title": "Destination",
            "type": "string",
            "description": "City, region or place to search, e.g. <code>Prague</code>. Leave empty when you give Start URLs."
          },
          "startUrls": {
            "title": "Or use Start URLs instead",
            "type": "array",
            "description": "Booking.com search result URLs (<code>/searchresults…</code>) or hotel URLs (<code>/hotel/cz/….html</code>). The filters of a search URL are kept; dates, guests, currency and language from this input are applied on top.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxItems": {
            "title": "Max results per destination or URL",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many hotels for each destination or search URL (each hotel is one charged event). Booking.com serves at most 1,000 results per search, so higher values are capped at 1,000. Hotel URLs always return their hotel. Reviews are charged separately.",
            "default": 20
          },
          "propertyType": {
            "title": "Property type",
            "enum": [
              "none",
              "Hotels",
              "Apartments",
              "Hostels",
              "Guest houses",
              "Homestays",
              "Bed and breakfasts",
              "Holiday homes",
              "Boats",
              "Villas",
              "Motels",
              "Resorts",
              "Holiday parks",
              "Campsites",
              "Luxury tents"
            ],
            "type": "string",
            "description": "Only this kind of property.",
            "default": "none"
          },
          "sortBy": {
            "title": "Order results by",
            "enum": [
              "bayesian_review_score",
              "distance_from_search",
              "class_asc",
              "price",
              "review_score_and_price",
              "class_and_price"
            ],
            "type": "string",
            "description": "Hotel attribute by which the results will be ordered",
            "default": "distance_from_search"
          },
          "minScore": {
            "title": "Minimum rating",
            "type": "string",
            "description": "Minimum guest rating in <code>8.4</code> format. Booking.com filters at 6, 7, 8 or 9: the value is rounded down to the nearest of those and the exact score is checked again on the results."
          },
          "starsCountFilter": {
            "title": "Stars count",
            "enum": [
              "any",
              "1",
              "2",
              "3",
              "4",
              "5",
              "unrated"
            ],
            "type": "string",
            "description": "Only scrape places with the selected stars count. Also includes Booking.com's apartment-like properties 'square' rating.",
            "default": "any"
          },
          "minMaxPrice": {
            "title": "Price range",
            "type": "string",
            "description": "Minimum and maximum price per night in the chosen currency, e.g. <code>100-150</code> or <code>100+</code>."
          },
          "currency": {
            "title": "Preferred currency",
            "enum": [
              "ARS",
              "AUD",
              "AZN",
              "BHD",
              "BRL",
              "BGN",
              "CAD",
              "XOF",
              "CLP",
              "CNY",
              "COP",
              "CZK",
              "DKK",
              "EGP",
              "EUR",
              "FJD",
              "GEL",
              "HKD",
              "HUF",
              "INR",
              "IDR",
              "ILS",
              "JPY",
              "JOD",
              "KZT",
              "KRW",
              "KWD",
              "MYR",
              "MXN",
              "MDL",
              "NAD",
              "TWD",
              "NZD",
              "NOK",
              "OMR",
              "PLN",
              "GBP",
              "QAR",
              "RON",
              "RUB",
              "SAR",
              "SGD",
              "ZAR",
              "SEK",
              "CHF",
              "THB",
              "TRY",
              "AED",
              "USD",
              "UAH"
            ],
            "type": "string",
            "description": "Currency to be set on the website",
            "default": "USD"
          },
          "language": {
            "title": "Language",
            "enum": [
              "en-gb",
              "en-us",
              "de",
              "nl",
              "fr",
              "es",
              "es-ar",
              "ca",
              "it",
              "pt-pt",
              "pt-br",
              "no",
              "fi",
              "sv",
              "da",
              "cs",
              "hu",
              "ro",
              "ja",
              "zh-cn",
              "zh-tw",
              "pl",
              "el",
              "ru",
              "tr",
              "bg",
              "ar",
              "ko",
              "he",
              "lv",
              "uk",
              "id",
              "ms",
              "th",
              "et",
              "hr",
              "lt",
              "sk",
              "sr",
              "sl",
              "vi",
              "tl",
              "is"
            ],
            "type": "string",
            "description": "Language to be set on the website (does not apply to reviews)",
            "default": "en-gb"
          },
          "checkIn": {
            "title": "Check-in date",
            "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": "<code>YYYY-MM-DD</code> or relative like <code>14 days</code> or <code>2 weeks</code> from today. Empty: the next Friday. Booking.com only shows prices and availability when dates are given."
          },
          "checkOut": {
            "title": "Check-out date",
            "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": "<code>YYYY-MM-DD</code> or relative like <code>16 days</code> from today. Empty: two nights after check-in."
          },
          "rooms": {
            "title": "Number of rooms",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Rooms for the price search.",
            "default": 1
          },
          "adults": {
            "title": "Number of adults",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Adults for the price search.",
            "default": 2
          },
          "children": {
            "title": "Number of children",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "Children for the price search (each is assumed 7 years old).",
            "default": 0
          },
          "extractDetails": {
            "title": "Open every hotel page",
            "type": "boolean",
            "description": "Fetch each hotel page for description, facilities, photos, coordinates and the full address. Turn off for a fast list of names, prices and ratings only. Hotel URLs always open their page.",
            "default": true
          },
          "maxReviewsPerHotel": {
            "title": "Reviews per hotel",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Anonymous guest reviews (rating, text, date, stay type, no reviewer identity) to save per hotel; each is one charged <code>review</code> event. 0 = no reviews.",
            "default": 0
          },
          "extractAdditionalHotelData": {
            "title": "Additional hotel data (accepted, not used)",
            "type": "boolean",
            "description": "Leader field, accepted so its inputs validate. Surroundings and room offerings are not offered: rooms and prices come from the hotel page when dates are given.",
            "default": false
          },
          "flexWindow": {
            "title": "Stay date flexibility (accepted, not used)",
            "enum": [
              "0",
              "1",
              "2",
              "3",
              "7"
            ],
            "type": "string",
            "description": "Leader field, accepted so its inputs validate. Only the exact check-in and check-out dates are searched.",
            "default": "0"
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Optional. Booking.com is usually reachable from Apify datacenter IPs once the browser has earned its token. If runs report <i>blocked from this IP</i>, enable Apify Proxy with the <b>RESIDENTIAL</b> group."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}