Skip to main content
GET
Search Properties
Search Booking.com for stays. Target an area either with free-text location (geocoded by Booking) or with an exact dest_id + dest_type pair from /destinations. Page through results with offset against total_results.

Query Parameters

string
Free-text destination, geocoded by Booking — e.g. Rome, Italy, Amsterdam, Trastevere. Provide either location or dest_id + dest_type.
string
Exact Booking destination id from /destinations. Requires dest_type.
string
Destination type that goes with dest_idCITY, DISTRICT, AIRPORT, LANDMARK or REGION.
string
Check-in date, YYYY-MM-DD. Pass both checkin and checkout, or neither.
string
Check-out date, YYYY-MM-DD.
integer
default:"2"
Number of adults, 130.
string
Comma-separated children’s ages, e.g. 4,9.
integer
default:"1"
Number of rooms.
integer
default:"0"
Number of properties to skip.
integer
default:"25"
Properties per page. Maximum 100.
string
Sort order. One of popularity, price, class_descending, class_ascending, distance_from_search, bayesian_review_score, review_score_and_price, upsort_bh. An unrecognised value is rejected with a 400.
string
Semicolon-separated Booking filter ids, e.g. class=5;mealplan=1. See Filters below.
string
default:"USD"
Currency for prices, e.g. EUR, GBP.
string
default:"en-us"
Locale for text and price formatting, e.g. fr, de.

Filters

filters takes Booking’s own filter ids, joined with ;. These are the verified ones, with their effect on a Rome search that returns 5,982 properties unfiltered:
An unknown filter id is ignored by Booking rather than rejected — the search succeeds and simply returns the unfiltered count. Check total_results to confirm a filter actually applied.

Response

string
Echo of the requested destination.
object
The destination Booking resolved the search to.
string
Echo of the check-in date, or null.
string
Echo of the check-out date, or null.
string
Currency the prices are quoted in.
integer
Total matching properties across all pages, after filters.
integer
Echo of the requested offset.
integer
Properties returned on this page.
Property[]
Property cards for this page.
Every price is returned both as Booking’s localized display string ("€ 265,09") and as a numeric amount + currency. The display string is locale-formatted — comma decimal separators, currency symbol placement — so always do arithmetic on amount, never on display.

Example

Response
Each search request costs 5 credits. Failed requests are not charged.
Two pagination traps. total_results is Booking’s own estimate — the same query returns a slightly different number between calls (we measured 5,974-5,977 for one Rome search), so never use it as a loop bound or a completeness check. And an offset past the real end returns a full page of tail results, not an empty page — so a naive “loop until empty” never terminates. Page by deduplicating on property_id and stop when a page adds nothing new. For sizing a crawl up front, use property_count from /destinations, which is an exact inventory count.