{
  "openapi": "3.0.1",
  "info": {
    "title": "Booking.com Scraper: Hotels, Prices, Reviews, No Login",
    "description": "Get Booking.com hotels with stay prices, room rates, guest reviews and price calendars for your dates from a city or hotel link. Track price changes. No login or API key.",
    "version": "0.1",
    "x-build-id": "SfarYpCS8x8u1usmO"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/cliqtomedia~booking-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-cliqtomedia-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/cliqtomedia~booking-scraper/runs": {
      "post": {
        "operationId": "runs-sync-cliqtomedia-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/cliqtomedia~booking-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-cliqtomedia-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": {
          "mode": {
            "title": "What to collect",
            "enum": [
              "search",
              "hotel",
              "reviews",
              "calendar",
              "monitor"
            ],
            "type": "string",
            "description": "Find hotels, check specific properties, collect anonymous reviews, get a daily calendar, or return price changes since the previous run.",
            "default": "search"
          },
          "destination": {
            "title": "City or destination",
            "type": "string",
            "description": "Enter a city or region, such as Pattaya or London. If you provide only hotel or search links, leave this empty. With no destination or links, Pattaya is used."
          },
          "destinations": {
            "title": "More destinations",
            "type": "array",
            "description": "Search several cities or regions in one run. Duplicate names are removed.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Booking.com links",
            "type": "array",
            "description": "Hotel links or search-results links copied from Booking.com. Search filters in a link are kept unless you set the matching filter below.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "hotelIds": {
            "title": "Hotel IDs",
            "type": "array",
            "description": "Booking.com property numbers to check. Hotel links are usually easier to use.",
            "items": {
              "type": "integer"
            }
          },
          "maxItems": {
            "title": "Maximum hotels per search",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum hotels for each destination, date range, currency and language. There is no fixed upper limit; the run timeout and your charge limit still apply.",
            "default": 10
          },
          "checkIn": {
            "title": "Check-in date",
            "type": "string",
            "description": "Use YYYY-MM-DD. Set both dates, or leave both empty to check a one-night stay seven days from the current UTC date."
          },
          "checkOut": {
            "title": "Check-out date",
            "type": "string",
            "description": "Use YYYY-MM-DD. The check-out date must be after check-in."
          },
          "dateRanges": {
            "title": "Several date ranges",
            "type": "array",
            "description": "Optional list of {\"checkIn\":\"2026-12-01\",\"checkOut\":\"2026-12-03\"} objects. These ranges replace the two date fields above.",
            "items": {
              "type": "object",
              "properties": {
                "checkIn": {
                  "type": "string",
                  "title": "Check-in date",
                  "description": "Stay start date in YYYY-MM-DD format."
                },
                "checkOut": {
                  "type": "string",
                  "title": "Check-out date",
                  "description": "Stay end date in YYYY-MM-DD format."
                }
              },
              "required": [
                "checkIn",
                "checkOut"
              ]
            }
          },
          "adults": {
            "title": "Adults",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Total adults staying at each property.",
            "default": 2
          },
          "rooms": {
            "title": "Rooms",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Number of rooms needed for the stay.",
            "default": 1
          },
          "childrenAges": {
            "title": "Children’s ages",
            "type": "array",
            "description": "Age of each child, from 0 to 17. Use an empty list for no children.",
            "items": {
              "type": "integer"
            }
          },
          "currency": {
            "title": "Currency",
            "type": "string",
            "description": "Three-letter currency code for prices, such as USD, EUR, GBP or THB.",
            "default": "USD"
          },
          "currencies": {
            "title": "Several currencies",
            "type": "array",
            "description": "Optional currency codes. If set, each search is repeated in these currencies instead of the currency above.",
            "items": {
              "type": "string"
            }
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Booking.com language code, such as en-gb, en-us, de, fr or ru. Guest review text stays in its original language.",
            "default": "en-gb"
          },
          "languages": {
            "title": "Several languages",
            "type": "array",
            "description": "Optional language codes. If set, searches and hotel descriptions are fetched in each selected language.",
            "items": {
              "type": "string"
            }
          },
          "minPrice": {
            "title": "Minimum stay price",
            "minimum": 0,
            "type": "number",
            "description": "Minimum displayed total for the whole stay in the selected currency. Booking may show extra charges separately."
          },
          "maxPrice": {
            "title": "Maximum stay price",
            "minimum": 0,
            "type": "number",
            "description": "Maximum displayed total for the whole stay, before any separately excluded charges."
          },
          "minScore": {
            "title": "Minimum guest rating",
            "minimum": 0,
            "maximum": 10,
            "type": "number",
            "description": "Keep properties with a guest rating at or above this value, from 0 to 10."
          },
          "stars": {
            "title": "Star ratings",
            "type": "array",
            "description": "Keep these property star ratings. For example [4,5] selects four- and five-star properties. An empty list includes unrated properties too.",
            "items": {
              "type": "integer"
            }
          },
          "propertyType": {
            "title": "Property type",
            "enum": [
              "any",
              "hotel",
              "apartment",
              "hostel",
              "resort",
              "villa",
              "guestHouse",
              "holidayHome"
            ],
            "type": "string",
            "description": "Limit the source search to one accommodation type.",
            "default": "any"
          },
          "sortBy": {
            "title": "Sort hotels by",
            "enum": [
              "distance_from_search",
              "price",
              "bayesian_review_score",
              "review_score_and_price",
              "class_asc",
              "class_desc",
              "class_and_price",
              "popularity"
            ],
            "type": "string",
            "description": "Booking.com source ordering. The same ordering is used while paging through a search.",
            "default": "distance_from_search"
          },
          "freeCancellationOnly": {
            "title": "Free cancellation only",
            "type": "boolean",
            "description": "Keep offers that Booking marks as free cancellation. Read the deadline in each room offer.",
            "default": false
          },
          "breakfastIncluded": {
            "title": "Breakfast included only",
            "type": "boolean",
            "description": "Keep the displayed offers that include breakfast.",
            "default": false
          },
          "includeDetails": {
            "title": "Hotel descriptions and facilities",
            "type": "boolean",
            "description": "Include full descriptions, photos, facilities, property policies and check-in times.",
            "default": true
          },
          "includeRooms": {
            "title": "Room types and offers",
            "type": "boolean",
            "description": "Include room descriptions, facilities and available offers for the selected dates.",
            "default": true
          },
          "includeReviewScores": {
            "title": "Category scores and review summary",
            "type": "boolean",
            "description": "Include cleanliness, staff and other category scores, score distribution and Booking’s summary when available.",
            "default": true
          },
          "includeSurroundings": {
            "title": "Nearby places",
            "type": "boolean",
            "description": "Add nearby landmarks, airports, beaches, restaurants and public transport with distances.",
            "default": false
          },
          "includeReviews": {
            "title": "Also collect anonymous reviews",
            "type": "boolean",
            "description": "Add anonymous reviews. Saved reviews and review source pages have separate prices. After a destination search, each review page is charged. For a direct hotel link, its first page is included in the hotel check.",
            "default": false
          },
          "maxReviewsPerHotel": {
            "title": "Maximum reviews per hotel",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum saved reviews per hotel and language. Date, language and only-new filters can require more source pages. Filtered pages and the final empty page can be charged. Use the review cutoff date to limit history. Left empty, reviews mode collects every available review and other modes up to 100 per hotel."
          },
          "reviewSort": {
            "title": "Sort reviews by",
            "enum": [
              "MOST_RELEVANT",
              "NEWEST_FIRST",
              "OLDEST_FIRST",
              "SCORE_DESC",
              "SCORE_ASC"
            ],
            "type": "string",
            "description": "Booking.com review ordering. Newest first is useful with a review date cutoff.",
            "default": "NEWEST_FIRST"
          },
          "reviewAfter": {
            "title": "Reviews from date",
            "type": "string",
            "description": "Only return reviews published on or after this date, inclusive. Use YYYY-MM-DD."
          },
          "reviewLanguages": {
            "title": "Review text languages",
            "type": "array",
            "description": "Optional original review language codes, such as [\"en\",\"de\"]. Other reviews are skipped; more pages may need to be checked.",
            "items": {
              "type": "string"
            }
          },
          "reviewScore": {
            "title": "Review score group",
            "enum": [
              "ALL",
              "REVIEW_ADJ_SUPERB",
              "REVIEW_ADJ_GOOD",
              "REVIEW_ADJ_AVERAGE_PASSABLE",
              "REVIEW_ADJ_POOR",
              "REVIEW_ADJ_VERY_POOR"
            ],
            "type": "string",
            "description": "Use Booking’s review-score ranges, or include all scores.",
            "default": "ALL"
          },
          "calendarStartDate": {
            "title": "Calendar start",
            "type": "string",
            "description": "First date to check in calendar mode. Defaults to the first check-in date."
          },
          "calendarDays": {
            "title": "Calendar days",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Number of check-in dates per hotel, from 1 to 365. After a destination search, each batch of up to 31 dates has a work price. For a direct hotel link, the first batch is included in its check. Saved dates have their own price.",
            "default": 30
          },
          "calendarNights": {
            "title": "Nights per calendar stay",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Nights in each calendar stay, from 1 to 30. One night uses rounded source labels. More than one night checks an exact stay total and charges a hotel check for each check-in date.",
            "default": 1
          },
          "stateName": {
            "title": "Monitor name",
            "type": "string",
            "description": "Use a different name for each independent monitor or only-new history. Reuse the same name to compare later runs. Letters, numbers, underscores and hyphens only.",
            "default": "default"
          },
          "onlyNew": {
            "title": "Only new records",
            "type": "boolean",
            "description": "Return records not seen in earlier runs using this monitor name. Records outside the current search are retained in history.",
            "default": false
          },
          "includeUnchanged": {
            "title": "Include unchanged prices",
            "type": "boolean",
            "description": "In monitor mode, also return checked hotel prices that did not change.",
            "default": false
          },
          "outputFormat": {
            "title": "Output format",
            "enum": [
              "nested",
              "flat"
            ],
            "type": "string",
            "description": "Nested keeps room and score arrays. Flat writes these arrays as JSON text so each value fits one spreadsheet cell.",
            "default": "nested"
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Uses Apify datacenter proxies by default. You can use another datacenter group or your own proxy URLs. Residential, Unblocker and Google SERP groups are not supported at this result price.",
            "default": {
              "useApifyProxy": true
            }
          },
          "deliveryConnector": {
            "title": "Send results to (optional)",
            "type": "string",
            "description": "Your Slack, Notion or other MCP connector. After the run the Actor posts a short summary there. Connect services once in Apify Console → MCP connectors."
          },
          "deliveryTarget": {
            "title": "Notion page or channel (optional)",
            "type": "string",
            "description": "Where to post the summary: a Notion page link (each run is added on top of that page) or a Slack channel ID. Leave empty to let the connector decide."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}