{
  "openapi": "3.0.1",
  "info": {
    "title": "Booking.com Scraper - $2/1k, Prices & Rate Tracking",
    "description": "Track Booking.com hotel rates and availability by destination or saved search URL. Export live prices, comparable-offer history, change alerts, room options, tax and currency evidence, facilities, photos, policies, ratings, and coordinates.",
    "version": "1.0",
    "x-build-id": "zAykDZDywTS4oEhJS"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fascinating_lentil~booking-com-hotel-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fascinating_lentil-booking-com-hotel-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/fascinating_lentil~booking-com-hotel-scraper/runs": {
      "post": {
        "operationId": "runs-sync-fascinating_lentil-booking-com-hotel-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/fascinating_lentil~booking-com-hotel-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-fascinating_lentil-booking-com-hotel-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",
            "minItems": 1,
            "maxItems": 50,
            "type": "array",
            "description": "List of destinations to search, e.g. London, United Kingdom. Start with one destination for a low-cost test.",
            "default": [
              "London, United Kingdom"
            ],
            "items": {
              "type": "string"
            }
          },
          "searchUrls": {
            "title": "Booking.com Search URLs",
            "maxItems": 50,
            "type": "array",
            "description": "Optional Booking.com search-results URLs. Paste URLs after applying filters on Booking.com; the Actor preserves those filters while paginating. When supplied, URL mode takes priority over destinations.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "checkIn": {
            "title": "Check-in Date",
            "type": "string",
            "description": "Optional future check-in date in YYYY-MM-DD format. Leave blank to use 30 days after the run date."
          },
          "checkOut": {
            "title": "Check-out Date",
            "type": "string",
            "description": "Optional future check-out date in YYYY-MM-DD format. Leave blank to use one night after check-in."
          },
          "adults": {
            "title": "Number of Adults",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Number of adults per room.",
            "default": 2
          },
          "rooms": {
            "title": "Number of Rooms",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Number of rooms to search for.",
            "default": 1
          },
          "childrenAges": {
            "title": "Children Ages",
            "maxItems": 10,
            "type": "array",
            "description": "Age of each child, from 0 to 17. Repeated ages are allowed. Example: [5, 9].",
            "items": {
              "type": "integer",
              "minimum": 0,
              "maximum": 17
            },
            "default": []
          },
          "propertyTypes": {
            "title": "Property Type Filters",
            "type": "array",
            "description": "Optional property type filters. Allowed values: Hotels, Apartments, Hostels, Villas, Resorts, B&Bs, Guest houses. Leave empty for all accommodation types.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "stars": {
            "title": "Star Ratings",
            "maxItems": 5,
            "uniqueItems": true,
            "type": "array",
            "description": "Optional star-category filters. Example: [4, 5].",
            "items": {
              "type": "integer",
              "minimum": 1,
              "maximum": 5
            },
            "default": []
          },
          "minReviewScore": {
            "title": "Minimum Review Score",
            "minimum": 0,
            "maximum": 10,
            "type": "number",
            "description": "Only include properties with a guest review score at or above this threshold. Leave 0 for the broadest first test.",
            "default": 0
          },
          "minPrice": {
            "title": "Minimum Stay Price",
            "minimum": 0,
            "type": "number",
            "description": "Optional minimum total price in the selected currency."
          },
          "maxPrice": {
            "title": "Maximum Stay Price",
            "minimum": 0,
            "type": "number",
            "description": "Optional maximum total price in the selected currency."
          },
          "sortBy": {
            "title": "Sort Results By",
            "enum": [
              "popularity",
              "priceLowToHigh",
              "reviewScore",
              "distance"
            ],
            "type": "string",
            "description": "Booking.com result ordering for destination searches. URL mode keeps the ordering from the pasted URL.",
            "default": "popularity"
          },
          "maxResults": {
            "title": "Maximum Results",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Maximum number of properties per destination or search URL. The Actor follows Booking.com's next-page links and stops at this limit.",
            "default": 25
          },
          "currency": {
            "title": "Currency",
            "enum": [
              "USD",
              "EUR",
              "GBP",
              "JPY",
              "CAD",
              "AUD",
              "CHF",
              "CNY",
              "INR",
              "BRL",
              "MXN",
              "SEK",
              "NOK",
              "DKK",
              "NZD",
              "KRW",
              "SGD",
              "MYR",
              "THB",
              "TRY"
            ],
            "type": "string",
            "description": "Display currency for prices.",
            "default": "USD"
          },
          "language": {
            "title": "Booking.com Language",
            "enum": [
              "en-us",
              "en-gb",
              "de",
              "es",
              "fr",
              "it",
              "nl",
              "pt-br",
              "pt-pt",
              "ja",
              "zh-cn",
              "zh-tw",
              "ko",
              "ar",
              "hi",
              "tr",
              "pl",
              "sv",
              "da",
              "no",
              "fi"
            ],
            "type": "string",
            "description": "Language used for Booking.com labels and policies. URL mode keeps the language in the pasted URL when present.",
            "default": "en-us"
          },
          "scrapeDetails": {
            "title": "Detailed Property & Room Data",
            "type": "boolean",
            "description": "Visit each property page to add room options, prices, occupancy, meal plans, cancellation policies, availability, facilities, photos, address, coordinates, check-in/out times, description, and surroundings. Slower than fast mode and billed at $5 per 1,000 detailed hotel records. Uses datacenter proxy to keep the price predictable.",
            "default": false
          },
          "maxImages": {
            "title": "Maximum Images Per Property",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum property images returned in detailed mode.",
            "default": 10
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Apify Proxy or a suitable custom proxy is required in cloud runs. Leave groups empty for the cheaper datacenter pool. Residential fast-mode requests are limited to one search page. Detailed mode uses datacenter or custom proxies. For rate tracking, pin an Apify proxy country; an unspecified/custom proxy market disables comparisons.",
            "default": {
              "useApifyProxy": true
            }
          },
          "allowResidentialFallback": {
            "title": "Allow Residential Fallback",
            "type": "boolean",
            "description": "Fast mode only: try one Residential search page if the default datacenter pool returns no usable result. Residential transfer can cost more than result revenue. Off by default; explicit proxy groups are respected.",
            "default": false
          },
          "maxPagesPerSearch": {
            "title": "Maximum Search Pages",
            "minimum": 1,
            "maximum": 40,
            "type": "integer",
            "description": "Bound pagination per destination/URL. Residential requests have a stricter one-page limit. OUTPUT reports page caps and repeated pages as limited coverage.",
            "default": 4
          },
          "trackChanges": {
            "title": "Track Hotel Rate Changes",
            "type": "boolean",
            "description": "Keep bounded rate history under monitorName. Compare the displayed hotel offer only when dates, occupancy, market, currency, tax basis and observed terms agree. Missing hotels are not reported as sold out.",
            "default": false
          },
          "monitorName": {
            "title": "Monitor Name",
            "type": "string",
            "description": "Required for tracking. Use the same name and explicit stay dates on repeats. Up to 64 letters, numbers, spaces, underscores or hyphens. Each account/Actor/name has its own saved history."
          },
          "priceChangeThresholdPercent": {
            "title": "Rate Change Alert Threshold (%)",
            "minimum": 0,
            "maximum": 100,
            "type": "number",
            "description": "Mark comparable price rises or drops at or above this absolute percentage. Alerts are output fields for your own webhook or integration; no messages are sent automatically.",
            "default": 5
          },
          "observationHistoryLimit": {
            "title": "Observations Per Rate",
            "minimum": 2,
            "maximum": 30,
            "type": "integer",
            "description": "Keep this many observations per property/stay context, with at most 1,000 contexts in each monitor. Changing dates or guest details creates a new baseline.",
            "default": 10
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}