Search Airbnb listings
TL;DR
About
Handy when you want Airbnb results as rows you can sort instead of pins on a map. Say you rent out a two-bedroom flat in Alfama and want to price the first weekend of December. Search "Alfama, Lisbon" for 4 to 6 December with air conditioning and a kitchen required (amenity ids 5 and 8), and the flats nearby come back with the price Airbnb shows for those nights, the struck-through price if discounted, bedroom count, rating and coordinates. Sticking to the neighborhood rather than all of Lisbon keeps the list to flats a guest would weigh against yours. Leave the dates out and bedroom counts give way to each flat's next free dates. Prices arrive as text, often a whole phrase, in the language and currency Airbnb serves that browser (a browser in France lands on airbnb.fr, and a currency saved in its Airbnb settings counts too), so pull the number out before averaging.
Input
location requiredDestination (city / region / neighborhood), e.g. 'Paris' or 'Lisbon, Portugal'. Spaces become dashes in the URL slug.
page optionalResult page (up to 18 listings/page; Airbnb caps at ~15 pages). Default 1.
Default: 1pets optionalNumber of pets.
query optionalExtra free-text query refinement.
adults optionalNumber of adults. Default 2.
Default: 2checkin optionalCheck-in date ISO YYYY-MM-DD. Pair with checkout for date-aware results/pricing.
infants optionalNumber of infants.
checkout optionalCheck-out date ISO YYYY-MM-DD.
children optionalNumber of children.
amenities optionalAirbnb amenity-filter ids (the site's own filter pills), AND-combined as &amenities[]=<id>. Ids are sparse/non-sequential — common ones: 5=Air conditioning, 4=Wifi, 8=Kitchen, 9=Free parking, 7=Pool, 25=Hot tub, 30=Heating, 33=Washer, 34=Dryer, 58=TV, 51=Self check-in, 47=Dedicated workspace, 15=Gym, 16=Breakfast, 99=BBQ grill, 97=EV charger, 286=Crib, 45=Hair dryer, 46=Iron, 11=Smoking allowed, 27=Indoor fireplace, 35=Smoke alarm, 36=Carbon monoxide alarm.
category_tag optionalAirbnb category tag filter (e.g. 'Tag:8225').
titleStartsWith optionalClient-side filter: keep only listings whose title starts with this string.
l2_property_type_id optionalProperty-type filter id.
Output
url requiredpage requiredcount requiredlistings requiredmaxPage optionalresolvedLocation optionalThe place Airbnb actually searched. precision is "city" for a city, "state" for a region, "country" when Airbnb could only place the name at country level (the listings then cover the whole country), "building" for an address.
Example output
Shape only: placeholder values generated from the output schema, not a real run.
{
"url": "https://example.com/item/123",
"page": 1,
"count": 3,
"maxPage": 3,
"listings": [
{
"id": "abc123",
"lat": "2026-01-15T09:30:00Z",
"lng": 3.5,
"url": "https://example.com/item/123",
"name": "Example",
"price": "…",
"title": "Example",
"badges": [
"…"
],
"images": [
"…"
],
"rating": 3.5,
"details": [
"…"
],
"hostType": "…",
"imageUrl": "https://example.com/item/123",
"subtitle": "…",
"ratingLabel": "…",
"reviewCount": 3,
"availability": [
"…"
],
"originalPrice": "…",
"priceQualifier": "…"
}
],
"resolvedLocation": {
"name": "Example",
"bounds": {
"northeast": {
"lat": "2026-01-15T09:30:00Z",
"lng": 3.5
},
"southwest": {
"lat": "2026-01-15T09:30:00Z",
"lng": 3.5
}
},
"center": {
"lat": "2026-01-15T09:30:00Z",
"lng": 3.5
},
"precision": "…",
"canonicalLocation": "…"
}
}