{"id":"1b6d7b2e-b44f-4a47-ae1c-0a2ab49b7603","slug":"booking-com-api","name":"booking.com API","description":"booking.com API","front_facing_description":"Search for accommodations across Booking.com and instantly access detailed property information including pricing, amenities, and guest reviews to compare your options. Find the perfect stay by filtering thousands of listings and retrieving comprehensive details like room descriptions, availability, and booking terms all in one place.","source_url":"https://booking.com","is_authenticated":false,"canonical_scraper_id":"347ab358-c792-4521-9ff2-bff0c7f845e0","apis":[{"method":"GET","endpoint_name":"search_properties","description":"Search for properties on Booking.com by destination, dates, and guest configuration. Returns paginated results (25 per page) with property names, URLs, prices, and ratings. Results are deduplicated by URL. When fetch_all is true, automatically paginates through results and returns a single deduplicated list; if max_results is omitted all available results are returned, otherwise the list is capped at the given value. Offset is ignored in fetch_all mode.","input_params":{"rooms":{"type":"integer","required":false,"description":"Number of rooms","default":1},"adults":{"type":"integer","required":false,"description":"Number of adults","default":2},"offset":{"type":"integer","required":false,"description":"Results offset for pagination (increments of 25). Ignored when fetch_all is true.","default":0},"checkin":{"type":"string","required":true,"description":"Check-in date in ISO format YYYY-MM-DD","domain":{"kind":"open","generator":{"fmt":"%Y-%m-%d","type":"relative_date","unit":"days","amount":14}}},"checkout":{"type":"string","required":true,"description":"Check-out date in ISO format YYYY-MM-DD","domain":{"kind":"open","generator":{"fmt":"%Y-%m-%d","type":"relative_date","unit":"days","amount":16}}},"fetch_all":{"type":"boolean","required":false,"description":"When true, automatically fetches all available pages and returns the full deduplicated set of properties, optionally capped by max_results.","default":false},"destination":{"type":"string","required":true,"description":"Search destination (city, region, or property name)","domain":{"kind":"open","generator":{"type":"static","value":"Paris"}}},"max_results":{"type":"integer","required":false,"description":"Maximum number of properties to return when fetch_all is true. Accepts any positive integer. When omitted, all available results are returned."}},"return_schema":{"type":"object","fields":{"properties":"array of objects each containing name, url, price, rating, address, and payment_type","total_found":"integer total number of matching properties"},"sample":{"data":{"properties":[{"url":"https://www.booking.com/hotel/fr/timjardindesplantes.html?aid=304142&label=gen173nr-...","name":"Hôtel du Jardin des Plantes","price":"$150","rating":"Scored 7.5 7.5Good 1,721 reviews","address":null}],"total_found":3095},"status":"success"}},"initiates_session":false,"price":5,"verification":{"assertions":[{"path":"$.data.properties","op":"array_min_len","value":1}],"empty_is_valid":false,"recipe_version":1}},{"method":"GET","endpoint_name":"get_property_details","description":"Retrieve details for one property from its Booking.com property URL in a single page load. Returns the property name, street address, description, review rating (the same 'Scored X (N reviews)' string search_properties emits, plus numeric review_score and review_count), the check-in/check-out dates and adult count the site resolved for that page (taken from the URL's checkin/checkout/group_adults parameters; when the URL carries none, the site's own default stay is reported), the display currency, the URL of the first photo in the property's photo gallery (main_photo_url, a large-size image URL), and the stay pricing: rooms lists every bookable room/rate option with its room price and its all-inclusive total for the whole stay, and total_price / total_price_amount give the lowest such total among options whose capacity fits the resolved adult count. total_price, total_price_amount and rooms are null/empty when the site lists no availability for the stay. A URL for a property that does not exist yields an upstream error with the site's 404 status.","input_params":{"url":{"type":"string","required":true,"description":"The Booking.com property URL as emitted by search_properties.properties[*].url, including checkin, checkout, group_adults and no_rooms query parameters when stay pricing is wanted (e.g. https://www.booking.com/hotel/fr/<slug>.html?checkin=YYYY-MM-DD&checkout=YYYY-MM-DD&group_adults=2&no_rooms=1).","domain":{"kind":"derived","generator":{"path":"$.data.properties[0].url","type":"derived","from_endpoint":"search_properties"}}}},"return_schema":{"type":"object","fields":{"name":"string property name","rooms":"array of room/rate options, each with room_name, max_persons (integer capacity), cancellation_type (site code such as free_cancellation or non_refundable), price (string room price for the stay before excluded taxes), total_price (string all-inclusive stay total) and total_price_amount (number); empty when no availability","adults":"integer number of adults the page was resolved for","rating":"string review summary in the form 'Scored <score> (<count> reviews)', null when the property has no score","address":"string full street address or null if not available","checkin":"string check-in date YYYY-MM-DD the page was resolved for","checkout":"string check-out date YYYY-MM-DD the page was resolved for","currency":"string ISO 4217 code of the display currency used in all price fields","description":"string property description text","total_price":"string formatted lowest all-inclusive total for the whole stay among room options that fit the adult count, null when no availability","review_count":"integer number of guest reviews, null when unrated","review_score":"number guest review score out of 10, null when unrated","main_photo_url":"string absolute URL of the first (main) photo in the property's gallery, large size (max1024x768); null when the page lists no photos","total_price_amount":"number the same lowest total as a raw amount in the display currency, null when no availability"},"sample":{"data":{"name":"Hotel Marena","rooms":[{"price":"$541","room_name":"Superior Double or Twin Room","max_persons":2,"total_price":"$621.07","cancellation_type":"free_cancellation","total_price_amount":621.074852319749},{"price":"$564","room_name":"Superior Twin Room","max_persons":2,"total_price":"$646.66","cancellation_type":"free_cancellation","total_price_amount":646.656452321386}],"adults":2,"rating":"Scored 8.6 (2017 reviews)","address":"27 rue de la Tour d'Auvergne, 9th arr., 75009 Paris, France","checkin":"2026-10-05","checkout":"2026-10-07","currency":"USD","description":"Located in the 9th district of Paris, just a 10-minute walk from Montmartre, Hotel Marena offers a 24-hour reception.","total_price":"$621.07","review_count":2017,"review_score":8.6,"main_photo_url":"https://cf.bstatic.com/xdata/images/hotel/max1024x768/561020854.jpg?k=46ba0e01001ec60a31d4d2494cdcd22823f0bdc1efbe48320c848c469a716b5a&o=&hp=1","total_price_amount":621.074852319749},"status":"success"}},"initiates_session":false,"price":1,"verification":{"assertions":[{"path":"$.data.name","op":"not_matches","value":"^$"},{"path":"$.data.rooms","op":"type_is","value":"array"},{"path":"$.data.main_photo_url","op":"type_is","value":"string"}],"empty_is_valid":false,"recipe_version":3}},{"method":"GET","endpoint_name":"get_room_offers","description":"Lists every room/rate offer the property page currently displays for one stay, in one page load. The grain is one offer per room type and rate plan (a room type with and without breakfast, refundable and non-refundable, each appears as its own offer). Each offer carries the stay subtotal before excluded taxes, the nightly average, the all-inclusive total for the whole stay with every tax and fee the site adds (excluded_charges itemizes them, e.g. VAT and a per-person-per-night city tax), optional/conditional fees when the site lists any, the number of rooms of that offer still bookable (rooms_available, from the page's room selector), breakfast availability (breakfast_included plus the site's breakfast line, which names the surcharge when not included), the cancellation code and the site's cancellation and payment wording, and the raw list of condition lines. The stay (checkin, checkout, adults, rooms) and display currency default to whatever the URL carries; the optional parameters override those URL values, and the response echoes the stay and currency the site actually resolved. Prices are formatted in the resolved currency; amount fields are raw numbers in that currency. offers is empty when the site lists no availability for the stay. A URL for a property that does not exist yields an upstream error with the site's 404 status; a malformed date or currency code is rejected as invalid input.","input_params":{"url":{"type":"string","required":true,"description":"The Booking.com property URL as emitted by search_properties.properties[*].url, including checkin, checkout, group_adults and no_rooms query parameters when stay pricing is wanted (e.g. https://www.booking.com/hotel/fr/<slug>.html?checkin=YYYY-MM-DD&checkout=YYYY-MM-DD&group_adults=2&no_rooms=1).","domain":{"kind":"derived","generator":{"path":"$.data.properties[0].url","type":"derived","from_endpoint":"search_properties"}}},"rooms":{"type":"integer","required":false,"description":"Number of rooms; overrides the no_rooms carried by the URL."},"adults":{"type":"integer","required":false,"description":"Number of adults; overrides the group_adults carried by the URL. Per-person charges such as city tax scale with it."},"checkin":{"type":"string","required":false,"description":"Check-in date in ISO format YYYY-MM-DD; overrides the checkin carried by the URL."},"checkout":{"type":"string","required":false,"description":"Check-out date in ISO format YYYY-MM-DD; overrides the checkout carried by the URL."},"currency":{"type":"string","required":false,"description":"3-letter ISO 4217 display currency (e.g. EUR); overrides the selected_currency carried by the URL. When neither is given the site's default display currency is used and reported in currency."}},"return_schema":{"type":"object","fields":{"name":"string property name","rooms":"integer number of rooms the page was resolved for","adults":"integer number of adults the page was resolved for","offers":"array of room/rate offers, each with room_name, room_id (string room type id), block_id (string rate option id), max_persons (integer capacity), rooms_available (integer rooms of this offer still bookable), nightly_price / nightly_price_amount (average per night before excluded taxes), subtotal_price / subtotal_price_amount (stay price before excluded taxes), total_price / total_price_amount (all-inclusive stay total), excluded_charges (array of {name, amount, amount_value, charge_type} taxes/fees added on top, e.g. VAT and city tax), excluded_charges_amount (number sum of those), included_charges and optional_charges (same charge shape; optional_charges lists non-mandatory or conditional fees the site shows, empty when none), breakfast_included (boolean), breakfast (string site breakfast line incl. surcharge when not included, null when not shown), cancellation_type (site code such as free_cancellation or non_refundable), cancellation_terms (string site cancellation wording), payment_terms (string site payment wording, null when not shown), conditions (array of all condition strings shown for the rate)","checkin":"string check-in date YYYY-MM-DD the page was resolved for","checkout":"string check-out date YYYY-MM-DD the page was resolved for","currency":"string ISO 4217 code of the display currency used in all price fields"},"sample":{"data":{"name":"Donna Camilla Savelli - VRetreats","rooms":1,"adults":1,"offers":[{"room_id":"8984714","block_id":"8984714_93708720_0_2_0_278424","breakfast":"Very good breakfast € 30","room_name":"Executive Triple Room","conditions":["Very good breakfast € 30","Non-refundable","Pay online"],"max_persons":2,"total_price":"€ 2,327.72","nightly_price":"€ 1,051.24","payment_terms":"Pay online","subtotal_price":"€ 2,102.47","rooms_available":1,"excluded_charges":[{"name":"10 % VAT","amount":"€ 210.25","charge_type":"percentage__excluded","amount_value":210.25},{"name":"City tax","amount":"€ 15","charge_type":"per_person_per_night__excluded","amount_value":15.0}],"included_charges":[],"optional_charges":[],"cancellation_type":"non_refundable","breakfast_included":false,"cancellation_terms":"Non-refundable","total_price_amount":2327.72,"nightly_price_amount":1051.2363,"subtotal_price_amount":2102.4726,"excluded_charges_amount":225.2474},{"room_id":"8984714","block_id":"8984714_373897063_0_1_0_278424","breakfast":"Very good breakfast included","room_name":"Executive Triple Room","conditions":["Very good breakfast included","Free cancellation before October 15, 2026","Pay nothing until October 13, 2026"],"max_persons":2,"total_price":"€ 2,512.60","nightly_price":"€ 1,135.27","payment_terms":"Pay nothing until October 13, 2026","subtotal_price":"€ 2,270.55","rooms_available":1,"excluded_charges":[{"name":"10 % VAT","amount":"€ 227.05","charge_type":"percentage__excluded","amount_value":227.05},{"name":"City tax","amount":"€ 15","charge_type":"per_person_per_night__excluded","amount_value":15.0}],"included_charges":[],"optional_charges":[],"cancellation_type":"free_cancellation","breakfast_included":true,"cancellation_terms":"Free cancellation before October 15, 2026","total_price_amount":2512.6,"nightly_price_amount":1135.2727,"subtotal_price_amount":2270.5454,"excluded_charges_amount":242.0546}],"checkin":"2026-10-16","checkout":"2026-10-18","currency":"EUR"},"status":"success"}},"initiates_session":false,"price":5,"verification":{"assertions":[{"path":"$.data.name","op":"not_matches","value":"^$"},{"path":"$.data.offers","op":"type_is","value":"array"},{"path":"$.data.currency","op":"type_is","value":"string"}],"empty_is_valid":false,"recipe_version":1}}],"sample_inputs":{"get_room_offers":{"url":"https://www.booking.com/hotel/fr/studio-refait-a-neuf-paris-17-climatisation-2p.html?checkin=2026-10-24&checkout=2026-10-26&group_adults=2&no_rooms=1"},"search_properties":{"checkin":"2026-10-24","checkout":"2026-10-26","destination":"Paris"},"get_property_details":{"url":"https://www.booking.com/hotel/fr/studio-refait-a-neuf-paris-17-climatisation-2p.html?checkin=2026-10-24&checkout=2026-10-26&group_adults=2&no_rooms=1"}},"prefill_inputs":{"search_properties":{"checkin":"2026-11-15","checkout":"2026-11-17","destination":"Paris"}},"last_verified_at":"2026-10-26T10:01:52.923879+00:00","endpoint_health":[{"endpoint_name":"get_room_offers","status":"healthy","last_checked_at":"2026-10-26T10:01:52.923879+00:00","last_verified_at":"2026-10-26T10:01:52.923879+00:00","recent_runs":[{"at":"2026-10-26T10:01:52.923879+00:00","status":"healthy"},{"at":"2026-10-26T08:02:52.903289+00:00","status":"blocked"},{"at":"2026-10-26T06:03:53.010708+00:00","status":"blocked"},{"at":"2026-10-26T04:03:52.874780+00:00","status":"blocked"},{"at":"2026-10-26T02:00:25.249559+00:00","status":"blocked"},{"at":"2026-10-26T00:04:53.200898+00:00","status":"blocked"},{"at":"2026-10-25T22:04:25.273299+00:00","status":"blocked"},{"at":"2026-10-25T21:00:53.043424+00:00","status":"blocked"},{"at":"2026-10-25T19:04:25.212259+00:00","status":"blocked"},{"at":"2026-10-25T18:01:52.876889+00:00","status":"blocked"},{"at":"2026-10-25T16:05:52.952623+00:00","status":"blocked"},{"at":"2026-10-25T15:02:52.923315+00:00","status":"blocked"},{"at":"2026-10-25T13:04:52.903242+00:00","status":"blocked"},{"at":"2026-10-25T12:01:52.948783+00:00","status":"blocked"},{"at":"2026-10-25T10:04:25.145854+00:00","status":"blocked"}]},{"endpoint_name":"get_property_details","status":"healthy","last_checked_at":"2026-10-26T10:01:52.923879+00:00","last_verified_at":"2026-10-26T10:01:52.923879+00:00","recent_runs":[{"at":"2026-10-26T10:01:52.923879+00:00","status":"healthy"},{"at":"2026-10-26T08:02:52.903289+00:00","status":"blocked"},{"at":"2026-10-26T06:03:53.010708+00:00","status":"blocked"},{"at":"2026-10-26T04:03:52.874780+00:00","status":"blocked"},{"at":"2026-10-26T02:00:25.249559+00:00","status":"blocked"},{"at":"2026-10-26T00:04:53.200898+00:00","status":"blocked"},{"at":"2026-10-25T22:04:25.273299+00:00","status":"blocked"},{"at":"2026-10-25T21:00:53.043424+00:00","status":"blocked"},{"at":"2026-10-25T19:04:25.212259+00:00","status":"blocked"},{"at":"2026-10-25T18:01:52.876889+00:00","status":"blocked"},{"at":"2026-10-25T16:05:52.952623+00:00","status":"blocked"},{"at":"2026-10-25T15:02:52.923315+00:00","status":"blocked"},{"at":"2026-10-25T13:04:52.903242+00:00","status":"blocked"},{"at":"2026-10-25T12:01:52.948783+00:00","status":"blocked"},{"at":"2026-10-25T10:04:25.145854+00:00","status":"blocked"}]},{"endpoint_name":"search_properties","status":"healthy","last_checked_at":"2026-10-26T10:01:52.923879+00:00","last_verified_at":"2026-10-26T10:01:52.923879+00:00","recent_runs":[{"at":"2026-10-26T10:01:52.923879+00:00","status":"healthy"},{"at":"2026-10-26T08:02:52.903289+00:00","status":"ambiguous"},{"at":"2026-10-26T06:03:53.010708+00:00","status":"ambiguous"},{"at":"2026-10-26T04:03:52.874780+00:00","status":"ambiguous"},{"at":"2026-10-26T02:00:25.249559+00:00","status":"ambiguous"},{"at":"2026-10-26T00:04:53.200898+00:00","status":"ambiguous"},{"at":"2026-10-25T22:04:25.273299+00:00","status":"ambiguous"},{"at":"2026-10-25T21:00:53.043424+00:00","status":"ambiguous"},{"at":"2026-10-25T19:04:25.212259+00:00","status":"ambiguous"},{"at":"2026-10-25T18:01:52.876889+00:00","status":"ambiguous"},{"at":"2026-10-25T16:05:52.952623+00:00","status":"ambiguous"},{"at":"2026-10-25T15:02:52.923315+00:00","status":"ambiguous"},{"at":"2026-10-25T13:04:52.903242+00:00","status":"ambiguous"},{"at":"2026-10-25T12:01:52.948783+00:00","status":"ambiguous"},{"at":"2026-10-25T10:04:25.145854+00:00","status":"ambiguous"}]}],"sdk_usage_example":null,"sdk_delivery_state":"absent","summary":"Scraper for Booking.com to search for accommodations and retrieve property details.","updated_at":"2026-10-10T01:09:25.585271+00:00","user_variants":[],"latest_version":13,"user_status":null,"user_scraper_id":null,"contributes_to_marketplace":true,"pinned_version":null,"seo_content":{"faqs":[{"a":"Yes. Booking.com operates an official API program aimed at affiliates and connectivity partners, documented at developers.booking.com. Access requires a partnership agreement and is not open to the general public.","q":"Does Booking.com have an official developer API?"},{"a":"`get_property_details` returns one `total_price` representing the lowest qualifying rate and a `rooms` array with summary-level data per room type. `get_room_offers` returns every distinct rate plan as a separate offer, each with its own `room_id`, `block_id`, and per-plan price breakdown — so you can see, for example, a refundable rate and a non-refundable rate for the same room as separate entries.","q":"What does `get_room_offers` return that `get_property_details` does not?"},{"a":"Results come back 25 per page. Use the `offset` parameter in increments of 25 for manual pagination. Setting `fetch_all: true` ignores `offset` and automatically collects all pages, deduplicating by URL. The `total_found` integer in the response tells you the total match count before pagination.","q":"How does pagination work in `search_properties`?"},{"a":"Not currently. The API covers property name, address, description, review ratings, room options, cancellation types, and pricing. Photo URLs and structured amenity lists are not included in any of the three endpoints. You can fork this API on Parse and revise it to add those fields.","q":"Does the API return property photos or amenity lists?"},{"a":"The API resolves whatever the property page returns for the requested checkin and checkout dates you supply. If Booking.com does not show availability or pricing for a given date range — for instance, dates beyond a property's booking window — `total_price` will be null and the `offers` array in `get_room_offers` will be empty rather than returning an error.","q":"Can I retrieve availability or pricing for dates far in the future?"}],"keywords":["booking.com hotel search API","booking.com property details API","hotel room rates API JSON","accommodation availability API","hotel price scraper API","booking.com room offers API","hotel cancellation policy API","travel accommodation data API","booking.com review ratings API","hotel search by destination API","booking.com checkout price API","hotel rate plan comparison API","booking.com structured data API","accommodation pricing JSON endpoint"],"use_cases":["Build a hotel price comparison tool using `search_properties` prices and `get_room_offers` rate plans across multiple destinations","Monitor nightly rate changes for a set of properties by polling `get_property_details` total_price over time","Extract cancellation policy data (`cancellation_type`) from `get_room_offers` to surface refundable options to travelers","Aggregate star ratings and review counts from `search_properties` and `get_property_details` for destination-level analytics","Generate structured accommodation datasets by city using `fetch_all` on `search_properties` with a `max_results` cap","Compare breakfast-included versus room-only pricing by diffing offers in the `get_room_offers` response for the same room type","Populate a travel app's property cards with address, description, and lowest total price from `get_property_details`"],"meta_title":"Booking.com API — Search Hotels & Property Details","generated_at":"2026-10-10T01:09:50.187586+00:00","lead_paragraph":"This API exposes 3 endpoints covering Booking.com accommodation search and property detail retrieval. Use `search_properties` to query properties by destination, check-in/check-out dates, and guest configuration, returning names, prices, ratings, addresses, and payment types. `get_property_details` and `get_room_offers` give deeper per-property data including room-level pricing, cancellation policies, and stay totals.","schema_version":2,"meta_description":"Search Booking.com properties by destination and dates, retrieve room offers, prices, ratings, and cancellation terms via a structured JSON API.","primary_category":"travel","long_description_md":"## Search Properties\n\nThe `search_properties` endpoint accepts a `destination` string (city, region, or property name), `checkin` and `checkout` dates in ISO format, plus optional `adults`, `rooms`, and pagination controls. Results are returned 25 per page, deduplicated by URL. Each property object in the `properties` array carries `name`, `url`, `price`, `rating`, `address`, and `payment_type`. Set `fetch_all: true` to automatically paginate through all available pages and receive the full deduplicated set; pair it with `max_results` to cap the returned count. The `total_found` field tells you how many matching properties exist regardless of page size.\n\n## Property Details and Room Offers\n\n`get_property_details` takes any Booking.com property URL (as emitted by `search_properties`) and returns the property `name`, `address`, `description`, a `rating` string in the form `Scored X (N reviews)`, plus numeric `review_score` and `review_count`. It also returns a `rooms` array of available rate options, each including `room_name`, `max_persons`, and `cancellation_type` (site codes such as `free_cancellation`). The `total_price` field gives the lowest all-inclusive stay total among room options that fit the requested adult count, expressed in the `currency` ISO 4217 code.\n\n## Room-Level Offer Granularity\n\n`get_room_offers` operates at finer grain: every distinct rate plan the property page currently displays is returned as a separate offer in the `offers` array. Each offer includes `room_name`, `room_id`, `block_id`, `max_persons`, and per-offer pricing — meaning a room type with and without breakfast, or refundable versus non-refundable, each appears as its own entry. You can override the date range, adult count, room count, and display `currency` directly in the request parameters rather than encoding them into the URL, which is useful when iterating over multiple stay configurations for the same property.","generated_with_model":"global.anthropic.claude-sonnet-4-6","secondary_categories":["reviews_ratings","real_estate"]},"primary_category":"travel","secondary_categories":["reviews_ratings","real_estate"],"access_requirements":[]}