Airbnb

DegradedRead-only

Search Airbnb short-term rental listings by location and dates, and fetch listing details — clean JSON from Airbnb's server-rendered search and listing pages. Generated from www.airbnb.com.

Base URL
https://api.maviapi.com/v1/sites/airbnb
3
Endpoints
3454ms
p50 latency
16
Calls / 30d
GET/search

Search stays

Search Airbnb stays by location and dates; returns listings with name, price, rating, room facts, coordinates and images. Paginated (?page, ?limit/?offset).

Bearer auth. Pass your key as Authorization: Bearer <key> on every request.
stringRequiredin query

Destination to search (city, neighborhood, address). Alias: q.

stringOptionalin query

Check-in date YYYY-MM-DD

stringOptionalin query

Check-out date YYYY-MM-DD

integerOptionalin query

Number of adults

integerOptionalin query

Number of children

integerOptionalin query

Number of infants

integerOptionalin query

Number of pets

integerOptionalin query

Minimum nightly price filter

integerOptionalin query

Maximum nightly price filter

stringOptionalin query

Room type filter

integerOptionalin query

Minimum bedrooms

integerOptionalin query

Minimum beds

integerOptionalin query

Minimum bathrooms

integerOptionalin query

Source result page (18 listings per page)

integerOptionalin query

Max listings returned from the fetched page

integerOptionalin query

Offset within the fetched page

booleanOptionalin query

Bypass and repopulate the cache

dataobject
cachedboolean
sourcestring
paginationobject
Try itLive
GET
https://api.maviapi.com/v1/sites/airbnb/search?location=Paris&checkin=2026-09-10&checkout=2026-09-14&adults=2&children=0&infants=0&pets=0&price_min=50&price_max=300&room_type=entire_home&min_bedrooms=1&min_beds=1&min_bathrooms=1&page=1&limit=50&offset=0&refresh=false
Request
curl "https://api.maviapi.com/v1/sites/airbnb/search?location=Paris&checkin=2026-09-10&checkout=2026-09-14&adults=2&children=0&infants=0&pets=0&price_min=50&price_max=300&room_type=entire_home&min_bedrooms=1&min_beds=1&min_bathrooms=1&page=1&limit=50&offset=0&refresh=false" \
-H "Authorization: Bearer $MAVI_KEY"
Example1.3 KB
{
  "data": {
    "location": "Paris",
    "page": 1,
    "page_count": 15,
    "has_more": true,
    "listings": [
      {
        "id": "1703490465372485847",
        "url": "https://www.airbnb.com/rooms/1703490465372485847",
        "name": "Beautiful 4-person apartment - 6th arrondissement/Jardin du Luxembourg",
        "title": "Apartment in 6th Arrondissement",
        "subtitle": "Architect-renovated with two balconies",
        "rating": {
          "value": 4.88,
          "count": 8
        },
        "price": {
          "amount": 1601,
          "currency": "$",
          "display": "$1,601",
          "original": "$1,780",
          "qualifier": "for 4 nights",
          "label": "$1,601 for 4 nights",
          "secondary": null
        },
        "room_info": [
          "1 bedroom",
          "2 beds",
          "1 bath"
        ],
        "coordinate": {
          "latitude": 48.8421,
          "longitude": 2.3353
        },
        "images": [
          "https://a0.muscache.com/im/pictures/hosting/Hosting-1703490465372485847/original/8fa652c0.jpeg"
        ]
      }
    ]
  },
  "cached": false,
  "source": "https://www.airbnb.com/s/Paris/homes?adults=2",
  "pagination": {
    "total": 18,
    "limit": 50,
    "offset": 0,
    "count": 18,
    "has_more": true
  }
}

Get all the data, no code

Collect every page of GET /search into a dataset, then download it as CSV or JSON. One credit per page; the download is free.