Booking APIbooking.com ↗
Search Booking.com properties by destination and dates, retrieve room offers, prices, ratings, and cancellation terms via a structured JSON API.
What is the Booking API?
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.
curl -X GET 'https://api.parse.bot/scraper/347ab358-c792-4521-9ff2-bff0c7f845e0/search_properties?checkin=2026-10-24&checkout=2026-10-26&destination=Paris' \ -H 'X-API-Key: $PARSE_API_KEY'
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.
| Param | Type | Description |
|---|---|---|
| rooms | integer | Number of rooms |
| adults | integer | Number of adults |
| offset | integer | Results offset for pagination (increments of 25). Ignored when fetch_all is true. |
| checkinrequired | string | Check-in date in ISO format YYYY-MM-DD |
| checkoutrequired | string | Check-out date in ISO format YYYY-MM-DD |
| fetch_all | boolean | When true, automatically fetches all available pages and returns the full deduplicated set of properties, optionally capped by max_results. |
| destinationrequired | string | Search destination (city, region, or property name) |
| max_results | integer | Maximum number of properties to return when fetch_all is true. Accepts any positive integer. When omitted, all available results are returned. |
{
"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"
}
}About the Booking API
Search Properties
The 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.
Property Details and Room Offers
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.
Room-Level Offer Granularity
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.
The Booking API is a managed, monitored endpoint for booking.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when booking.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official booking.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a hotel price comparison tool using
search_propertiesprices andget_room_offersrate plans across multiple destinations - Monitor nightly rate changes for a set of properties by polling
get_property_detailstotal_price over time - Extract cancellation policy data (
cancellation_type) fromget_room_offersto surface refundable options to travelers - Aggregate star ratings and review counts from
search_propertiesandget_property_detailsfor destination-level analytics - Generate structured accommodation datasets by city using
fetch_allonsearch_propertieswith amax_resultscap - Compare breakfast-included versus room-only pricing by diffing offers in the
get_room_offersresponse for the same room type - Populate a travel app's property cards with address, description, and lowest total price from
get_property_details
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Booking.com have an official developer API?+
What does `get_room_offers` return that `get_property_details` does not?+
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.How does pagination work in `search_properties`?+
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.Does the API return property photos or amenity lists?+
Can I retrieve availability or pricing for dates far in the future?+
total_price will be null and the offers array in get_room_offers will be empty rather than returning an error.