Airbnb
Airbnb Search API
Search Airbnb stays - stay-total and per-night price with the full price-item ledger, rating and review count, bedrooms, beds and baths, coordinates, Guest Favorite and Superhost badges and images - as JSON. This is the only Airbnb endpoint that carries prices. 18 listings 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/jsonlocationstringrequiredWhere to search: a city, a region, a ZIP, or a pasted airbnb.com/s/ URL. 1-200 characters. A location Airbnb cannot resolve is a 404, not an empty result - it answers an unparseable one with a full grid geolocated off our proxy.
Example: Austin, TX
check_instringCheck-in date, YYYY-MM-DD. Must be sent together with check_out. Omit both and the transport defaults to 30 days out for 5 nights, and the response sets dates_are_defaulted true.
Example: 2026-09-08
check_outstringCheck-out date, YYYY-MM-DD. Must be later than check_in and sent together with it.
Example: 2026-09-13
adultsintegerAdult guests, 1 or more.
childrenintegerChildren aged 2-12, 0 or more.
infantsintegerInfants under 2, 0 or more.
petsintegerPets, 0 or more.
min_pricenumberMinimum price for the WHOLE STAY, in currency - not per night. Must not exceed max_price.
max_pricenumberMaximum price for the WHOLE STAY, in currency - not per night.
room_typeenum<string>entire_home, private_room, shared_room or hotel_room. Validated before the scrape: an unrecognised value is not an error upstream, Airbnb answers it with the UNFILTERED set under a 200, so forwarding it would bill a scrape for a filter that never ran.
min_bedroomsintegerMinimum bedrooms, 0 or more.
min_bedsintegerMinimum beds, 0 or more.
min_bathroomsintegerMinimum bathrooms, 0 or more.
superhostbooleanSuperhost listings only.
instant_bookbooleanInstant Book listings only.
guest_favoritebooleanGuest Favorite listings only.
free_cancellationbooleanListings with free cancellation only.
amenitiesstringComma-separated amenities, 1-200 characters: wifi, air_conditioning, pool, kitchen, free_parking, washer, self_check_in, tv - or raw numeric Airbnb amenity ids. An unrecognised NAME is rejected before the scrape, for the same reason room_type is.
Example: wifi,pool
currencystringdefault:USDISO 4217 currency, 3 letters. Leave it out and Airbnb prices off the proxy exit, so two identical requests can disagree.
pageintegerResults page, 1-based. 18 listings per page. Cannot be combined with cursor.
cursorstringnext_cursor from a previous response, 1-500 characters. It WINS over page, so sending both is rejected rather than silently ignoring page.
Request
from scavio import ScavioClient
client = ScavioClient(api_key="sk_live_your_key")
results = client.airbnb.search("Austin, TX", check_in="2026-09-08", check_out="2026-09-13")
print(results)Response