{
  "openapi": "3.0.1",
  "info": {
    "title": "Booking.com Search Scraper",
    "description": "Scrapes Booking.com search results over plain HTTP. Full filter set, currency selection, and structured output — prices, ratings, coordinates, room layout.",
    "version": "0.0",
    "x-build-id": "7h1y6iSrcOMuJzJzo"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/mina_safwat~booking-search-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-mina_safwat-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/mina_safwat~booking-search-scraper/runs": {
      "post": {
        "operationId": "runs-sync-mina_safwat-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/mina_safwat~booking-search-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-mina_safwat-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",
        "required": [
          "destination"
        ],
        "properties": {
          "destination": {
            "title": "Destination",
            "type": "string",
            "description": "City, region, district, landmark, airport, or a specific property — type it exactly as you would in the search box on Booking.com. The closest match is used, and the run log shows which place was picked plus any other matches, so you can be more specific if needed."
          },
          "checkin": {
            "title": "Check-in date",
            "type": "string",
            "description": "YYYY-MM-DD. Leave both dates empty to search without availability (no prices)."
          },
          "checkout": {
            "title": "Check-out date",
            "type": "string",
            "description": "YYYY-MM-DD."
          },
          "adults": {
            "title": "Adults",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Number of adults per room.",
            "default": 2
          },
          "children_ages": {
            "title": "Children ages",
            "type": "array",
            "description": "One age per child, e.g. [4, 9]. Booking prices children by age.",
            "default": []
          },
          "rooms": {
            "title": "Rooms",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Number of rooms to price for.",
            "default": 1
          },
          "currency": {
            "title": "Currency",
            "enum": [
              "USD",
              "EUR",
              "GBP",
              "AED",
              "ARS",
              "AUD",
              "AZN",
              "BHD",
              "BRL",
              "CAD",
              "CHF",
              "CLP",
              "CNY",
              "COP",
              "CZK",
              "DKK",
              "EGP",
              "FJD",
              "GEL",
              "HKD",
              "HUF",
              "IDR",
              "ILS",
              "INR",
              "ISK",
              "JOD",
              "JPY",
              "KRW",
              "KWD",
              "KZT",
              "MDL",
              "MXN",
              "MYR",
              "NAD",
              "NOK",
              "NZD",
              "OMR",
              "PLN",
              "QAR",
              "RON",
              "SAR",
              "SEK",
              "SGD",
              "THB",
              "TRY",
              "TWD",
              "UAH",
              "XOF",
              "ZAR"
            ],
            "type": "string",
            "description": "Currency all prices are converted to.",
            "default": "USD"
          },
          "language": {
            "title": "Language",
            "enum": [
              "en-gb",
              "en-us",
              "ar",
              "de",
              "es",
              "fr",
              "it",
              "nl",
              "pl",
              "pt-br",
              "ru",
              "tr",
              "zh-cn",
              "ja",
              "ko"
            ],
            "type": "string",
            "description": "Language of names, descriptions, and labels in the output.",
            "default": "en-gb"
          },
          "sort_by": {
            "title": "Sort by",
            "enum": [
              "Top picks",
              "Homes & apartments first",
              "Price (lowest first)",
              "Price (highest first)",
              "Property rating (high to low)",
              "Property rating (low to high)",
              "Property rating and price",
              "Distance from centre",
              "Top reviewed",
              "Top picks for business travellers"
            ],
            "type": "string",
            "description": "Leave empty for Booking's default ordering."
          },
          "max_results": {
            "title": "Max results",
            "minimum": 1,
            "type": "integer",
            "description": "Stops once this many properties are scraped. Results come 25 per request.",
            "default": 100
          },
          "price_min": {
            "title": "Min price per night",
            "minimum": 0,
            "type": "integer",
            "description": "In the selected currency."
          },
          "price_max": {
            "title": "Max price per night",
            "minimum": 0,
            "type": "integer",
            "description": "Highest price per night, in the selected currency."
          },
          "star_ratings": {
            "title": "Property rating (stars)",
            "type": "array",
            "description": "Official star rating of the property. Pick several to combine them.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5"
              ]
            },
            "default": []
          },
          "min_review_score": {
            "title": "Minimum review score",
            "enum": [
              "Superb: 9+",
              "Very good: 8+",
              "Good: 7+",
              "Pleasant: 6+"
            ],
            "type": "string",
            "description": "Only properties whose guest review score is at least this high."
          },
          "property_types": {
            "title": "Property type",
            "type": "array",
            "description": "Hotels, apartments, villas, and so on.",
            "items": {
              "type": "string",
              "enum": [
                "Hotels",
                "Apartments",
                "Resorts",
                "Villas",
                "Holiday homes",
                "Chalets",
                "Bed and breakfasts",
                "Guest houses",
                "Hostels",
                "Holiday parks",
                "Boats",
                "Motels",
                "Campsites",
                "Homestays",
                "Country houses",
                "Farm stays",
                "Luxury tents",
                "Capsule hotels",
                "Ryokans",
                "Riads",
                "Lodges",
                "Inns",
                "Aparthotels"
              ]
            },
            "default": []
          },
          "meal_plans": {
            "title": "Meals",
            "type": "array",
            "description": "Board basis included in the price.",
            "items": {
              "type": "string",
              "enum": [
                "Breakfast included",
                "Breakfast & dinner included",
                "All meals included",
                "All-inclusive",
                "Self catering"
              ]
            },
            "default": []
          },
          "reservation_policies": {
            "title": "Reservation policy",
            "type": "array",
            "description": "Cancellation and prepayment terms.",
            "items": {
              "type": "string",
              "enum": [
                "Free cancellation",
                "No prepayment",
                "Book without credit card"
              ]
            },
            "default": []
          },
          "facilities": {
            "title": "Property facilities",
            "type": "array",
            "description": "Facilities the property must offer.",
            "items": {
              "type": "string",
              "enum": [
                "Parking",
                "Swimming pool",
                "Beachfront",
                "Hot tub/Jacuzzi",
                "Spa & wellness centre",
                "Free WiFi",
                "Restaurant",
                "Fitness centre",
                "Happy hour",
                "Airport shuttle",
                "Non-smoking rooms",
                "24-hour front desk",
                "Electric vehicle charging station",
                "Wheelchair accessible",
                "Room service",
                "Family rooms",
                "Pet friendly",
                "Bar",
                "Sauna",
                "Facilities for disabled guests"
              ]
            },
            "default": []
          },
          "room_facilities": {
            "title": "Room facilities",
            "type": "array",
            "description": "Facilities the room or unit must have.",
            "items": {
              "type": "string",
              "enum": [
                "Kitchen/kitchenette",
                "Private pool",
                "Balcony",
                "Terrace",
                "Sea view",
                "Private bathroom",
                "Bath",
                "Air conditioning",
                "Washing machine",
                "Dishwasher",
                "Refrigerator",
                "Coffee machine",
                "Electric kettle",
                "Oven",
                "Barbecue",
                "Dining area",
                "Outdoor dining area",
                "Private entrance",
                "TV",
                "Bathrobe",
                "Dressing room",
                "Additional bathroom",
                "Additional toilet",
                "Accessible by lift",
                "Air purifiers"
              ]
            },
            "default": []
          },
          "popular_activities": {
            "title": "Fun things to do",
            "type": "array",
            "description": "On-site activities and amenities.",
            "items": {
              "type": "string",
              "enum": [
                "Beach",
                "Private beach area",
                "Evening entertainment",
                "Water sport facilities on site",
                "Billiards",
                "Golf course",
                "Tennis court",
                "Diving",
                "Fishing",
                "Hiking",
                "Cycling",
                "Skiing"
              ]
            },
            "default": []
          },
          "accessibility": {
            "title": "Accessibility",
            "type": "array",
            "description": "Property and room accessibility features.",
            "items": {
              "type": "string",
              "enum": [
                "Toilet with grab rails",
                "Raised toilet",
                "Lower bathroom sink",
                "Emergency cord in bathroom",
                "Visual aids: Braille",
                "Visual aids: Tactile signs",
                "Auditory guidance",
                "Entire unit located on ground floor",
                "Upper floors accessible by elevator",
                "Entire unit wheelchair accessible",
                "Toilet with grab rails (room)",
                "Adapted bath",
                "Roll-in shower",
                "Walk-in shower",
                "Raised toilet (room)",
                "Lowered sink",
                "Emergency cord in bathroom (room)",
                "Shower chair"
              ]
            },
            "default": []
          },
          "bed_preference": {
            "title": "Bed preference",
            "type": "array",
            "description": "Bed configuration in the room.",
            "items": {
              "type": "string",
              "enum": [
                "Double bed",
                "Twin beds"
              ]
            },
            "default": []
          },
          "travel_group": {
            "title": "Travel group",
            "type": "array",
            "description": "Pet and adults-only policies.",
            "items": {
              "type": "string",
              "enum": [
                "Pets allowed",
                "Adults only"
              ]
            },
            "default": []
          },
          "distance_from_centre": {
            "title": "Distance from centre",
            "enum": [
              "Less than 1 km",
              "Less than 3 km",
              "Less than 5 km"
            ],
            "type": "string",
            "description": "Maximum distance from the centre of the destination."
          },
          "min_bedrooms": {
            "title": "Min bedrooms",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Only entire places with at least this many bedrooms."
          },
          "min_bathrooms": {
            "title": "Min bathrooms",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "Only properties with at least this many bathrooms."
          },
          "entire_homes_only": {
            "title": "Entire homes & apartments only",
            "type": "boolean",
            "description": "Exclude private rooms — show only entire homes and apartments.",
            "default": false
          },
          "available_only": {
            "title": "Only show available properties",
            "type": "boolean",
            "description": "Hide properties that are sold out for your dates.",
            "default": true
          },
          "online_payment_only": {
            "title": "Accepts online payments",
            "type": "boolean",
            "description": "Only properties that accept payment through Booking.com.",
            "default": false
          },
          "sustainable_only": {
            "title": "Sustainability certified",
            "type": "boolean",
            "description": "Only properties holding a sustainability certification.",
            "default": false
          },
          "extra_filters": {
            "title": "Extra filters (advanced)",
            "type": "array",
            "description": "Raw Booking filter tokens as \"field=value\", e.g. \"chaincode=1234\". Every run writes the full list of filters valid for that search to the AVAILABLE_FILTERS key in the key-value store — copy tokens from there.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "proxy_country": {
            "title": "Proxy countries",
            "type": "string",
            "description": "Comma-separated 2-letter codes, rotated across retries. Residential proxies are required — Booking challenges datacentre IPs.",
            "default": "US,GB,DE,NL,FR"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}