Airbnb
Destination Search API
Get the first page of Airbnb listing cards for a destination. Use a geographic destination, not a listing title: native property-name lookup is not available.
GET https://api.stayapi.com/v1/airbnb/search
Parameters
locationis required (trimmed, 2–200 characters).check_inandcheck_outare optional paired, orderedYYYY-MM-DDdates.adultsdefaults to 1 (1–16);childrendefaults to 0 (0–16);infantsandpetsdefault to 0 (0–5).currencydefaults to USD.
Response scope
The response contains location, requested_currency, optional dates, dates_requested, availability_verified (always false), page_scope (first_page), count, and listings.
Each listing includes listing_id, url, and title, with optional name, image_url, rating_display, displayed_price, price_qualifier, price_currency, and price_applies_to_requested_dates.
There is no cursor. Undated searches omit prices. A dated displayed price is returned only when it applies to the requested dates and guests; neither mode confirms availability.
Errors
Invalid requests return 400 or 422 Problem Details. Upstream failures return 502, 503, or 504; do not treat those as empty results.
Example
curl -sS --get "https://api.stayapi.com/v1/airbnb/search" \
-H "X-API-Key: YOUR_API_KEY" \
-d location="Paris, France" -d check_in=2026-11-01 -d check_out=2026-11-04 \
-d adults=2 -d currency=USD
{
"location": "Paris, France",
"requested_currency": "USD",
"check_in": "2026-11-01",
"check_out": "2026-11-04",
"dates_requested": true,
"availability_verified": false,
"page_scope": "first_page",
"count": 1,
"listings": [{
"listing_id": "<Airbnb listing ID>",
"url": "https://www.airbnb.com/rooms/<Airbnb listing ID>",
"title": "Example listing title",
"displayed_price": "$423 USD",
"price_currency": "USD",
"price_applies_to_requested_dates": true
}]
}
USD is set only when the rendered price explicitly carries a USD suffix; € and £ map to EUR and GBP. Other display formats leave price_currency null.