Booking.com Search API
Our Booking.com Search API allows you to scrape properties from Booking.com search results: hotels, apartments, vacation homes, and every other type of place to stay. For each property, the API returns its name and type, property rating, review score and number of reviews, location and GPS coordinates, price for the stay with its discounts, taxes, and deals, the rooms the price is for, cancellation and payment policies, and more.
Search any destination with q, for your dates and guests, with Booking.com's sorting and filters: price per night, property rating, review score, free cancellation, property types, and any other Booking.com filter, like amenities or meals, with nflt. Results can be localized with any of the Booking.com languages and currencies.
The API endpoint is https://serpapi.com/search?engine=booking
Head to the playground for a live and interactive demo.
API Parameters
Localization
hl
Optional
Parameter defines the language to use for the Booking.com search (e.g., en-us (default) for English (US), fr for French, or pt-br for Portuguese (Brazil)). Head to the Booking.com languages page for a full list of supported languages.
currency
Optional
Parameter defines the currency of the returned prices. It defaults to hotel_currency, the currency of each property (e.g., EUR in Paris), returned in currency of each property. Head to the Booking.com currencies page for a full list of supported currency codes.
Dates And Guests
check_in_date
Optional
Parameter defines the check-in date. The format is YYYY-MM-DD (e.g., 2026-11-20). It must be used together with check_out_date.
When dates aren't set, Booking.com returns properties without prices.
check_out_date
Optional
Parameter defines the check-out date. The format is YYYY-MM-DD (e.g., 2026-11-23). It must be used together with check_in_date, and be up to 90 nights later than it.
flex_window
Optional
Parameter defines how many days the check-in and check-out dates can move, earlier or later, for the best price of each property. Each property then has the dates of its price in check_in_date and check_out_date. It must be used together with check_in_date and check_out_date.
Available options:1 - ± 1 day2 - ± 2 days3 - ± 3 days7 - ± 7 days
children
Optional
Parameter defines the number of children, from 0 (default) to 10. Their ages must be set with children_ages.
Advanced Filters
sort_by
Optional
Parameter defines the sorting of the results. It defaults to popularity (Our top picks).
Available options:popularity - Our top picksupsort_bh - Homes & apartments firstprice - Price (lowest first)price_from_high_to_low - Price (highest first)review_score_and_price - Best reviewed & lowest pricebayesian_review_score - Top reviewedclass - Property rating (high to low)class_asc - Property rating (low to high)class_and_price - Property rating and pricedistance_from_search - Distance from downtownclosest_beach_distance_v2 - Distance from closest beachclosest_ski_lift_distance - Distance to nearest ski lift
min_price
Optional
Parameter defines the minimum price per night, in the currency of the results (e.g., 100). It must be used together with a currency code.
max_price
Optional
Parameter defines the maximum price per night, in the currency of the results (e.g., 300). It must be used together with a currency code.
hotel_class
Optional
Parameter defines the property ratings to show: stars for hotels, or Booking.com's own rating for homes and apartments. It's a comma-separated list of ratings from 1 to 5 (e.g., 4,5 for 4 and 5-star properties).
rating
Optional
Parameter defines the minimum review score of the properties.
Available options:9 - Wonderful: 9+8 - Very Good: 8+7 - Good: 7+6 - Pleasant: 6+
free_cancellation
Optional
Parameter defines whether to only show properties with free cancellation. It can be set to true or false (default).
property_types
Optional
Parameter defines the property types to show. It's a comma-separated list of property type IDs (e.g., 204 for hotels, or 201,220 for apartments and vacation homes). Head to the Booking.com property types page for a full list of supported property types.
nflt
Optional
Parameter defines any other Booking.com filters, like amenities, meals, districts, brands, or distance from the center. It's the value of the nflt parameter of Booking.com search URLs: a semicolon-separated list of filters (e.g., hotelfacility=107;mealplan=1;di=2286).
The filters available for a search, with their values, are in filters of the results.
Pagination
offset
Optional
Parameter defines the result offset. It skips the given number of results. It's used for pagination. (e.g., 0 (default) is the first page of results, 25 is the 2nd page of results with the default limit, etc.). It can be up to 1000: Booking.com returns the same properties for larger offsets, even when it finds more properties.
limit
Optional
Parameter defines the maximum number of results to return, from 1 to 100. It defaults to 25, like on Booking.com. Booking.com sometimes returns a few more properties: sponsored ones, or the searched property.
session_token
Optional
Parameter defines the token that keeps the same Booking.com visitor between searches. Booking.com ranks properties differently for each visitor, so without it, the next pages can repeat properties of the previous ones. It's returned in serpapi_pagination.session_token, and the links of serpapi_pagination already include it.
Serpapi Parameters
device
Optional
Parameter defines the device to use to get the results. It can be set to desktop (default) to use a regular browser, tablet to use a tablet browser (currently using iPads), or mobile to use a mobile browser.
no_cache
Optional
Parameter will force SerpApi to fetch the Booking.com results even if a cached version is already present. A cache is served only if the query and all parameters are exactly the same. Cache expires after 1h. Cached searches are free, and are not counted towards your searches per month. It can be set to false (default) to allow results from the cache, or true to disallow results from the cache. no_cache and async parameters should not be used together.
async
Optional
Parameter defines the way you want to submit your search to SerpApi. It can be set to false (default) to open an HTTP connection and keep it open until you got your search results, or true to just submit your search to SerpApi and retrieve them later. In this case, you'll need to use our Searches Archive API to retrieve your results. async and no_cache parameters should not be used together. async should not be used on accounts with Ludicrous Speed enabled.
zero_trace
Optional
Enterprise only. Parameter enables ZeroTrace mode. It can be set to false (default) or true. Enable this mode to skip storing search parameters, search files, and search metadata on our servers. This may make debugging more difficult.
output
Optional
Parameter defines the format of the result. It can be set to json (default) to get a structured JSON of the results, html to get the raw HTML retrieved, or md to get a markdown-formatted version optimized for LLMs and AI agents.
json_restrictor
Optional
Parameter defines the fields you want to include in the output, reducing payload size for faster response. See the JSON Restrictor documentation for more details.
API Results
JSON Results
JSON output includes structured data for Properties and Filters.
A search status is accessible through search_metadata.status.
It flows this way: Processing -> Success || Error.
If a search has failed, error will contain an error message.
search_metadata.id is the search ID inside SerpApi.
HTML Results
This API does not have a full HTML response, only text.
search_metadata.prettify_html_file contains a link to the prettified version of the result.
It is displayed in the playground.
Markdown Results
Markdown output is optimized for LLMs and AI agents. It provides most of the same informational content as JSON
in a token-efficient format using tables, markdown links, and YAML frontmatter.
To access, use the output=md parameter, the /search.md endpoint, or request header Accept: text/markdown.
API Examples
Result for q: New York
check_in_date and check_out_date set the dates of the stay. Prices are for the whole stay, with the price per night and the taxes and fees that aren't included, in the currency of each property by default. When dates aren't set, Booking.com returns properties without prices.filters has the Booking.com filters available for the destination, with links to the SerpApi searches with each of them.
{
"search_metadata": {
"id": "6acf95c8dbbb465aa27b0074",
"status": "Success",
"json_endpoint": "https://serpapi.com/searches/LOsX6LP8Hfgr6tfgxUHQRm8phiqmvXCTRwCFRo0p3yY/6acf95c8dbbb465aa27b0074.json",
"markdown_endpoint": "https://serpapi.com/searches/LOsX6LP8Hfgr6tfgxUHQRm8phiqmvXCTRwCFRo0p3yY/6acf95c8dbbb465aa27b0074.md",
"created_at": "2026-10-14 14:46:32 UTC",
"processed_at": "2026-10-14 14:46:32 UTC",
"booking_url": "https://www.booking.com/searchresults.html?ss=New+York&checkin=2026-11-14&checkout=2026-11-17&group_adults=2&no_rooms=1&group_children=0&lang=en-us&selected_currency=hotel_currency",
"raw_html_file": "https://serpapi.com/searches/LOsX6LP8Hfgr6tfgxUHQRm8phiqmvXCTRwCFRo0p3yY/6acf95c8dbbb465aa27b0074.html",
"prettify_html_file": "https://serpapi.com/searches/LOsX6LP8Hfgr6tfgxUHQRm8phiqmvXCTRwCFRo0p3yY/6acf95c8dbbb465aa27b0074.prettify",
"total_time_taken": 1.44
},
"search_parameters": {
"engine": "booking",
"q": "New York",
"hl": "en-us",
"currency": "hotel_currency",
"check_in_date": "2026-11-14",
"check_out_date": "2026-11-17",
"adults": 2,
"rooms": 1,
"device": "desktop"
},
"search_information": {
"destination": "New York",
"total_results": 534
},
"properties": [
{
"position": 1,
"property_id": 181844,
"name": "Citadines Connect Fifth Avenue - Times Square New York",
"link": "https://www.booking.com/hotel/us/citadines-connect-fifth-avenue-new-york.html?checkin=2026-11-14&checkout=2026-11-17&group_adults=2&no_rooms=1&group_children=0&lang=en-us&selected_currency=hotel_currency",
"type": "Hotel",
"hotel_class": 3,
"preferred_partner": true,
"location": "Manhattan, New York",
"address": "15 West 45th Street",
"distance": "0.9 miles from downtown",
"public_transport": "5th Avenue station is within 350 yards",
"gps_coordinates": {
"latitude": 40.7557513277007,
"longitude": -73.9801412075758
},
"rating": 7.7,
"rating_text": "Good",
"reviews": 2425,
"location_rating": 9.5,
"external_rating": 8.9,
"external_rating_text": "Excellent",
"external_reviews": 377,
"price": "$1,076.30",
"extracted_price": 1076.3,
"currency": "USD",
"old_price": "$1,499",
"extracted_old_price": 1499,
"price_per_night": "$328.77",
"extracted_price_per_night": 328.77,
"taxes_and_fees": "$170.80",
"extracted_taxes_and_fees": 170.8,
"deals": [
"Limited-time Deal"
],
"rooms": [
{
"name": "Premier King Room",
"beds": 1,
"bed_options": [
{
"king_bed": 1
}
]
}
],
"meal_plan": "Breakfast included",
"free_cancellation": true,
"free_cancellation_until": "2026-11-11T05:00:00Z",
"no_prepayment": true,
"availability": "We have 6 left at this price",
"eco_certified": true,
"thumbnail": "https://cf.bstatic.com/xdata/images/hotel/square600/159884656.jpg?k=8eba328be27e407d34ce530a3e2cccb6f7193d0ce94b94339c843d39aed93527&o="
},
{
"position": 3,
"property_id": 186118,
"name": "The Mayfair Hotel Times Square, an Ascend Collection",
"link": "https://www.booking.com/hotel/us/mayfair-new-york.html?checkin=2026-11-14&checkout=2026-11-17&group_adults=2&no_rooms=1&group_children=0&lang=en-us&selected_currency=hotel_currency",
"type": "Hotel",
"hotel_class": 4,
"preferred_partner": true,
"location": "Manhattan, New York",
"address": "242 West 49th Street",
"distance": "0.5 miles from downtown",
"public_transport": "50th Street station is within 150 yards",
"gps_coordinates": {
"latitude": 40.7613110389328,
"longitude": -73.9859206974506
},
"rating": 8.4,
"rating_text": "Very Good",
"reviews": 4622,
"location_rating": 9.6,
"price": "$645.89",
"extracted_price": 645.89,
"currency": "USD",
"price_per_night": "$186.67",
"extracted_price_per_night": 186.67,
"taxes_and_fees": "$93.10",
"extracted_taxes_and_fees": 93.1,
"rooms": [
{
"name": "Boutique Standard ",
"beds": 1,
"bed_options": [
{
"full_bed": 1
}
]
}
],
"free_cancellation": true,
"free_cancellation_until": "2026-11-11T05:00:00Z",
"availability": "We have 1 left at this price",
"thumbnail": "https://cf.bstatic.com/xdata/images/hotel/square600/769705487.jpg?k=ff9dc4db44ff64421ee205dcfc2f85540ce6e76ff8d1fc4b0e1734cac71b227c&o="
},
...
],
"filters": [
{
"title": "Popular filters",
"options": [
{
"name": "Private bathroom",
"value": "roomfacility=38",
"count": 417,
"serpapi_link": "https://serpapi.com/search.json?adults=2&check_in_date=2026-11-14&check_out_date=2026-11-17¤cy=hotel_currency&device=desktop&engine=booking&hl=en-us&q=New+York&rooms=1&nflt=roomfacility%3D38"
},
{
"name": "4 stars",
"value": "class=4",
"count": 264,
"serpapi_link": "https://serpapi.com/search.json?adults=2&check_in_date=2026-11-14&check_out_date=2026-11-17¤cy=hotel_currency&device=desktop&engine=booking&hl=en-us&q=New+York&rooms=1&nflt=class%3D4"
},
...
]
},
{
"title": "Property Type",
"options": [
{
"name": "Hotels",
"value": "ht_id=204",
"count": 407,
"serpapi_link": "https://serpapi.com/search.json?adults=2&check_in_date=2026-11-14&check_out_date=2026-11-17¤cy=hotel_currency&device=desktop&engine=booking&hl=en-us&q=New+York&rooms=1&nflt=ht_id%3D204"
},
{
"name": "Apartments",
"value": "ht_id=201",
"count": 94,
"serpapi_link": "https://serpapi.com/search.json?adults=2&check_in_date=2026-11-14&check_out_date=2026-11-17¤cy=hotel_currency&device=desktop&engine=booking&hl=en-us&q=New+York&rooms=1&nflt=ht_id%3D201"
},
...
]
},
...
],
"serpapi_pagination": {
"current": 1,
"next": "https://serpapi.com/search.json?adults=2&check_in_date=2026-11-14&check_out_date=2026-11-17¤cy=hotel_currency&device=desktop&engine=booking&hl=en-us&offset=25&q=New+York&rooms=1&session_token=JI86ZXicDY3BkkMwAEC_xl0indZxQ5Ghg2wT9BaZJahS1Urd9l_2p_ay37Jm3u29mff9U3a3-vcPANZ7z4tvz5-86CSkV_JWdiEEtA3oWZrFUbnISKcp4sIZROXuJzSI5sA1iILEV3jakXDMRtqfzW593tt8EeOHX4XMyss-jl_6CFJEMFM0WPfdrBL1ktk1a2iQyFUWJ40vZH6b_DzE2_HwkDNreDW1ePfwDIg3QLgJd-H-XFsI3ZGDe5V_QW62zNk0KZKMkjWpAXRiWoRIrFuvj4bl_gMU6Uxk",
"other_pages": {
"2": "https://serpapi.com/search.json?adults=2&check_in_date=2026-11-14&check_out_date=2026-11-17¤cy=hotel_currency&device=desktop&engine=booking&hl=en-us&offset=25&q=New+York&rooms=1&session_token=JI86ZXicDY3BkkMwAEC_xl0indZxQ5Ghg2wT9BaZJahS1Urd9l_2p_ay37Jm3u29mff9U3a3-vcPANZ7z4tvz5-86CSkV_JWdiEEtA3oWZrFUbnISKcp4sIZROXuJzSI5sA1iILEV3jakXDMRtqfzW593tt8EeOHX4XMyss-jl_6CFJEMFM0WPfdrBL1ktk1a2iQyFUWJ40vZH6b_DzE2_HwkDNreDW1ePfwDIg3QLgJd-H-XFsI3ZGDe5V_QW62zNk0KZKMkjWpAXRiWoRIrFuvj4bl_gMU6Uxk",
"3": "https://serpapi.com/search.json?adults=2&check_in_date=2026-11-14&check_out_date=2026-11-17¤cy=hotel_currency&device=desktop&engine=booking&hl=en-us&offset=50&q=New+York&rooms=1&session_token=JI86ZXicDY3BkkMwAEC_xl0indZxQ5Ghg2wT9BaZJahS1Urd9l_2p_ay37Jm3u29mff9U3a3-vcPANZ7z4tvz5-86CSkV_JWdiEEtA3oWZrFUbnISKcp4sIZROXuJzSI5sA1iILEV3jakXDMRtqfzW593tt8EeOHX4XMyss-jl_6CFJEMFM0WPfdrBL1ktk1a2iQyFUWJ40vZH6b_DzE2_HwkDNreDW1ePfwDIg3QLgJd-H-XFsI3ZGDe5V_QW62zNk0KZKMkjWpAXRiWoRIrFuvj4bl_gMU6Uxk",
"4": "https://serpapi.com/search.json?adults=2&check_in_date=2026-11-14&check_out_date=2026-11-17¤cy=hotel_currency&device=desktop&engine=booking&hl=en-us&offset=75&q=New+York&rooms=1&session_token=JI86ZXicDY3BkkMwAEC_xl0indZxQ5Ghg2wT9BaZJahS1Urd9l_2p_ay37Jm3u29mff9U3a3-vcPANZ7z4tvz5-86CSkV_JWdiEEtA3oWZrFUbnISKcp4sIZROXuJzSI5sA1iILEV3jakXDMRtqfzW593tt8EeOHX4XMyss-jl_6CFJEMFM0WPfdrBL1ktk1a2iQyFUWJ40vZH6b_DzE2_HwkDNreDW1ePfwDIg3QLgJd-H-XFsI3ZGDe5V_QW62zNk0KZKMkjWpAXRiWoRIrFuvj4bl_gMU6Uxk",
...
},
"session_token": "JI86ZXicDY3BkkMwAEC_xl0indZxQ5Ghg2wT9BaZJahS1Urd9l_2p_ay37Jm3u29mff9U3a3-vcPANZ7z4tvz5-86CSkV_JWdiEEtA3oWZrFUbnISKcp4sIZROXuJzSI5sA1iILEV3jakXDMRtqfzW593tt8EeOHX4XMyss-jl_6CFJEMFM0WPfdrBL1ktk1a2iQyFUWJ40vZH6b_DzE2_HwkDNreDW1ePfwDIg3QLgJd-H-XFsI3ZGDe5V_QW62zNk0KZKMkjWpAXRiWoRIrFuvj4bl_gMU6Uxk"
}
}
Result for adults, children, children_ages, and property_types
adults, children, and rooms set the guests of the stay. Booking.com needs the age of each child at check-out, set with children_ages. rooms of each property has the rooms or units Booking.com recommends for the guests, with their type, beds, bedrooms, bathrooms, and size. bed_options has their beds by type, or the choices of beds Booking.com offers.
property_types only shows properties of these types: here apartments and vacation homes. Head to the Booking.com property types page for a full list of supported property types.
{
"properties": [
{
"position": 1,
"property_id": 14990525,
"name": "Luxurious Residence Saint-Honore - Elysée Collection",
"link": "https://www.booking.com/hotel/fr/elysee-collection-iii-by-onefinestay.html?checkin=2026-11-14&checkout=2026-11-17&group_adults=2&no_rooms=1&group_children=2&age=5&age=9&lang=en-us&selected_currency=hotel_currency",
"type": "Apartment",
"hotel_class": 4,
"preferred_partner": true,
"location": "8th arr., Paris",
"address": "Rue de Miromesnil",
"distance": "1.9 miles from downtown",
"public_transport": "Miromesnil station is within 250 yards",
"gps_coordinates": {
"latitude": 48.871891,
"longitude": 2.316072
},
"rating": 9.6,
"rating_text": "Exceptional",
"reviews": 18,
"location_rating": 10.0,
"external_rating": 9.9,
"external_rating_text": "Exceptional",
"external_reviews": 17,
"price": "€ 1,120.28",
"extracted_price": 1120.28,
"currency": "EUR",
"old_price": "€ 1,353",
"extracted_old_price": 1353,
"price_per_night": "€ 373.43",
"extracted_price_per_night": 373.43,
"taxes_and_fees": "€ 15.60",
"extracted_taxes_and_fees": 15.6,
"rooms": [
{
"name": "One-Bedroom Apartment",
"type": "Entire apartment",
"beds": 2,
"bed_options": [
{
"king_bed": 1,
"sofa_bed": 1
}
],
"bedrooms": 1,
"bathrooms": 1,
"kitchens": 1,
"living_rooms": 1,
"size": "474 ft²"
}
],
"free_cancellation": true,
"free_cancellation_until": "2026-10-30T23:00:00Z",
"thumbnail": "https://cf.bstatic.com/xdata/images/hotel/square600/766983866.jpg?k=d4718eb61a3860a7333e2a8b235fd37d4e8160d1faf66941e64456770b72a5ea&o="
},
{
"position": 3,
"property_id": 51785,
"name": "Aparthotel Adagio Paris Bercy Village",
"link": "https://www.booking.com/hotel/fr/pvbercy.html?checkin=2026-11-14&checkout=2026-11-17&group_adults=2&no_rooms=1&group_children=2&age=5&age=9&lang=en-us&selected_currency=hotel_currency",
"type": "Condo hotel",
"hotel_class": 4,
"preferred_partner": true,
"location": "12th arr., Paris",
"address": "1/7 cour du Minervois",
"distance": "2.4 miles from downtown",
"public_transport": "Cour Saint-Émilion station is within 250 yards",
"gps_coordinates": {
"latitude": 48.8317578777481,
"longitude": 2.38701581954956
},
"rating": 8.0,
"rating_text": "Very Good",
"reviews": 2244,
"price": "€ 684.55",
"extracted_price": 684.55,
"currency": "EUR",
"price_per_night": "€ 228.18",
"extracted_price_per_night": 228.18,
"taxes_and_fees": "€ 119.15",
"extracted_taxes_and_fees": 119.15,
"rooms": [
{
"name": "One-Bedroom Apartment (4 Adults)",
"type": "Entire apartment",
"beds": 3,
"bed_options": [
{
"full_bed": 1,
"sofa_bed": 2
}
],
"bedrooms": 1,
"bathrooms": 1,
"kitchens": 1,
"living_rooms": 1,
"size": "431 ft²"
}
],
"free_cancellation": true,
"free_cancellation_until": "2026-11-13T23:00:00Z",
"no_prepayment": true,
"thumbnail": "https://cf.bstatic.com/xdata/images/hotel/square600/838276572.jpg?k=829c995c99893ba0b1a18abe10a8bcbd70ba209a8a9c2890a50f40e0e52832b6&o="
},
...
]
}
Result for flex_window: 2
flex_window searches dates up to 1, 2, 3, or 7 days earlier or later than check_in_date and check_out_date, for the best price of each property. Each property then has the dates of its price in check_in_date and check_out_date, and its link opens Booking.com for these dates.
{
"properties": [
{
"position": 1,
"property_id": 2356458,
"name": "Welcome Hotel",
"link": "https://www.booking.com/hotel/fr/welcome-paris.html?checkin=2026-11-15&checkout=2026-11-18&group_adults=2&no_rooms=1&group_children=0&lang=en-us&selected_currency=hotel_currency",
"type": "Hotel",
"preferred_partner": true,
"location": "6th arr., Paris",
"address": "66 Rue de Seine",
"distance": "0.7 miles from downtown",
"public_transport": "Mabillon station is within 150 yards",
"gps_coordinates": {
"latitude": 48.8531421229546,
"longitude": 2.33687907853891
},
"rating": 8.5,
"rating_text": "Very Good",
"reviews": 1535,
"location_rating": 9.7,
"check_in_date": "2026-11-15",
"check_out_date": "2026-11-18",
"price": "€ 486.86",
"extracted_price": 486.86,
"currency": "EUR",
"old_price": "€ 1,080",
"extracted_old_price": 1080,
"price_per_night": "€ 162.29",
"extracted_price_per_night": 162.29,
"taxes_and_fees": "€ 72.42",
"extracted_taxes_and_fees": 72.42,
"deals": [
"Limited-time Deal"
],
"rooms": [
{
"name": "Classic Double Room",
"beds": 1,
"bed_options": [
{
"full_bed": 1
}
]
}
],
"availability": "We have 2 left at this price",
"thumbnail": "https://cf.bstatic.com/xdata/images/hotel/square600/348868115.jpg?k=f0fef0d2a3c21df80a482e3936dd127e5f88d4bb196c81a1dec065d66457e2ba&o="
},
{
"position": 3,
"property_id": 226601,
"name": "Grand Hôtel de L'Univers Saint-Germain",
"link": "https://www.booking.com/hotel/fr/grand-hotel-de-lunivers.html?checkin=2026-11-15&checkout=2026-11-18&group_adults=2&no_rooms=1&group_children=0&lang=en-us&selected_currency=hotel_currency",
"type": "Hotel",
"hotel_class": 3,
"preferred_partner": true,
"location": "6th arr., Paris",
"address": "6 Rue Grégoire de Tours",
"distance": "0.7 miles from downtown",
"public_transport": "Odéon station is within 200 yards",
"gps_coordinates": {
"latitude": 48.8535577059287,
"longitude": 2.33791261911392
},
"rating": 8.9,
"rating_text": "Excellent",
"reviews": 2699,
"location_rating": 9.8,
"check_in_date": "2026-11-15",
"check_out_date": "2026-11-18",
"price": "€ 527.27",
"extracted_price": 527.27,
"currency": "EUR",
"price_per_night": "€ 175.76",
"extracted_price_per_night": 175.76,
"taxes_and_fees": "€ 85.91",
"extracted_taxes_and_fees": 85.91,
"rooms": [
{
"name": "Classic Double Room",
"beds": 1,
"bed_options": [
{
"full_bed": 1
}
]
}
],
"free_cancellation": true,
"free_cancellation_until": "2026-11-12T23:00:00Z",
"availability": "We have 1 left at this price",
"thumbnail": "https://cf.bstatic.com/xdata/images/hotel/square600/79464287.jpg?k=191dd38cb8efaca13e3c3abba89f5a2172cd24ad015dd68a2822e97c0079e51d&o="
},
...
]
}
Result with filters and sorting
Booking.com's most used filters are available as parameters: the property rating (hotel_class), the minimum review score (rating), the price per night (min_price and max_price), free_cancellation, and property_types. sort_by sorts the properties, here by price.
{
"properties": [
{
"position": 1,
"property_id": 4726933,
"name": "Casa Cola",
"link": "https://www.booking.com/hotel/it/casa-cola-roma.html?checkin=2026-11-14&checkout=2026-11-17&group_adults=2&no_rooms=1&group_children=0&lang=en-us&selected_currency=hotel_currency",
"type": "Apartment",
"hotel_class": 4,
"location": "Aurelio, Rome",
"address": "Via Cosimo Tornabuoni, 104",
"distance": "4.7 miles from downtown",
"gps_coordinates": {
"latitude": 41.9001839556988,
"longitude": 12.3906883133171
},
"rating": 9.2,
"rating_text": "Wonderful",
"reviews": 27,
"external_rating": 9.6,
"external_rating_text": "Exceptional",
"external_reviews": 173,
"price": "€ 163.64",
"extracted_price": 163.64,
"currency": "EUR",
"price_per_night": "€ 54.55",
"extracted_price_per_night": 54.55,
"taxes_and_fees": "€ 52.36",
"extracted_taxes_and_fees": 52.36,
"rooms": [
{
"name": "One-Bedroom Apartment",
"type": "Entire apartment",
"beds": 2,
"bed_options": [
{
"sofa_bed": 1,
"queen_bed": 1
}
],
"bedrooms": 1,
"bathrooms": 1,
"kitchens": 1,
"living_rooms": 1,
"size": "431 ft²"
}
],
"free_cancellation": true,
"free_cancellation_until": "2026-10-30T23:00:00Z",
"thumbnail": "https://cf.bstatic.com/xdata/images/hotel/square600/334914062.jpg?k=bc2ba937ffd77a338bf2539718584292aee01483fc3811902a397e21886f3f5e&o="
},
{
"position": 2,
"property_id": 12706797,
"name": "Venus Allbnb",
"link": "https://www.booking.com/hotel/it/venus-allbnb.html?checkin=2026-11-14&checkout=2026-11-17&group_adults=2&no_rooms=1&group_children=0&lang=en-us&selected_currency=hotel_currency",
"type": "Guesthouse",
"hotel_class": 4,
"location": "Appio Latino, Rome",
"address": "Via Valerio Flacco, 11 piano 0",
"distance": "4.7 miles from downtown",
"public_transport": "Lucio Sestio station is within 450 yards",
"gps_coordinates": {
"latitude": 41.8616089,
"longitude": 12.560936
},
"rating": 8.1,
"rating_text": "Very Good",
"reviews": 242,
"price": "€ 173.10",
"extracted_price": 173.1,
"currency": "EUR",
"price_per_night": "€ 57.70",
"extracted_price_per_night": 57.7,
"taxes_and_fees": "€ 30",
"extracted_taxes_and_fees": 30,
"rooms": [
{
"name": "Deluxe Room (2 Adults + 1 Child)",
"beds": 2,
"bed_options": [
{
"twin_bed": 1,
"full_bed": 1
}
]
}
],
"free_cancellation": true,
"free_cancellation_until": "2026-10-30T23:00:00Z",
"availability": "We have 1 left at this price",
"thumbnail": "https://cf.bstatic.com/xdata/images/hotel/square600/600917604.jpg?k=35087a542a6b6c7296da274e06b4a0e0275230cc252f5dfa23213f1e6c377c33&o="
},
...
]
}
Result for nflt: di=1127
nflt sets any other Booking.com filter, like districts, brands, landmarks, distance from the center, or room amenities. It's the nflt parameter of Booking.com search URLs: a semicolon-separated list of filters, here the Theatreland neighborhood of London.
The filters available for a search are in filters, with their value to use in nflt, and their serpapi_link to get the results with the filter.
{
"filters": [
...
{
"title": "Neighborhood",
"options": [
{
"name": "Theatreland",
"value": "di=1127",
"count": 213,
"selected": true,
"serpapi_link": "https://serpapi.com/search.json?adults=2&check_in_date=2026-11-14&check_out_date=2026-11-17¤cy=hotel_currency&device=desktop&engine=booking&hl=en-us&q=London&rooms=1&nflt=di%3D1127"
},
{
"name": "Central London",
"value": "di=2280",
"count": 2510,
"serpapi_link": "https://serpapi.com/search.json?adults=2&check_in_date=2026-11-14&check_out_date=2026-11-17¤cy=hotel_currency&device=desktop&engine=booking&hl=en-us&q=London&rooms=1&nflt=di%3D1127%3Bdi%3D2280"
},
{
"name": "Guests' favorite area",
"value": "di=9009",
"count": 2081,
"serpapi_link": "https://serpapi.com/search.json?adults=2&check_in_date=2026-11-14&check_out_date=2026-11-17¤cy=hotel_currency&device=desktop&engine=booking&hl=en-us&q=London&rooms=1&nflt=di%3D1127%3Bdi%3D9009"
},
...
]
},
...
{
"title": "Brands",
"options": [
{
"name": "Z Hotels",
"value": "chaincode=8718",
"count": 8,
"serpapi_link": "https://serpapi.com/search.json?adults=2&check_in_date=2026-11-14&check_out_date=2026-11-17¤cy=hotel_currency&device=desktop&engine=booking&hl=en-us&q=London&rooms=1&nflt=di%3D1127%3Bchaincode%3D8718"
},
{
"name": "Thistle",
"value": "chaincode=1422",
"count": 1,
"serpapi_link": "https://serpapi.com/search.json?adults=2&check_in_date=2026-11-14&check_out_date=2026-11-17¤cy=hotel_currency&device=desktop&engine=booking&hl=en-us&q=London&rooms=1&nflt=di%3D1127%3Bchaincode%3D1422"
},
{
"name": "Montcalm Collection",
"value": "chaincode=1705",
"count": 1,
"serpapi_link": "https://serpapi.com/search.json?adults=2&check_in_date=2026-11-14&check_out_date=2026-11-17¤cy=hotel_currency&device=desktop&engine=booking&hl=en-us&q=London&rooms=1&nflt=di%3D1127%3Bchaincode%3D1705"
},
...
]
},
...
]
}
Result for hl: ja and currency: JPY
hl sets the language of the results, and currency the currency of their prices. currency defaults to hotel_currency, the currency of each property, like Booking.com does for visitors who haven't picked one. Head to the Booking.com languages page and the Booking.com currencies page for a full list of supported languages and currencies. Recognized property type values are normalized to English; other types retain Booking.com's name.
{
"properties": [
{
"position": 1,
"property_id": 6412077,
"name": "アパホテル〈六本木SIX〉",
"link": "https://www.booking.com/hotel/jp/apahoteru-liu-ben-mu-six.html?checkin=2026-11-14&checkout=2026-11-17&group_adults=2&no_rooms=1&group_children=0&lang=ja&selected_currency=JPY",
"type": "Hotel",
"hotel_class": 3,
"preferred_partner": true,
"location": "港区, 東京",
"address": "Minato-ku, Roppongi 2-3-11",
"distance": "中心部から2.3km ",
"public_transport": "200m以内にRoppongi-itchome駅があります",
"gps_coordinates": {
"latitude": 35.666314,
"longitude": 139.737326
},
"rating": 8.2,
"rating_text": "とても良い",
"reviews": 10195,
"price": "¥55,808",
"extracted_price": 55808,
"currency": "JPY",
"old_price": "¥62,009",
"extracted_old_price": 62009,
"price_per_night": "¥18,603",
"extracted_price_per_night": 18603,
"taxes_and_fees": "¥5,581",
"extracted_taxes_and_fees": 5581,
"price_disclaimer": "追加料金が発生する場合があります",
"rooms": [
{
"name": "ダブルルーム 禁煙 ",
"beds": 1,
"bed_options": [
{
"full_bed": 1
}
]
}
],
"free_cancellation": true,
"free_cancellation_until": "2026-11-12T15:00:00Z",
"no_prepayment": true,
"thumbnail": "https://cf.bstatic.com/xdata/images/hotel/square600/263416635.jpg?k=a2e50c240fb7909dee49a2fb4fc12b901e557adefa3e5cb74e47ab9f4bd4c5b6&o="
},
...
]
}
Result for device: mobile
Booking.com offers some prices only on mobile devices. device set to mobile gets the results of Booking.com's mobile website, with these prices and their Mobile-only price deal.
{
"properties": [
{
"position": 1,
"property_id": 14806280,
"name": "Boutique Socors",
"link": "https://www.booking.com/hotel/es/boutique-socors.html?checkin=2026-11-14&checkout=2026-11-17&group_adults=2&no_rooms=1&group_children=0&lang=en-us&selected_currency=hotel_currency",
"type": "Apartment",
"hotel_class": 4,
"location": "Sants-Montjuïc, Barcelona",
"address": "Carrer del Socors, 21",
"distance": "2.2 miles from downtown",
"gps_coordinates": {
"latitude": 41.3766983,
"longitude": 2.1306325
},
"rating": 9.8,
"rating_text": "Exceptional",
"reviews": 4,
"price": "€ 395.64",
"extracted_price": 395.64,
"currency": "EUR",
"old_price": "€ 431.82",
"extracted_old_price": 431.82,
"price_per_night": "€ 108.55",
"extracted_price_per_night": 108.55,
"taxes_and_fees": "€ 95.26",
"extracted_taxes_and_fees": 95.26,
"deals": [
"Mobile-only price"
],
"rooms": [
{
"name": "One-Bedroom Apartment",
"type": "Entire apartment",
"beds": 2,
"bed_options": [
{
"full_bed": 1,
"sofa_bed": 1
}
],
"bedrooms": 1,
"bathrooms": 1,
"kitchens": 1,
"living_rooms": 1,
"size": "646 ft²"
}
],
"thumbnail": "https://cf.bstatic.com/xdata/images/hotel/max1024x768/735514519.jpg?k=99c8550d3bf6634d0d397b0211ad74150890a596afe2fb626f0f71cd69b9b244&o="
},
...
]
}
Result for offset: 25
offset skips the given number of properties, and limit sets the number of properties per page: 25 by default, like on Booking.com, and up to 100. Booking.com sometimes returns a few more properties: sponsored ones, or the searched property. offset can be up to 1,000: Booking.com returns the same properties for larger offsets, so serpapi_pagination stops there, even when Booking.com finds more properties. serpapi_pagination has the SerpApi links to get the other pages.
Booking.com ranks properties differently for each visitor, so the links keep the same Booking.com visitor with session_token, to repeat fewer properties between pages.
{
"serpapi_pagination": {
"current": 2,
"previous": "https://serpapi.com/search.json?adults=2&check_in_date=2026-11-14&check_out_date=2026-11-17¤cy=hotel_currency&device=desktop&engine=booking&hl=en-us&q=New+York&rooms=1&session_token=yBIV7HicDc1LcoIwAIDh07CXBFpZJmRIDc-CBMKOREdeog4PkV3v0kvV05T1P9_8P7-y7S9_b11Pr85UUGtMuGgViLvDq7JEWQJLAw5c0tCTtSuTHQsvBHtq6unCxXITg4gQnnWZkw7uC78qXTfO0FeI0dBHPh27z6oFgfJMo595McusWU8mFvzj5GQdONhroD89ogFcsW0k1coe3dTvmjugz_qIJgzNAZ7tM61Ry_QrayKVc-AnNyeIjddGbGKsC08r9QAFir7HfMjbhi5wS0elQfIPaLtLXQ",
"next": "https://serpapi.com/search.json?adults=2&check_in_date=2026-11-14&check_out_date=2026-11-17¤cy=hotel_currency&device=desktop&engine=booking&hl=en-us&offset=50&q=New+York&rooms=1&session_token=yBIV7HicDc1LcoIwAIDh07CXBFpZJmRIDc-CBMKOREdeog4PkV3v0kvV05T1P9_8P7-y7S9_b11Pr85UUGtMuGgViLvDq7JEWQJLAw5c0tCTtSuTHQsvBHtq6unCxXITg4gQnnWZkw7uC78qXTfO0FeI0dBHPh27z6oFgfJMo595McusWU8mFvzj5GQdONhroD89ogFcsW0k1coe3dTvmjugz_qIJgzNAZ7tM61Ry_QrayKVc-AnNyeIjddGbGKsC08r9QAFir7HfMjbhi5wS0elQfIPaLtLXQ",
"other_pages": {
"1": "https://serpapi.com/search.json?adults=2&check_in_date=2026-11-14&check_out_date=2026-11-17¤cy=hotel_currency&device=desktop&engine=booking&hl=en-us&q=New+York&rooms=1&session_token=yBIV7HicDc1LcoIwAIDh07CXBFpZJmRIDc-CBMKOREdeog4PkV3v0kvV05T1P9_8P7-y7S9_b11Pr85UUGtMuGgViLvDq7JEWQJLAw5c0tCTtSuTHQsvBHtq6unCxXITg4gQnnWZkw7uC78qXTfO0FeI0dBHPh27z6oFgfJMo595McusWU8mFvzj5GQdONhroD89ogFcsW0k1coe3dTvmjugz_qIJgzNAZ7tM61Ry_QrayKVc-AnNyeIjddGbGKsC08r9QAFir7HfMjbhi5wS0elQfIPaLtLXQ",
"3": "https://serpapi.com/search.json?adults=2&check_in_date=2026-11-14&check_out_date=2026-11-17¤cy=hotel_currency&device=desktop&engine=booking&hl=en-us&offset=50&q=New+York&rooms=1&session_token=yBIV7HicDc1LcoIwAIDh07CXBFpZJmRIDc-CBMKOREdeog4PkV3v0kvV05T1P9_8P7-y7S9_b11Pr85UUGtMuGgViLvDq7JEWQJLAw5c0tCTtSuTHQsvBHtq6unCxXITg4gQnnWZkw7uC78qXTfO0FeI0dBHPh27z6oFgfJMo595McusWU8mFvzj5GQdONhroD89ogFcsW0k1coe3dTvmjugz_qIJgzNAZ7tM61Ry_QrayKVc-AnNyeIjddGbGKsC08r9QAFir7HfMjbhi5wS0elQfIPaLtLXQ",
"4": "https://serpapi.com/search.json?adults=2&check_in_date=2026-11-14&check_out_date=2026-11-17¤cy=hotel_currency&device=desktop&engine=booking&hl=en-us&offset=75&q=New+York&rooms=1&session_token=yBIV7HicDc1LcoIwAIDh07CXBFpZJmRIDc-CBMKOREdeog4PkV3v0kvV05T1P9_8P7-y7S9_b11Pr85UUGtMuGgViLvDq7JEWQJLAw5c0tCTtSuTHQsvBHtq6unCxXITg4gQnnWZkw7uC78qXTfO0FeI0dBHPh27z6oFgfJMo595McusWU8mFvzj5GQdONhroD89ogFcsW0k1coe3dTvmjugz_qIJgzNAZ7tM61Ry_QrayKVc-AnNyeIjddGbGKsC08r9QAFir7HfMjbhi5wS0elQfIPaLtLXQ",
...
},
"session_token": "yBIV7HicDc1LcoIwAIDh07CXBFpZJmRIDc-CBMKOREdeog4PkV3v0kvV05T1P9_8P7-y7S9_b11Pr85UUGtMuGgViLvDq7JEWQJLAw5c0tCTtSuTHQsvBHtq6unCxXITg4gQnnWZkw7uC78qXTfO0FeI0dBHPh27z6oFgfJMo595McusWU8mFvzj5GQdONhroD89ogFcsW0k1coe3dTvmjugz_qIJgzNAZ7tM61Ry_QrayKVc-AnNyeIjddGbGKsC08r9QAFir7HfMjbhi5wS0elQfIPaLtLXQ"
}
}
JSON Structure Overview
{
...
"search_information": {
"destination": "String - Destination Booking.com searched, in the language of the search. (Ex. New York)",
"total_results": "Integer - Number of properties found. Booking.com sometimes omits the count, including for country searches. The count can exceed the results accessible through pagination."
},
"properties": [
{
"position": "Integer - Position of the property in the results of the page.",
"property_id": "Integer - Booking.com ID of the property.",
"name": "String - Name of the property.",
"link": "String - Link to the property on Booking.com, for the dates and guests of the search.",
"type": "String - Type of the property. Recognized types are normalized to English; other types retain Booking.com's name. (Ex. Hotel, Apartment, Vacation home)",
"hotel_class": "Integer - Property rating, from 1 to 5: stars, or Booking.com's own rating for homes and apartments.",
"sponsored": "Boolean - True for properties shown as an ad.",
"featured": "Boolean - True for properties Booking.com ranks higher because they pay it a higher commission. Booking.com labels them as Featured.",
"preferred_partner": "Boolean - True for properties of Booking.com's Preferred Partner Program.",
"newly_opened": "Boolean - True for properties new to Booking.com.",
"location": "String - District and city of the property. (Ex. Tribeca, New York)",
"address": "String - Address of the property.",
"distance": "String - Distance from the center of the destination. (Ex. 0.9 miles from downtown)",
"public_transport": "String - Nearest public transport station. (Ex. Bleecker Street station is within 200 yards)",
"beach_distance": "String - Distance from the nearest beach. (Ex. Beachfront)",
"ski_lift_distance": "String - Distance from the nearest ski lift.",
"gps_coordinates": {
"latitude": "Float - Latitude of the property.",
"longitude": "Float - Longitude of the property."
},
"rating": "Float - Review score of the property, out of 10.",
"rating_text": "String - Booking.com's review score label. (Ex. Very Good, Review score)",
"reviews": "Integer - Number of reviews of the property.",
"location_rating": "Float - Review score of the location of the property, out of 10.",
"value_for_money_rating": "Float - Review score of the value for money of the property, out of 10. Booking.com shows it instead of the location score for some properties.",
"comfort_rating": "Float - Review score of the comfort of the property, out of 10. Booking.com shows it instead of the location score for some properties, mostly for long stays.",
"breakfast_rating": "Float - Review score of the breakfast of the property, out of 10. Booking.com shows it instead of the location score for some properties when filtering by meals.",
"wifi_rating": "Float - Review score of the Wi-Fi of the property, out of 10. Booking.com shows it instead of the location score for some properties when filtering by free Wi-Fi.",
"external_rating": "Float - Review score of the property on other travel websites, out of 10. Can be returned alongside Booking.com reviews.",
"external_rating_text": "String - Review score of the property on other travel websites in words.",
"external_reviews": "Integer - Number of reviews of the property on other travel websites.",
"check_in_date": "String - Check-in date of the price, with flex_window. (Ex. 2026-11-15)",
"check_out_date": "String - Check-out date of the price, with flex_window. (Ex. 2026-11-18)",
"price": "String - Price of the stay.",
"extracted_price": "Float - Extracted price of the stay.",
"currency": "String - Currency of the prices. (Ex. EUR)",
"old_price": "String - Price of the stay before discounts.",
"extracted_old_price": "Float - Extracted price of the stay before discounts.",
"price_per_night": "String - Booking.com's average nightly rate, which can exclude charges included in price. It is not necessarily the stay price divided by the number of nights.",
"extracted_price_per_night": "Float - Extracted Booking.com average nightly rate.",
"taxes_and_fees": "String - Taxes and fees not included in the price.",
"extracted_taxes_and_fees": "Float - Extracted taxes and fees not included in the price.",
"price_disclaimer": "String - Disclaimer of the price. (Ex. Includes taxes and fees, Additional charges may apply)",
"deals": [
"String - Deal of the price. (Ex. Limited-time Deal, Late Escape Deal, Mobile-only price)"
],
"rooms": [
{
"name": "String - Name of the room or unit. (Ex. Deluxe Queen Room)",
"type": "String - Type of the unit, in the language of the search. (Ex. Entire apartment)",
"quantity": "Integer - Number of rooms or units of this type, when there are several.",
"beds": "Integer - Number of beds.",
"bed_options": [
{
"twin_bed": "Integer - Number of beds of this type. Types are twin_bed, full_bed, queen_bed, king_bed, bunk_bed, sofa_bed, and futon_bed. Several bed_options are choices of beds. (Ex. 1 queen_bed, or 2 twin_bed)"
}
],
"bedrooms": "Integer - Number of bedrooms.",
"bathrooms": "Integer - Number of bathrooms.",
"kitchens": "Integer - Number of kitchens.",
"living_rooms": "Integer - Number of living rooms.",
"size": "String - Size of the room or unit. (Ex. 474 ft²)"
}
],
"meal_plan": "String - Meals included in the price. (Ex. Breakfast included)",
"free_cancellation": "Boolean - True if the property offers free cancellation.",
"free_cancellation_until": "String - Free cancellation deadline of the first room offer, in UTC. Other rooms may have different deadlines. (Ex. 2026-11-07T05:00:00Z)",
"no_prepayment": "Boolean - True if the stay can be booked without prepayment.",
"availability": "String - Availability message of the first room offer at this price. (Ex. We have 2 left at this price)",
"sold_out": "Boolean - True if the property is sold out for the dates of the search.",
"eco_certified": "Boolean - True if the property has a sustainability certification.",
"thumbnail": "String - Link to the main photo of the property."
}
],
"filters": [
{
"title": "String - Title of the filter. (Ex. Property Type)",
"subtitle": "String - Subtitle of the filter. (Ex. Based on guest reviews)",
"options": [
{
"name": "String - Name of the option. (Ex. Hotels)",
"value": "String - Value of the option, to use in the nflt parameter. (Ex. ht_id=204)",
"count": "Integer - Number of properties with this option.",
"selected": "Boolean - True for options applied to the search.",
"serpapi_link": "String - SerpApi link to the results with this option."
}
]
}
],
"serpapi_pagination": {
"current": "Integer - Current page.",
"previous": "String - SerpApi link to the previous page.",
"next": "String - SerpApi link to the next page.",
"other_pages": {
"2": "String - SerpApi link to page 2."
},
"session_token": "String - Token of the Booking.com visitor of the search, to use in the session_token parameter."
}
}