{
  "openapi": "3.0.1",
  "info": {
    "title": "Booking.com Hotels Listing Scraper",
    "description": "Turn Booking.com search results into clean, structured hotel datasets. Capture pricing, ratings, reviews, room signals, cancellation flags, and location details to power travel analytics, competitive tracking, pricing intelligence, and recurring market research workflows..",
    "version": "1.0",
    "x-build-id": "4A0VtzStz874zrDWW"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/parseforge~booking-com-hotels-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-parseforge-booking-com-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/parseforge~booking-com-hotels-scraper/runs": {
      "post": {
        "operationId": "runs-sync-parseforge-booking-com-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/parseforge~booking-com-hotels-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-parseforge-booking-com-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": {
          "startUrl": {
            "title": "Start URL",
            "type": "string",
            "description": "Optional Booking search URL to start from."
          },
          "maxItems": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Maximum number of hotels to scrape."
          },
          "search": {
            "title": "Destination",
            "type": "string",
            "description": "Destination query, for example Paris or New York."
          },
          "destination": {
            "title": "Destination (Legacy)",
            "type": "string",
            "description": "Legacy field kept for backward compatibility."
          },
          "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": "Filter by property type."
          },
          "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": "Booking sorter key."
          },
          "minScore": {
            "title": "Minimum rating",
            "type": "string",
            "description": "Minimum hotel rating in format like 8.4."
          },
          "starsCountFilter": {
            "title": "Stars count",
            "enum": [
              "any",
              "1",
              "2",
              "3",
              "4",
              "5",
              "unrated"
            ],
            "type": "string",
            "description": "Filter by stars count."
          },
          "minMaxPrice": {
            "title": "Price range",
            "type": "string",
            "description": "Price filter format: 100-150 or 100+."
          },
          "currency": {
            "title": "Preferred currency",
            "type": "string",
            "description": "Currency code sent to Booking URL params."
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Language sent to Booking endpoints."
          },
          "checkIn": {
            "title": "Check-in date",
            "type": "string",
            "description": "YYYY-MM-DD or relative format like 3 days."
          },
          "checkOut": {
            "title": "Check-out date",
            "type": "string",
            "description": "YYYY-MM-DD or relative format like 5 days."
          },
          "checkinDate": {
            "title": "Check-in Date (Legacy)",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Legacy date field in YYYY-MM-DD format."
          },
          "checkoutDate": {
            "title": "Check-out Date (Legacy)",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Legacy date field in YYYY-MM-DD format."
          },
          "flexWindow": {
            "title": "Stay date flexibility (days)",
            "enum": [
              "0",
              "1",
              "2",
              "3",
              "7"
            ],
            "type": "string",
            "description": "Accepted values: 0,1,2,3,7."
          },
          "adults": {
            "title": "Adults",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Number of adults for the stay."
          },
          "children": {
            "title": "Children",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "Number of children for the stay."
          },
          "rooms": {
            "title": "Rooms",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Number of rooms to request in search."
          },
          "childrenAges": {
            "title": "Children Ages",
            "type": "string",
            "description": "Optional children ages as comma-separated values, for example 4,7."
          },
          "includeFilterMetadata": {
            "title": "Include available filters metadata",
            "type": "boolean",
            "description": "Include available filter and sorter metadata in the first output item."
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Residential proxies are recommended for Booking.com."
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}