Booking.com
Booking.com Search API
Search Booking.com properties for a destination and a stay - live nightly price, review score and word, star rating, room type, bed and bathroom counts, coordinates, deal badges and cancellation terms - as JSON. 25 properties per page. Costs 1 credit per request.
Authorizations
AuthorizationstringheaderrequiredBearer authentication header of the form Bearer <token>, where <token> is your Scavio API key (e.g. Bearer sk_live_your_key).
Body
application/jsondestinationstringDestination to search, 1-200 characters. Required unless dest_id is given. A search with neither returns Booking's homepage, which costs a credit and answers nothing, so the API rejects it at the edge.
Example: Austin, Texas
dest_idstringNumeric Booking.com destination id, as an alternative to destination. Every search response echoes the dest_id and dest_type it resolved to, so you can pin later calls to it.
Example: 20126394
dest_typeenum<string>What dest_id refers to: city, region, country, district, landmark, airport or hotel. Requires dest_id and is rejected without it, because Booking silently ignores a lone dest_type.
pageintegerResults page, 1-based. 25 properties per page, and each page is a separate 1-credit request.
sort_byenum<string>default:popularityResult order: popularity, price_low, price_high, stars_high, stars_low, stars_and_price, distance or review_score. distance ranks from the searched destination centre, not from your own location.
min_pricenumberMinimum price PER NIGHT, in currency. Must not exceed max_price.
max_pricenumberMaximum price PER NIGHT, in currency.
starsarray<integer>Star ratings to include, 1-5 each, 1 to 5 values, OR'd together.
Example: [4, 5]
min_review_scoreenum<string>Minimum guest review score. Only the strings 6, 7, 8 and 9 exist upstream - an arbitrary threshold such as 7.5 is silently dropped and you are billed for an unfiltered search, so the API rejects it.
property_typeenum<string> | integerAccommodation type: apartments, hostels, hotels, motels, resorts, bed_and_breakfasts, villas, campgrounds, vacation_homes, lodges or homestays - or a raw numeric Booking accommodation-type id.
free_cancellationbooleanOnly properties offering free cancellation.
no_prepaymentbooleanOnly properties that take no prepayment.
breakfast_includedbooleanOnly rates that include breakfast.
checkinstringCheck-in date, YYYY-MM-DD. Must be sent together with checkout: Booking ignores a lone checkin and prices a default range of its own, so you get real prices for dates you never asked for.
Example: 2026-09-08
checkoutstringCheck-out date, YYYY-MM-DD. Must be later than checkin and sent together with it.
Example: 2026-09-10
adultsintegerdefault:2Adult guests, 1 or more.
children_agesarray<integer>AGES of the accompanying children, 0-17 each, up to 10 entries. Ages, not a count.
Example: [4, 9]
roomsintegerdefault:1Rooms to price, 1 or more.
currencystringdefault:USDISO 4217 currency for every price in the response, 3 letters. Leave it out and Booking prices off the proxy exit, so two identical requests can disagree.
Request
from scavio import ScavioClient
client = ScavioClient(api_key="sk_live_your_key")
results = client.booking.search(destination="Austin, Texas", checkin="2026-09-08", checkout="2026-09-10")
print(results)Response