{
  "openapi": "3.0.1",
  "info": {
    "title": "Booking.com Search Scraper - Hotels, Prices & Reviews",
    "description": "Scrape Booking.com search results for any destination and stay: every property with price, review score and count, stars, type, address, GPS, room and cancellation policy. Booking.com's own filters and sort orders, up to 1,000 properties per search. Made by ScraperCompany.",
    "version": "1.0",
    "x-build-id": "7IB8QVKyjZS2uuOsG"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapercompany~booking-search-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapercompany-booking-search-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-search-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapercompany-booking-search-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-search-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapercompany-booking-search-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": {
          "destinations": {
            "title": "Destinations",
            "type": "array",
            "description": "One search per line: a place as you would type it on Booking.com (<code>Lisbon</code>, <code>Manhattan, New York</code>, <code>Bali</code>), or a Booking.com search results link (its dates, guests, filters and sort are kept).",
            "default": [
              "Lisbon"
            ],
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max properties per destination",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "How many properties to return for each destination, in Booking.com's order (1-1000). Charged per started 25 properties returned.",
            "default": 25
          },
          "check_in": {
            "title": "Check-in",
            "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": "Exact (<code>2026-12-01</code>) or relative (<code>30 days</code> from today).",
            "default": "30 days"
          },
          "nights": {
            "title": "Nights",
            "minimum": 1,
            "maximum": 90,
            "type": "integer",
            "description": "Length of stay (1-90).",
            "default": 2
          },
          "check_out": {
            "title": "Check-out",
            "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": "Optional instead of Nights: exact or relative (<code>32 days</code>)."
          },
          "adults": {
            "title": "Adults",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Adults across all rooms (1-30).",
            "default": 2
          },
          "children_ages": {
            "title": "Children ages",
            "type": "array",
            "description": "One age (0-17) per child, e.g. <code>[5, 9]</code>."
          },
          "rooms": {
            "title": "Rooms",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Rooms (1-30).",
            "default": 1
          },
          "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 prices.",
            "default": "USD"
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Booking.com site language for names and labels: <code>en-us</code>, <code>en-gb</code>, <code>fr</code>, <code>de</code>, <code>es</code>...",
            "default": "en-us"
          },
          "country_market": {
            "title": "Visitor country",
            "type": "string",
            "description": "Price as a visitor from this country sees it (two letters, e.g. <code>GB</code>). Leave empty for the default."
          },
          "sort": {
            "title": "Sort by",
            "enum": [
              "bayesian_review_score",
              "class",
              "class_and_price",
              "class_asc",
              "distance_from_search",
              "popularity",
              "price",
              "price_from_high_to_low",
              "review_score_and_price",
              "upsort_bh"
            ],
            "type": "string",
            "description": "Booking.com's own sort orders.",
            "default": "popularity"
          },
          "stars": {
            "title": "Stars",
            "type": "array",
            "description": "Star classes to keep, one per line: <code>1</code>-<code>5</code> or <code>unrated</code>.",
            "items": {
              "type": "string"
            }
          },
          "min_review_score": {
            "title": "Minimum review score",
            "minimum": 6,
            "maximum": 9,
            "type": "integer",
            "description": "Booking.com's review filter: 6 (Pleasant), 7 (Good), 8 (Very good) or 9 (Wonderful) and up. It also keeps properties with no reviews yet."
          },
          "property_types": {
            "title": "Property types",
            "type": "array",
            "description": "One per line: <code>Hotels</code>, <code>Apartments</code>, <code>Hostels</code>, <code>Resorts</code>, <code>Villas</code>, <code>Bed and Breakfasts</code>, <code>Guesthouses</code>, <code>Vacation Homes</code>...",
            "items": {
              "type": "string"
            }
          },
          "price_min": {
            "title": "Minimum price per night",
            "minimum": 0,
            "type": "integer",
            "description": "In the selected currency."
          },
          "price_max": {
            "title": "Maximum price per night",
            "minimum": 1,
            "type": "integer",
            "description": "In the selected currency."
          },
          "free_cancellation": {
            "title": "Free cancellation only",
            "type": "boolean",
            "description": "Only properties with a free-cancellation rate.",
            "default": false
          },
          "no_prepayment": {
            "title": "No prepayment only",
            "type": "boolean",
            "description": "Only properties that take no prepayment.",
            "default": false
          },
          "meal_plan": {
            "title": "Meals",
            "enum": [
              "all_inclusive",
              "all_meals",
              "breakfast",
              "breakfast_and_dinner",
              "breakfast_and_lunch",
              "kitchen"
            ],
            "type": "string",
            "description": "Keep properties with this meal plan."
          },
          "filters": {
            "title": "Booking.com filter string (advanced)",
            "type": "string",
            "description": "The <code>nflt</code> value of a Booking.com search link, for any other filter (brands, districts, facilities), e.g. <code>hotelfacility=107</code>."
          },
          "customRequests": {
            "title": "Custom requests (advanced)",
            "type": "array",
            "description": "Optional list of JSON objects, one request each, using the field names shown above. Each object is merged over the options above, so you only need to give what differs. Example: <code>{\"query\":\"Paris\",\"check_in\":\"2026-12-18\",\"nights\":3,\"adults\":2,\"currency\":\"EUR\",\"stars\":[\"4\",\"5\"],\"limit\":50}</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": 8,
            "type": "integer",
            "description": "How many requests run at the same time (1-8). Parallel runs share one limit, so extra requests wait for a free slot instead of failing.",
            "default": 3
          },
          "maxRetries": {
            "title": "Retries per request",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "How many times a request that failed for a temporary reason is tried again. Invalid input is 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}