Booking.com Hotel Scraper
Pricing
from $2.00 / 1,000 hotel scrapeds
Booking.com Hotel Scraper
Scrape Booking.com hotel prices, availability, ratings, rooms, policies, facilities, photos, and review summaries. Export CSV, JSON, Excel, or use the API.
Booking.com Hotel Scraper
Pricing
from $2.00 / 1,000 hotel scrapeds
Scrape Booking.com hotel prices, availability, ratings, rooms, policies, facilities, photos, and review summaries. Export CSV, JSON, Excel, or use the API.
You can access the Booking.com Hotel Scraper 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 API & Integrations in Apify Console.
{ "openapi": "3.0.1", "info": { "version": "0.3", "x-build-id": "9gb0FpUdK3p2W39cP" }, "servers": [ { "url": "https://api.apify.com/v2" } ], "paths": { "/acts/fetch_cat~booking-com-hotels-scraper/run-sync-get-dataset-items": { "post": { "operationId": "run-sync-get-dataset-items-fetch_cat-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/fetch_cat~booking-com-hotels-scraper/runs": { "post": { "operationId": "runs-sync-fetch_cat-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/fetch_cat~booking-com-hotels-scraper/run-sync": { "post": { "operationId": "run-sync-fetch_cat-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": { "destination": { "title": "Destination", "type": "string", "description": "One city, region, landmark, or hotel search phrase. For multiple searches, use destinations." }, "hotelUrls": { "title": "Direct Booking.com hotel URLs", "maxItems": 25, "type": "array", "description": "Optional canonical or redirected Booking.com /hotel/{country}/{slug}.html URLs. Direct targets are often more deterministic than destination search, but can still be blocked by Booking.com.", "items": { "type": "string" } }, "checkIn": { "title": "Check-in date", "type": "string", "description": "Check-in in YYYY-MM-DD. Supply both dates or neither." }, "checkOut": { "title": "Check-out date", "type": "string", "description": "Check-out in YYYY-MM-DD. Supply both dates or neither." }, "adults": { "title": "Adults", "minimum": 1, "maximum": 30, "type": "integer", "description": "Adult guests used for availability and price context.", "default": 2 }, "maxHotelsPerRun": { "title": "Hotels per run (saved and charged cap)", "minimum": 1, "maximum": 100, "type": "integer", "description": "Hard cap across every destination and hotel URL in this run. A hotel-scraped charge occurs only when that base row is saved.", "default": 10 }, "destinations": { "title": "Destinations", "maxItems": 25, "type": "array", "description": "Optional list of destination searches. Each entry has its own maxHotelsPerSearch cap.", "items": { "type": "string" } }, "checkInOffsetDays": { "title": "Check-in offset days", "minimum": 0, "maximum": 365, "type": "integer", "description": "For scheduled runs, resolve check-in this many days after the run starts. Use together with stayNights instead of checkIn/checkOut." }, "stayNights": { "title": "Stay length in nights", "minimum": 1, "maximum": 30, "type": "integer", "description": "For scheduled runs, resolve check-out from the relative check-in date. Use together with checkInOffsetDays." }, "children": { "title": "Children", "minimum": 0, "maximum": 10, "type": "integer", "description": "Number of children. Must equal the number of entries in childrenAges.", "default": 0 }, "childrenAges": { "title": "Children ages", "maxItems": 10, "type": "array", "description": "One age from 0 to 17 for every child, for example [4, 9].", "items": { "type": "integer", "minimum": 0, "maximum": 17 }, "default": [] }, "rooms": { "title": "Rooms", "minimum": 1, "maximum": 10, "type": "integer", "description": "Rooms used for availability and price context.", "default": 1 }, "currency": { "title": "Requested currency", "type": "string", "description": "Three-letter requested currency. The returned currency is recorded separately in every row.", "default": "USD" }, "language": { "title": "Requested language/locale", "type": "string", "description": "Booking.com language parameter, for example en-us or de-de. Provenance records the applied value.", "default": "en-us" }, "countryCode": { "title": "Residential proxy country code", "type": "string", "description": "Optional ISO country code for the existing residential proxy route. This does not guarantee target access." }, "propertyTypes": { "title": "Property types", "uniqueItems": true, "type": "array", "description": "Optional property categories. Multiple values are combined as alternatives.", "items": { "type": "string", "enum": [ "HOTEL", "APARTMENT", "VACATION_HOME", "CONDO_HOTEL", "BED_AND_BREAKFAST", "GUESTHOUSE", "HOSTEL", "LODGE", "HOMESTAY", "CAMPGROUND", "BOAT", "VILLA" ], "enumTitles": [ "Hotels", "Apartments", "Vacation homes", "Condo hotels", "Bed and breakfasts", "Guesthouses", "Hostels", "Lodges", "Homestays", "Campgrounds", "Boats", "Villas" ] } }, "minReviewScore": { "title": "Minimum review score", "minimum": 6, "maximum": 9, "type": "integer", "description": "Optional minimum guest review score." }, "starRatings": { "title": "Star ratings", "uniqueItems": true, "type": "array", "description": "Optional exact property star ratings as integers from 1 to 5, for example [4, 5]. Multiple values are combined as alternatives.", "items": { "type": "integer", "minimum": 1, "maximum": 5 } }, "freeCancellationOnly": { "title": "Free cancellation only", "type": "boolean", "description": "Keep only listings currently exposing a free-cancellation option for the requested stay context.", "default": false }, "minPricePerNight": { "title": "Minimum displayed price per night", "minimum": 0, "type": "number", "description": "Optional lower bound in the requested/returned currency. Calculated from the displayed stay total divided by nights; requires dates." }, "maxPricePerNight": { "title": "Maximum displayed price per night", "minimum": 0, "type": "number", "description": "Optional upper bound in the requested/returned currency. Calculated from the displayed stay total divided by nights; requires dates." }, "sortBy": { "title": "Sort results", "enum": [ "RECOMMENDED", "PRICE_ASC", "TOP_REVIEWED", "STARS_DESC", "STARS_ASC" ], "type": "string", "description": "Requested result order. The applied sorter is recorded in provenance.", "default": "RECOMMENDED" }, "maxCandidatesPerSearch": { "title": "Candidates evaluated per destination", "minimum": 1, "maximum": 500, "type": "integer", "description": "Maximum unpaid candidate rows inspected per destination while applying filters. This must be at least maxHotelsPerSearch and does not change the saved/charged cap.", "default": 100 }, "maxHotelsPerSearch": { "title": "Hotels per destination search", "minimum": 1, "maximum": 100, "type": "integer", "description": "Maximum rows from each destination target. Direct hotel URL targets can return at most one row each.", "default": 10 }, "enrichRooms": { "title": "Rooms and offers", "type": "boolean", "description": "Fetch room configurations and matched offers independently for each hotel.", "default": false }, "enrichPolicies": { "title": "Policies", "type": "boolean", "description": "Fetch cancellation, prepayment, pet, and meal-plan signals independently.", "default": false }, "enrichFacilities": { "title": "Facility highlights", "type": "boolean", "description": "Fetch facility/USP highlights independently.", "default": false }, "enrichPhotos": { "title": "Photos", "type": "boolean", "description": "Fetch the available hotel photo set independently.", "default": false }, "enrichReviews": { "title": "Review details", "type": "boolean", "description": "Fetch score labels, secondary scores, and available review summary metadata independently. This does not return individual guest review text.", "default": false }, "maxItems": { "title": "Deprecated maximum hotels", "minimum": 1, "maximum": 100, "type": "integer", "description": "Legacy alias that sets both limits. Do not combine it with maxHotelsPerSearch or maxHotelsPerRun." }, "includeDetails": { "title": "Deprecated: enable all enrichments", "type": "boolean", "description": "Legacy switch that enables every enrichment unless an individual enrichment flag overrides it." } } }, "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 } } } } } } } } }}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.com Hotel Scraper 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: