Browse documentation

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

  • location is required (trimmed, 2–200 characters).
  • check_in and check_out are optional paired, ordered YYYY-MM-DD dates.
  • adults defaults to 1 (1–16); children defaults to 0 (0–16); infants and pets default to 0 (0–5).
  • currency defaults 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.