Booking Scraper PRO
Pricing
from $5.00 / 1,000 property scrapeds
Go to Apify Store
Booking Scraper PRO
Scrape Booking.com hotels & properties — prices, review scores, stars, location, amenities. MCP-ready.
Booking Scraper PRO
Pricing
from $5.00 / 1,000 property scrapeds
Scrape Booking.com hotels & properties — prices, review scores, stars, location, amenities. MCP-ready.
You can access the Booking Scraper PRO programmatically from your own applications by using the Apify API. You can also choose the language preference from below. To use the Apify API, you’ll need an Apify account and your API token, found in Integrations settings in Apify Console.
{ "openapi": "3.0.1", "info": { "version": "0.1", "x-build-id": "fnr9xy2xEYRIav8z6" }, "servers": [ { "url": "https://api.apify.com/v2" } ], "paths": { "/acts/khadinakbar~booking-scraper-pro/run-sync-get-dataset-items": { "post": { "operationId": "run-sync-get-dataset-items-khadinakbar-booking-scraper-pro", "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/khadinakbar~booking-scraper-pro/runs": { "post": { "operationId": "runs-sync-khadinakbar-booking-scraper-pro", "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/khadinakbar~booking-scraper-pro/run-sync": { "post": { "operationId": "run-sync-khadinakbar-booking-scraper-pro", "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": { "search": { "title": "Destination search", "type": "string", "description": "Free-text destination to search on Booking.com, e.g. 'Amsterdam', 'Paris, France', or 'Bali'. Use this when you want every matching property for a place. Leave empty if you instead paste exact URLs in Start URLs. NOT a hotel name on its own — for one specific hotel paste its URL in Start URLs." }, "startUrls": { "title": "Start URLs", "type": "array", "description": "Booking.com search-results URLs or individual hotel URLs to scrape directly (e.g. 'https://www.booking.com/searchresults.html?ss=Rome' or 'https://www.booking.com/hotel/nl/jerome.html'). Use this when you already have a filtered Booking URL or specific hotels. Each item is auto-detected as a search page or a hotel page. NOT for non-Booking.com domains — those are skipped.", "default": [], "items": { "type": "object", "required": [ "url" ], "properties": { "url": { "type": "string", "title": "URL of a web page", "format": "uri" } } } }, "checkIn": { "title": "Check-in date", "type": "string", "description": "Check-in date in YYYY-MM-DD format, e.g. '2026-07-10'. Use together with Check-out to get live, date-specific room prices. If left empty, Booking.com returns indicative prices without a fixed stay. Must be paired with Check-out — a check-in alone is ignored by Booking.com." }, "checkOut": { "title": "Check-out date", "type": "string", "description": "Check-out date in YYYY-MM-DD format, e.g. '2026-07-12'. Must be after Check-in and paired with it for accurate nightly prices. If empty, prices are indicative only. NOT a number of nights — provide the actual calendar date." }, "adults": { "title": "Adults", "minimum": 1, "maximum": 30, "type": "integer", "description": "Number of adult guests used to compute room availability and price, e.g. 2. Defaults to 2 when omitted. Affects which rooms and prices Booking.com returns. NOT the number of rooms — set that separately in Rooms.", "default": 2 }, "children": { "title": "Children", "minimum": 0, "maximum": 20, "type": "integer", "description": "Number of child guests included in the occupancy, e.g. 0 or 2. Defaults to 0. Some properties price or filter differently when children are present. Does not set children ages (Booking.com assumes a default age).", "default": 0 }, "rooms": { "title": "Rooms", "minimum": 1, "maximum": 30, "type": "integer", "description": "Number of rooms requested, e.g. 1. Defaults to 1. Increasing this changes which properties have availability and their total price. NOT the same as guests — set guest counts in Adults and Children.", "default": 1 }, "currency": { "title": "Currency", "enum": [ "USD", "EUR", "GBP", "AUD", "CAD", "INR", "AED", "JPY", "CNY", "BRL", "MXN", "ZAR", "SGD", "CHF", "SEK", "PLN", "CZK", "TRY" ], "type": "string", "description": "ISO currency code that prices are returned in, e.g. 'USD', 'EUR', 'GBP'. Defaults to USD. Booking.com converts displayed prices to this currency. Use a 3-letter code, not a symbol.", "default": "USD" }, "language": { "title": "Language / locale", "enum": [ "en-gb", "en-us", "de", "fr", "es", "it", "nl", "pt-br", "pt-pt", "pl", "ru", "ja", "zh-cn", "ar", "tr" ], "type": "string", "description": "Booking.com locale that controls page language and the domain variant used, e.g. 'en-gb', 'en-us', 'de', 'fr'. Defaults to en-gb. Affects review wording and some field text. Use a Booking locale code, not a country name.", "default": "en-gb" }, "minPrice": { "title": "Minimum price per night", "minimum": 0, "type": "integer", "description": "Lower bound for nightly price in the selected currency, e.g. 50. Leave empty for no minimum. Applied as a Booking.com price filter on the search. Has no effect on direct hotel URLs." }, "maxPrice": { "title": "Maximum price per night", "minimum": 0, "type": "integer", "description": "Upper bound for nightly price in the selected currency, e.g. 300. Leave empty for no maximum. Applied as a Booking.com price filter on the search. Has no effect on direct hotel URLs." }, "minStars": { "title": "Minimum star rating", "minimum": 0, "maximum": 5, "type": "integer", "description": "Filter to properties with at least this hotel-class star rating, 1-5 (e.g. 4 = 4 stars and up). Set 0 (default) for no star filter. This is the official property star class, NOT the guest review score (which is 0-10).", "default": 0 }, "maxResults": { "title": "Max results", "minimum": 1, "maximum": 1000, "type": "integer", "description": "Hard cap on properties scraped and billed per search, e.g. 25. Defaults to 25 (Booking.com's first results page, which is rock-solid). Higher values trigger best-effort infinite-scroll to load more, but Booking throttles this — for guaranteed large datasets, run several narrower searches (by city area, star class, or price band). Lower it to control cost.", "default": 25 }, "enrichDetails": { "title": "Enrich with property details", "type": "boolean", "description": "When true, the actor opens each property page to add description, full amenities, check-in/out times, and precise coordinates. This is slower and adds a per-property detail charge. Leave false for fast listing-only scraping. Off by default.", "default": false }, "proxyConfiguration": { "title": "Proxy configuration", "type": "object", "description": "Proxy settings. Defaults to Apify Proxy (datacenter), which works on Booking.com with the actor's browser engine. If you have RESIDENTIAL proxy access and hit blocks, switch the group here. Set a country for geo-specific pricing.", "default": { "useApifyProxy": true } } } }, "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 } } } } } } } } }}OpenAPI is a standard for designing and describing RESTful APIs, allowing developers to define API structure, endpoints, and data formats in a machine-readable way. It simplifies API development, integration, and documentation.
OpenAPI is effective when used with AI agents and GPTs by standardizing how these systems interact with various APIs, for reliable integrations and efficient communication.
By defining machine-readable API specifications, OpenAPI allows AI models like GPTs to understand and use varied data sources, improving accuracy. This accelerates development, reduces errors, and provides context-aware responses, making OpenAPI a core component for AI applications.
You can download the OpenAPI definitions for Booking Scraper PRO from the options below:
If you’d like to learn more about how OpenAPI powers GPTs, read our blog post.
You can also check out our other API clients: