{
  "openapi": "3.0.1",
  "info": {
    "title": "Booking.com Hotels Scraper",
    "description": "Scrape Booking.com hotels by destination and dates. One row per hotel. It gives the live price for those dates, the guest review score and the star rating. You also get map coordinates, room type and cancellation policy. About 1,000 hotels per search. $1.00 per 1,000.",
    "version": "0.2",
    "x-build-id": "KgWxS75iQSZqiwvKx"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/dami_studio~booking-hotels-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-dami_studio-booking-hotels-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/dami_studio~booking-hotels-scraper/runs": {
      "post": {
        "operationId": "runs-sync-dami_studio-booking-hotels-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/dami_studio~booking-hotels-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-dami_studio-booking-hotels-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": "What to search. Anything Booking.com's own search box accepts works: a city (\"Paris\"), a district (\"Manhattan, New York\"), a landmark (\"Eiffel Tower\"), an airport (\"JFK Airport\"), a country (\"Japan\") or a specific property name (\"Hilton Paris Opera\"). Up to 20 per run.",
            "items": {
              "type": "string"
            }
          },
          "checkIn": {
            "title": "Check-in date (YYYY-MM-DD)",
            "type": "string",
            "description": "Start of the stay. Booking.com only quotes prices for a concrete stay, so if you leave this empty the actor uses a 1-night stay 30 days from now and writes the dates it used onto every row."
          },
          "checkOut": {
            "title": "Check-out date (YYYY-MM-DD)",
            "type": "string",
            "description": "End of the stay. Must be after check-in. Defaults to one night after check-in."
          },
          "adults": {
            "title": "Adults",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Adults per room. Changes which rooms are matched and therefore the quoted price."
          },
          "rooms": {
            "title": "Rooms",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Number of rooms requested."
          },
          "childrenAges": {
            "title": "Children ages",
            "type": "array",
            "description": "One entry per child, each the child's age in years (0-17). Leave empty for an adults-only search.",
            "items": {
              "type": "string"
            }
          },
          "maxItemsPerDestination": {
            "title": "Max properties per destination",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "How many properties to return for each destination. Booking.com stops serving new properties at roughly 1,000 per search, which is the hard cap here."
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "popularity",
              "price",
              "price_high_to_low",
              "rating_high_to_low",
              "rating_low_to_high",
              "review_score",
              "distance_from_center",
              "homes_first"
            ],
            "type": "string",
            "description": "Sort order, using Booking.com's own sorters. \"popularity\" is the site default (Our top picks)."
          },
          "currency": {
            "title": "Currency",
            "enum": [
              "USD",
              "EUR",
              "GBP",
              "CAD",
              "AUD",
              "JPY",
              "CHF",
              "SEK",
              "NOK",
              "DKK",
              "PLN",
              "CZK",
              "HUF",
              "RON",
              "TRY",
              "AED",
              "SAR",
              "MAD",
              "EGP",
              "ZAR",
              "BRL",
              "MXN",
              "ARS",
              "CLP",
              "COP",
              "INR",
              "CNY",
              "HKD",
              "SGD",
              "KRW",
              "THB",
              "IDR",
              "MYR",
              "PHP",
              "VND",
              "NZD",
              "ILS",
              "RUB",
              "UAH"
            ],
            "type": "string",
            "description": "Three-letter currency code. Booking.com converts the quoted price into it."
          },
          "language": {
            "title": "Language",
            "enum": [
              "en-us",
              "en-gb",
              "fr",
              "de",
              "es",
              "it",
              "nl",
              "pt-br",
              "pt-pt",
              "pl",
              "ru",
              "tr",
              "ar",
              "ja",
              "ko",
              "zh-cn",
              "sv",
              "da",
              "no",
              "fi",
              "cs",
              "el",
              "he",
              "hu",
              "id",
              "ro",
              "th",
              "uk",
              "vi"
            ],
            "type": "string",
            "description": "Language for the human-readable text fields (neighborhood, distance, review word, room type)."
          },
          "minPricePerNight": {
            "title": "Min price per night",
            "minimum": 0,
            "type": "integer",
            "description": "Booking.com's own budget filter, in the selected currency, per night. Leave empty for no minimum."
          },
          "maxPricePerNight": {
            "title": "Max price per night",
            "minimum": 0,
            "type": "integer",
            "description": "Booking.com's own budget filter, in the selected currency, per night. Leave empty for no maximum."
          },
          "minStars": {
            "title": "Minimum star rating",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Only return properties with at least this star rating (1-5). Leave empty for any."
          },
          "minReviewScore": {
            "title": "Minimum guest review score",
            "enum": [
              "60",
              "70",
              "80",
              "90"
            ],
            "type": "string",
            "description": "Booking.com only offers four review-score buckets. Pick one, or leave empty for any score. Note that Booking.com's own filter still lets brand-new properties with zero reviews through - those rows come back with reviewScore 0 and reviewsCount 0."
          },
          "propertyType": {
            "title": "Property type",
            "enum": [
              "hotels",
              "apartments",
              "hostels",
              "guesthouses",
              "bed_and_breakfasts",
              "villas",
              "vacation_homes",
              "homestays",
              "entire_homes_and_apartments"
            ],
            "type": "string",
            "description": "Restrict to one Booking.com property type. Leave empty for all types."
          },
          "freeCancellationOnly": {
            "title": "Free cancellation only",
            "type": "boolean",
            "description": "Only return properties whose matched room offers free cancellation."
          },
          "breakfastIncluded": {
            "title": "Breakfast included only",
            "type": "boolean",
            "description": "Only return properties whose matched room includes breakfast."
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional, and not needed for a normal run. Switch it on only if you hit rate limits on very large runs."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}