Airbnb API: complete guide to every endpoint

Every endpoint, what it is for, every parameter and a real example answer. Base URL https://airbnb74.p.rapidapi.com. Send your key in X-RapidAPI-Key and the host in X-RapidAPI-Host. Every answer is HTTP 200 with status, message and data; check status.

Typical journey: Search Stay Destinations gives a placeId → Search Stays gives listingIds → the listing endpoints (details, photos, amenities, policies, host, pricing, reviews, availability calendar). Get your API key.

Stays

Search Airbnb homes and read every part of a listing page.

Contents

Search Stay Destinations

GET /api/v1/stays/autocomplete

Find a place from typed text

Type the first letters of a city, area or landmark and get matching places.

- Use the placeId of a place in Search Stays. - Works from the first letter. Returns up to 10 places (default 5).

ParameterTypeRequiredDefaultDescription
querystringyesThe text typed, for example Lond.
limitinteger (1..10)no5How many places, 1 to 10. Default 5.
languageCodestringnoen-GBLanguage of the texts, for example en-GB, fr or ja. Values: Get Languages. Default en-GB.

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/stays/autocomplete?query=Paris' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Places found",
  "data": {
    "count": 5,
    "places": [
      {
        "name": "Paris, France",
        "type": "LOCATION",
        "placeId": "ChIJD7fiBh9u5kcRYJSMaMOCCwQ",
        "acpId": "db9f8d81-98a0-4f97-8e5f-51f6987effdb",
        "query": "Paris, France",
        "countryCode": "FR",
        "placeTypes": [
          "locality",
          "political"
        ],
        "boundingBox": {
          "southWestLatitude": 48.8155622,
          "southWestLongitude": 2.2242171,
          "northEastLatitude": 48.9021476,
          "northEastLongitude": 2.4698511
        }
      },
      {
        "name": "Eiffel Tower",
        "type": "LOCATION",
        "placeId": "ChIJLU7jZClu5kcR4PcOOO6p3I0",
        "acpId": "134159b3-4f48-4163-807a-14b67547bca0",
        "query": "Eiffel Tower, Paris, France",
        "countryCode": "FR",
        "placeTypes": [
          "establishment",
          "point_of_interest"
        ],
        "boundingBox": {
          "southWestLatitude": 48.8566838197085,
          "southWestLongitude": 2.2934008,
          "northEastLatitude": 48.8593817802915,
          "northEastLongitude": 2.296314600000001
        }
      }
    ]
  }
}

Example when something is wrong

{
  "status": false,
  "message": "Validation failed",
  "errors": [
    {
      "field": "query",
      "message": "\"query\" is required: the text the user typed"
    }
  ]
}

Get Suggested Destinations

GET /api/v1/stays/suggested-destinations

Suggested destinations

The destinations Airbnb shows on its "Where?" screen before anything is typed.

- Returns two lists: recent (searches made with this session) and suggested (about 20 places). - Every place has a placeId for Search Stays and an openWith call that is ready to send. - The list depends on the server location, so use it as a starting list, not as a nearby search.

ParameterTypeRequiredDefaultDescription
latitudenumbernoWith longitude. -90 to 90
longitudenumbernoWith latitude. -180 to 180
languageCodestringnoen-GBLanguage of the texts, for example en-GB, fr or ja. Values: Get Languages. Default en-GB.

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/stays/suggested-destinations' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Suggested destinations",
  "data": {
    "nearby": {
      "name": "Nearby",
      "reason": "Find what’s around you",
      "latitude": 18.98,
      "longitude": 72.83,
      "iconUrl": "https://a0.muscache.com/im/pictures/airbnb-platform-assets/AirbnbPlatformAssets-hawaii-autosuggest-destination-icons-2/original/ea5e5ee3-e9d8-48a1-b7e9-1003bf6…"
    },
    "count": 20,
    "sections": [
      {
        "type": "recent",
        "title": "Recent searches",
        "places": [],
        "count": 0
      },
      {
        "type": "suggested",
        "title": "Suggested destinations",
        "places": [
          {
            "name": "Mumbai, Maharashtra",
            "reason": "For sights like Gateway of India",
            "placeId": "ChIJwe1EZjDG5zsRaYxkjY_tpF0",
            "query": "Mumbai, Maharashtra",
            "checkIn": null,
            "checkOut": null,
            "adults": null,
            "filters": [],
            "countryCode": "IN",
            "iconUrl": "https://a0.muscache.com/im/pictures/airbnb-platform-assets/AirbnbPlatformAssets-hawaii-autosuggest-destination-icons-1/original/ebb968b2-3fb6-45d3-b675-7765e48…",
            "openWith": {
              "endpoint": "/stays/search",
              "params": [
                {
                  "name": "placeId",
                  "value": "ChIJwe1EZjDG5zsRaYxkjY_tpF0"
                }
              ]
            }
          },
          {
            "name": "North Goa, Goa",
            "reason": "Popular beach destination",
            "placeId": "ChIJMaD6Uu3AvzsR0E3VfowKzRs",
            "query": "North Goa, Goa",
            "checkIn": null,
            "checkOut": null,
            "adults": null,
            "filters": [],
            "countryCode": "IN",
            "iconUrl": "https://a0.muscache.com/im/pictures/airbnb-platform-assets/AirbnbPlatformAssets-hawaii-autosuggest-destination-icons-1/original/06f0f050-c167-4d1e-89e1-2775be9…",
            "openWith": {
              "endpoint": "/stays/search",
              "params": [
                {
                  "name": "placeId",
                  "value": "ChIJMaD6Uu3AvzsR0E3VfowKzRs"
                }
              ]
            }
          }
        ],
        "count": 20
      }
    ]
  }
}

Example when something is wrong

{
  "status": false,
  "message": "Validation failed",
  "errors": [
    {
      "field": "languageCode",
      "message": "\"languageCode\" \"xx-INVALID\" is not supported. See GET /common/languages for the codes."
    }
  ]
}

Get Place Boundary

GET /api/v1/stays/place-boundary

Outline of a city or area

The border of a place as a GeoJSON polygon, to draw the area on a map.

- Get the acpId from Search Stay Destinations. - Some places have no outline; then status is false.

ParameterTypeRequiredDefaultDescription
acpIdstringyesAirbnb's id of the place, from GET /stays/autocomplete, e.g. 4360b783-7c07-41a0-a227-a17d1c3d3895

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/stays/place-boundary?acpId=4360b783-7c07-41a0-a227-a17d1c3d3895' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Place boundary",
  "data": {
    "acpId": "4360b783-7c07-41a0-a227-a17d1c3d3895",
    "pointCount": 572,
    "boundingBox": {
      "southWestLatitude": 51.28678,
      "southWestLongitude": -0.51033,
      "northEastLatitude": 51.69176,
      "northEastLongitude": 0.3339
    },
    "boundary": {
      "type": "Polygon",
      "coordinates": [
        [
          [
            -0.49953,
            51.48726
          ],
          [
            -0.49505,
            51.49233
          ]
        ]
      ]
    }
  }
}

Example when something is wrong

{
  "status": false,
  "message": "Validation failed",
  "errors": [
    {
      "field": "acpId",
      "message": "\"acpId\" is required: the `acpId` of a place from GET /stays/autocomplete"
    }
  ]
}

GET /api/v1/stays/price-trends

Cheaper and dearer dates for a place

Shows which dates are cheaper (LOW) or dearer (HIGH) for a place, like the Airbnb date picker.

- Send placeId or query. Coordinates alone are not enough.

ParameterTypeRequiredDefaultDescription
placeIdstringnoThe exact place: the placeId from the autocomplete endpoint. Enough on its own.
querystringnoPlace name, for example London, United Kingdom. Prefer placeId; send either one.
currencyCodestringnoUSDCurrency of the prices, 3 letters. Values: Get Currency. Default USD.
languageCodestringnoen-GBLanguage of the texts, for example en-GB, fr or ja. Values: Get Languages. Default en-GB.

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/stays/price-trends?query=Paris' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Price trends",
  "data": {
    "count": 71,
    "dates": [
      {
        "date": "2026-11-01",
        "level": "LOW"
      },
      {
        "date": "2026-11-08",
        "level": "LOW"
      }
    ]
  }
}

Example when something is wrong

{
  "status": false,
  "message": "Validation failed",
  "errors": [
    {
      "field": "languageCode",
      "message": "\"languageCode\" \"xx-INVALID\" is not supported. See GET /common/languages for the codes."
    },
    {
      "field": "",
      "message": "Either \"query\" or \"placeId\" is required (from /stays/autocomplete)"
    }
  ]
}

Search Stays

GET /api/v1/stays/search

Search homes

Search Airbnb homes in a place, with dates, guests and filters.

- Send placeId from Search Stay Destinations, or a map area, or a point (latitude and longitude). - With dates, prices are for the whole stay. - Up to 40 results per page; send nextCursor as cursor to get the next page. - To see which filters exist for a search, call Get Stay Search Filters. - Flexible dates: flexibleDays (1, 2, 3, 7 or 14 days around your dates) or flexibleMonths (1 to 12 months, with flexibleLength).

ParameterTypeRequiredDefaultDescription
placeIdstringnoThe exact place: the placeId from the autocomplete endpoint. Enough on its own.
querystringnoPlace name, for example London, United Kingdom. Prefer placeId; send either one.
northEastLatitudenumbernoMap area: top-right corner latitude. Send all four corners; the area beats placeId and query
northEastLongitudenumbernoMap area: top-right corner longitude
southWestLatitudenumbernoMap area: bottom-left corner latitude (below northEastLatitude)
southWestLongitudenumbernoMap area: bottom-left corner longitude
latitudenumbernoStays around a point (send with longitude; not with a map area)
longitudenumbernoStays around a point (send with latitude)
flexibleDaysenum: 1, 2, 3, 7, 14noDates flexible by this many days before and after checkIn/checkOut: 1, 2, 3, 7 or 14 (needs checkIn and checkOut)
flexibleMonthsstringnoFlexible dates: comma separated month names, 1 to 12, e.g. December,January (instead of checkIn/checkOut)
flexibleLengthenum: weekend, week, monthnoWith flexibleMonths: weekend, week or month (default week)
checkInstringnoYYYY-MM-DD (send with checkOut)
checkOutstringnoYYYY-MM-DD, after checkIn (send with checkIn)
adultsinteger (1..16)no1 to 16
childreninteger (0..5)no0 to 5
infantsinteger (0..5)no0 to 5
petsinteger (0..5)no0 to 5
priceMininteger (0..1000000)noLowest price (whole stay when dates are sent, else per night), in currencyCode
priceMaxinteger (0..1000000)noHighest price, in currencyCode; not below priceMin
minBedroomsinteger (0..16)noAt least this many bedrooms, 0 to 16
minBedsinteger (0..16)noAt least this many beds, 0 to 16
minBathroomsinteger (0..16)noAt least this many bathrooms, 0 to 16
superhostbooleannotrue = only Superhosts
instantBookbooleannotrue = only Instant Book listings
guestFavoritebooleannotrue = only Guest favourites
freeCancellationbooleannotrue = only flexible-cancellation listings
discountedbooleannotrue = only listings with a discount
luxebooleannotrue = only Airbnb Luxe
minRatingnumber (0..5)noLowest review score, 0 to 5
tagsstringnoCategory tags separated by commas, for example Tag:9613 (hotels). Values come from the home feed tiles.
neighborhoodIdsstringnoNeighbourhood ids separated by commas, from the neighbourhoods section of Get Stay Search Filters.
bathroomPrivacystringnoBathroom type, from Get Stay Search Filters. ENSUITE = private attached bathroom.
roomTypesstringnoComma separated: Entire home/apt, Private room, Hotel room, Shared room
amenitiesstringnoComma separated amenity ids from GET /stays/search-filters (all must be present)
propertyTypeIdsstringnoComma separated property type ids from GET /stays/search-filters
hostLanguagesstringnoComma separated language codes the host speaks, e.g. en,fr
limitinteger (2..40)no16Listings per page, 2 to 40 (default 16)
cursorstringnoThe nextCursor of the previous answer, to get the next page.
currencyCodestringnoUSDCurrency of the prices, 3 letters. Values: Get Currency. Default USD.
languageCodestringnoen-GBLanguage of the texts, for example en-GB, fr or ja. Values: Get Languages. Default en-GB.

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/stays/search?placeId=ChIJD7fiBh9u5kcRYJSMaMOCCwQ&checkIn=2026-12-25&checkOut=2026-12-27&adults=2&limit=16' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Stays found",
  "data": {
    "totalCount": 5102,
    "resultCount": 16,
    "nextCursor": "eyJzZWN0aW9uX29mZnNldCI6MCwiaXRlbXNfb2Zmc2V0IjoxNiwidmVyc2lvbiI6MX0=",
    "searchSummary": {
      "location": "Paris",
      "dates": "25–27 Dec",
      "guests": "2 guests"
    },
    "listings": [
      {
        "listingId": "1782511868597718033",
        "url": "https://www.airbnb.com/rooms/1782511868597718033",
        "title": "Flat in Paris",
        "name": "Cosy haven at the foot of Montmartre",
        "city": "Paris",
        "latitude": 48.88282,
        "longitude": 2.34724,
        "rating": 5,
        "reviewCount": 6,
        "ratingText": "5.0 (6)",
        "badges": [
          {
            "type": "GUEST_FAVORITE",
            "text": "Guest favourite"
          }
        ],
        "details": [
          {
            "type": "BEDINFO",
            "text": "1 bedroom"
          },
          {
            "type": "BEDINFO",
            "text": "1 queen bed"
          }
        ],
        "highlights": [],
        "photos": [
          {
            "photoId": "2832465134",
            "url": "https://a0.muscache.com/im/pictures/hosting/Hosting-1782511868597718033/original/334f8d37-fc88-49a0-9d66-234c2258dcfb.jpeg?media_domain=LISTING&media_identifie…",
            "aspectRatio": 1.5009380863039399
          },
          {
            "photoId": "2832465151",
            "url": "https://a0.muscache.com/im/pictures/hosting/Hosting-1782511868597718033/original/592cd3cc-55f1-48a1-b94e-3d70c70d00a0.jpeg?media_domain=LISTING&media_identifie…",
            "aspectRatio": 1.5009380863039399
          }
        ],
        "price": {
          "price": "$270 USD",
          "amount": 270,
          "originalPrice": null,
          "originalAmount": null,
          "qualifier": "total",
          "description": "$270 USD total",
          "notes": [],
          "breakdown": [
            {
              "description": "2 nights x $134.61 USD",
              "price": "$269.22 USD",
              "originalPrice": null
            }
          ]
        },
        "paymentMessages": [
          {
            "type": "PAY_ZERO_UPFRONT_HIGHLIGHT",
            "text": "Pay $0 today"
          },
          {
            "type": "FREE_CANCELLATION_HIGHLIGHT",
            "text": "Free cancellation"
          }
        ],
        "bedCount": 1
      },
      {
        "listingId": "1212974164442514613",
        "url": "https://www.airbnb.com/rooms/1212974164442514613",
        "title": "Room in Paris",
        "name": "1 room shared bathroom, Arc de Triomphe, metro 1",
        "city": "Paris",
        "latitude": 48.8757,
        "longitude": 2.2894,
        "rating": 4.87,
        "reviewCount": 107,
        "ratingText": "4.87 (107)",
        "badges": [],
        "details": [
          {
            "type": "BEDINFO",
            "text": "1 sofa bed"
          }
        ],
        "highlights": [],
        "photos": [
          {
            "photoId": "2018983205",
            "url": "https://a0.muscache.com/im/pictures/hosting/Hosting-U3RheVN1cHBseUxpc3Rpbmc6MTIxMjk3NDE2NDQ0MjUxNDYxMw%3D%3D/original/677df45b-6726-4169-95c3-fe3b9972c1fc.png?…",
            "aspectRatio": 0.7515151515151515
          },
          {
            "photoId": "2018983209",
            "url": "https://a0.muscache.com/im/pictures/hosting/Hosting-U3RheVN1cHBseUxpc3Rpbmc6MTIxMjk3NDE2NDQ0MjUxNDYxMw%3D%3D/original/1d31120c-8465-41f5-b07c-06e1191bd8f6.png?…",
            "aspectRatio": 1.3349494949494949
          }
        ],
        "price": {
          "price": "$265 USD",
          "amount": 265,
          "originalPrice": null,
          "originalAmount": null,
          "qualifier": "total",
          "description": "$265 USD total",
          "notes": [],
          "breakdown": [
            {
              "description": "2 nights x $132.36 USD",
              "price": "$264.72 USD",
              "originalPrice": null
            }
          ]
        },
        "paymentMessages": [
          {
            "type": "PAY_ZERO_UPFRONT_HIGHLIGHT",
            "text": "Pay $0 today"
          },
          {
            "type": "FREE_CANCELLATION_HIGHLIGHT",
            "text": "Free cancellation"
          }
        ],
        "bedCount": 1
      }
    ]
  }
}

Example when something is wrong

{
  "status": false,
  "message": "Validation failed",
  "errors": [
    {
      "field": "languageCode",
      "message": "\"languageCode\" \"xx-INVALID\" is not supported. See GET /common/languages for the codes."
    },
    {
      "field": "",
      "message": "Send a place (\"placeId\" from GET /stays/autocomplete, or \"query\" free text), a map area (northEast/southWest latitude and longitude), or a point (latitude, longitude): at least one of them"
    }
  ]
}

Get Stay Search Filters

GET /api/v1/stays/search-filters

Filters available for a search

The live filter menu for a search: sections, options, result counts and the parameter each option sets.

- Takes the same place, dates and guests as Search Stays. - To apply an option, send its searchParam name with its value to Search Stays. Several options of one section are comma separated.

ParameterTypeRequiredDefaultDescription
placeIdstringnoThe exact place: the placeId from the autocomplete endpoint. Enough on its own.
querystringnoPlace name, for example London, United Kingdom. Prefer placeId; send either one.
checkInstringnoYYYY-MM-DD (send with checkOut)
checkOutstringnoYYYY-MM-DD, after checkIn (send with checkIn)
adultsinteger (1..16)no1 to 16
childreninteger (0..5)no0 to 5
infantsinteger (0..5)no0 to 5
currencyCodestringnoUSDCurrency of the prices, 3 letters. Values: Get Currency. Default USD.
languageCodestringnoen-GBLanguage of the texts, for example en-GB, fr or ja. Values: Get Languages. Default en-GB.

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/stays/search-filters?placeId=ChIJD7fiBh9u5kcRYJSMaMOCCwQ' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Search filters",
  "data": {
    "totalCount": 4131,
    "sections": [
      {
        "sectionId": "PRICE_RANGE",
        "title": "Price range",
        "options": [
          {
            "kind": "price-range",
            "title": "$50 USD - $2,700 USD",
            "subtitle": "Trip price, includes all fees",
            "params": [
              {
                "key": "price_min",
                "value": null,
                "valueType": "integer",
                "searchParam": "priceMin",
                "remove": false
              },
              {
                "key": "price_max",
                "value": null,
                "valueType": "integer",
                "searchParam": "priceMax",
                "remove": false
              }
            ],
            "minValue": 50,
            "maxValue": 2700,
            "histogram": [
              0,
              0
            ]
          }
        ]
      },
      {
        "sectionId": "ROOM_TYPE",
        "title": null,
        "options": [
          {
            "kind": "choice",
            "title": "Any",
            "subtitle": null,
            "params": [
              {
                "key": "kg_and_tags",
                "value": "Tag:9613",
                "valueType": "array",
                "searchParam": "tags",
                "remove": true
              }
            ]
          },
          {
            "kind": "choice",
            "title": "Home",
            "subtitle": null,
            "params": [
              {
                "key": "room_types",
                "value": "Entire home/apt",
                "valueType": "array",
                "searchParam": "roomTypes",
                "remove": false
              },
              {
                "key": "kg_and_tags",
                "value": "Tag:9613",
                "valueType": "array",
                "searchParam": "tags",
                "remove": true
              }
            ]
          }
        ]
      }
    ]
  }
}

Example when something is wrong

{
  "status": false,
  "message": "Validation failed",
  "errors": [
    {
      "field": "languageCode",
      "message": "\"languageCode\" \"xx-INVALID\" is not supported. See GET /common/languages for the codes."
    },
    {
      "field": "",
      "message": "Send \"placeId\" (exact, from GET /stays/autocomplete) or \"query\" (free text such as Paris, France): at least one of them"
    }
  ]
}

Get Stay Details

GET /api/v1/stays/details

Listing details

The listing page: title, rating, highlights, description, location and house facts.

- Get the listingId from Search Stays. - An unknown id returns status:false.

ParameterTypeRequiredDefaultDescription
listingIdstringyesThe listingId of a search result, e.g. 1772056939923148193
languageCodestringnoen-GBLanguage of the texts, for example en-GB, fr or ja. Values: Get Languages. Default en-GB.

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/stays/details?listingId=1782511868597718033' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Listing details",
  "data": {
    "listingId": "1782511868597718033",
    "url": "https://www.airbnb.co.uk/rooms/1782511868597718033",
    "title": "Cosy haven at the foot of Montmartre",
    "heading": "Entire rental unit in Paris, France",
    "propertyType": "APARTMENT",
    "propertyTypeText": "Entire rental unit",
    "city": "Paris",
    "shareUrl": "https://www.airbnb.co.uk/rooms/1782511868597718033?unique_share_id=91c06426-1434-4831-be0c-5b8adc0e54da&viralityEntryPoint=1&s=76",
    "shareImageUrl": "https://a0.muscache.com/im/pictures/hosting/Hosting-1782511868597718033/original/334f8d37-fc88-49a0-9d66-234c2258dcfb.jpeg?media_domain=LISTING&media_identifie…",
    "spaceType": "ENTIRE_HOME",
    "maxGuests": 2,
    "summary": [
      "2 guests",
      "1 bedroom"
    ],
    "description": "Welcome to our Parisian haven, ideally located just a stone's throw from Montmartre and the Sacré-Cœur.\nCompletely renovated and carefully furnished, this stud…",
    "byline": null,
    "sourceLanguage": "fr",
    "highlights": [
      {
        "type": "LISTING_CUSTOM_OFFLINE_GENERATED",
        "icon": "SYSTEM_CITY",
        "headline": "In Montmartre, near Sacré-Cœur",
        "text": "About a 10-min walk to Sacré-Cœur, with Square Louise Michel and Place des Abbesses along the way."
      },
      {
        "type": "LISTING_CUSTOM_OFFLINE_GENERATED",
        "icon": "SYSTEM_FORK_SPOON",
        "headline": "Kitchenette and washer included",
        "text": "A Nespresso machine, kitchenette, and washer make it easy to settle in for a weekend or longer."
      }
    ],
    "isGuestFavorite": true,
    "isNewListing": false,
    "isLuxe": false,
    "rating": {
      "average": 5,
      "count": 6,
      "categories": [
        {
          "category": "CLEANLINESS",
          "label": "Cleanliness",
          "rating": 5,
          "share": 1
        },
        {
          "category": "ACCURACY",
          "label": "Accuracy",
          "rating": 5,
          "share": 1
        }
      ],
      "distribution": [
        {
          "stars": 5,
          "count": null,
          "share": 1,
          "text": "100%"
        },
        {
          "stars": 4,
          "count": null,
          "share": 0,
          "text": "0%"
        }
      ],
      "tags": [
        {
          "tag": "GETTING_AROUND",
          "label": "Getting around",
          "count": 3
        },
        {
          "tag": "WALKABILITY",
          "label": "Walkability",
          "count": 2
        }
      ],
      "reviewSorts": [
        {
          "sort": "BEST_QUALITY",
          "label": "Most relevant"
        },
        {
          "sort": "MOST_RECENT",
          "label": "Most recent"
        }
      ]
    },
    "host": {
      "name": "Anita",
      "isSuperhost": false,
      "pictureUrl": "https://a0.muscache.com/im/pictures/user/User-13287163/original/09514d8c-64dc-401a-8ce5-d01df1b9a303.jpeg",
      "userId": "13287163",
      "contextualUserId": "1462907809019481093",
      "summary": [
        "10 years hosting"
      ]
    },
    "location": {
      "name": null,
      "address": null,
      "subtitle": "Paris, Île-de-France, France",
      "country": "France",
      "latitude": 48.88282,
      "longitude": 2.34724,
      "isExactLocation": false,
      "isVerified": false,
      "about": []
    },
    "guestLimits": null
  }
}

Example when something is wrong

{
  "status": false,
  "message": "Validation failed",
  "errors": [
    {
      "field": "listingId",
      "message": "\"listingId\" is required: the number from search results"
    }
  ]
}

Get Stay Amenities

GET /api/v1/stays/amenities

Listing amenities

All amenities of a listing, grouped, including the ones that are not available.

- Get the listingId from Search Stays.

ParameterTypeRequiredDefaultDescription
listingIdstringyesThe listingId of a search result, e.g. 1772056939923148193
languageCodestringnoen-GBLanguage of the texts, for example en-GB, fr or ja. Values: Get Languages. Default en-GB.

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/stays/amenities?listingId=1782511868597718033' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Amenities",
  "data": {
    "title": "What this place offers",
    "count": 34,
    "popular": [
      {
        "amenityId": "pdp_v3_kitchen_dining_8_1782511868597718033-0",
        "title": "Kitchen",
        "available": true,
        "icon": "SYSTEM_COOKING_BASICS",
        "note": ""
      },
      {
        "amenityId": "pdp_v3_internet_office_4_1782511868597718033-0",
        "title": "Wifi",
        "available": true,
        "icon": "SYSTEM_WI_FI",
        "note": ""
      }
    ],
    "groups": [
      {
        "groupId": "pdp_v3_bathroom_1782511868597718033",
        "title": "Bathroom",
        "amenities": [
          {
            "amenityId": "pdp_v3_bathroom_45_1782511868597718033-0",
            "title": "Hairdryer",
            "available": true,
            "icon": "SYSTEM_HAIRDRYER",
            "note": ""
          },
          {
            "amenityId": "pdp_v3_bathroom_665_1782511868597718033-0",
            "title": "Cleaning products",
            "available": true,
            "icon": "SYSTEM_CLEANING_SUPPLIES",
            "note": ""
          }
        ]
      },
      {
        "groupId": "pdp_v3_bedroom_laundry_1782511868597718033",
        "title": "Bedroom and laundry",
        "amenities": [
          {
            "amenityId": "pdp_v3_bedroom_laundry_33_1782511868597718033-0",
            "title": "Washing machine",
            "available": true,
            "icon": "SYSTEM_WASHER",
            "note": ""
          },
          {
            "amenityId": "pdp_v3_bedroom_laundry_34_1782511868597718033-0",
            "title": "Tumble dryer",
            "available": true,
            "icon": "SYSTEM_DRYER",
            "note": ""
          }
        ]
      }
    ]
  }
}

Example when something is wrong

{
  "status": false,
  "message": "Validation failed",
  "errors": [
    {
      "field": "listingId",
      "message": "\"listingId\" is required: the number from search results"
    }
  ]
}

Get Stay Photos

GET /api/v1/stays/photos

Listing photos

Every photo of a listing with its caption, grouped by room.

- Get the listingId from Search Stays.

ParameterTypeRequiredDefaultDescription
listingIdstringyesThe listingId of a search result, e.g. 1772056939923148193
languageCodestringnoen-GBLanguage of the texts, for example en-GB, fr or ja. Values: Get Languages. Default en-GB.

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/stays/photos?listingId=1782511868597718033' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Photos",
  "data": {
    "count": 7,
    "photos": [
      {
        "photoId": "2832465134",
        "url": "https://a0.muscache.com/im/pictures/hosting/Hosting-1782511868597718033/original/334f8d37-fc88-49a0-9d66-234c2258dcfb.jpeg?media_domain=LISTING&media_identifie…",
        "caption": null,
        "aspectRatio": 1.5009380863039399
      },
      {
        "photoId": "2832465151",
        "url": "https://a0.muscache.com/im/pictures/hosting/Hosting-1782511868597718033/original/592cd3cc-55f1-48a1-b94e-3d70c70d00a0.jpeg?media_domain=LISTING&media_identifie…",
        "caption": null,
        "aspectRatio": 1.5009380863039399
      }
    ],
    "rooms": [
      {
        "stopId": "1782511868597718033-space-831934820",
        "name": "Full kitchen",
        "descriptions": [],
        "photos": [
          {
            "photoId": "2832465151",
            "url": "https://a0.muscache.com/im/pictures/hosting/Hosting-1782511868597718033/original/592cd3cc-55f1-48a1-b94e-3d70c70d00a0.jpeg?media_domain=LISTING&media_identifie…",
            "caption": null,
            "aspectRatio": 1.5009380863039399
          },
          {
            "photoId": "2832465178",
            "url": "https://a0.muscache.com/im/pictures/hosting/Hosting-1782511868597718033/original/8ea9010b-7994-48e4-ade7-f6bf0c658014.jpeg?media_domain=LISTING&media_identifie…",
            "caption": null,
            "aspectRatio": 1.5009380863039399
          }
        ]
      },
      {
        "stopId": "1782511868597718033-space-830202401",
        "name": "Bedroom",
        "descriptions": [
          "Queen bed",
          "Cot"
        ],
        "photos": [
          {
            "photoId": "2832465134",
            "url": "https://a0.muscache.com/im/pictures/hosting/Hosting-1782511868597718033/original/334f8d37-fc88-49a0-9d66-234c2258dcfb.jpeg?media_domain=LISTING&media_identifie…",
            "caption": null,
            "aspectRatio": 1.5009380863039399
          },
          {
            "photoId": "2832465139",
            "url": "https://a0.muscache.com/im/pictures/hosting/Hosting-1782511868597718033/original/f41df69f-5987-4dbd-b3c7-63c43720cf79.jpeg?media_domain=LISTING&media_identifie…",
            "caption": null,
            "aspectRatio": 1.5009380863039399
          }
        ]
      }
    ],
    "sleeping": [
      {
        "stopId": "1782511868597718033-space-830202401",
        "name": "Bedroom",
        "descriptions": [
          "1 queen bed",
          "1 cot"
        ],
        "photos": [
          {
            "photoId": "2832465134",
            "url": "https://a0.muscache.com/im/pictures/hosting/Hosting-1782511868597718033/original/334f8d37-fc88-49a0-9d66-234c2258dcfb.jpeg?media_domain=LISTING&media_identifie…",
            "caption": null,
            "aspectRatio": 1.5009380863039399
          }
        ]
      }
    ]
  }
}

Example when something is wrong

{
  "status": false,
  "message": "Validation failed",
  "errors": [
    {
      "field": "listingId",
      "message": "\"listingId\" is required: the number from search results"
    }
  ]
}

Get Stay Policies

GET /api/v1/stays/policies

House rules and cancellation policy

House rules, safety information and cancellation policy of a listing.

- Send checkIn and checkOut to get the cancellation timeline with real dates.

ParameterTypeRequiredDefaultDescription
listingIdstringyesThe listingId of a search result, e.g. 1772056939923148193
checkInstringnoYYYY-MM-DD (send with checkOut)
checkOutstringnoYYYY-MM-DD, after checkIn (send with checkIn)
languageCodestringnoen-GBLanguage of the texts, for example en-GB, fr or ja. Values: Get Languages. Default en-GB.

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/stays/policies?listingId=1782511868597718033' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Policies",
  "data": {
    "summary": [
      {
        "type": "CHECK_IN_CHECK_OUT",
        "title": "Check in after 15:00",
        "lines": [
          "Check out before 11:00",
          "Self check-in with keypad"
        ]
      },
      {
        "type": "HOUSE_RULES",
        "title": "House rules and requests",
        "lines": [
          "Review these details for a smooth stay."
        ]
      }
    ],
    "bookingRequirements": null,
    "houseRules": {
      "title": "House rules and requests",
      "description": "You’ll be staying in someone’s home, so please treat it with care and respect.",
      "groups": [
        {
          "type": "HOUSE_RULES_STRUCTURED_RULES",
          "title": "House rules",
          "subtitle": "These things are required to book this place.",
          "items": [
            {
              "type": "HOUSE_RULES_PERSON_CAPACITY",
              "icon": "SYSTEM_FAMILY",
              "title": "Up to 2 overnight guests",
              "description": null
            },
            {
              "type": "HOUSE_RULES_PETS",
              "icon": "SYSTEM_NO_PETS",
              "title": "No pets",
              "description": "Service animals only"
            }
          ]
        },
        {
          "type": "HOUSE_RULES_HOST_REQUESTS",
          "title": "Host requests",
          "subtitle": "The host asks that you follow these requests.",
          "items": [
            {
              "type": "HOUSE_RULES_ADDITIONAL_RULES",
              "icon": "SYSTEM_HOUSE",
              "title": "During the stay",
              "description": "For everyone's comfort, the place is completely non-smoking. Smoking or vaping is also prohibited in the building's courtyard.\nWe would be grateful if you coul…"
            },
            {
              "type": "HOUSE_RULES_ADDITIONAL_REQUESTS",
              "icon": "SYSTEM_CHECK_IN",
              "title": "Before checkout",
              "description": "Please wash and put away your dishes and take out your rubbish."
            }
          ]
        }
      ]
    },
    "safetyAndProperty": {
      "title": "Safety & property",
      "description": "Avoid surprises by looking over these important details about your host’s property.",
      "groups": [
        {
          "type": null,
          "title": "Safety devices",
          "subtitle": null,
          "items": [
            {
              "type": null,
              "icon": "SYSTEM_NO_DETECTOR_CO2",
              "title": "Carbon monoxide alarm not reported",
              "description": "The Host hasn’t reported a carbon monoxide alarm on the property. We suggest bringing a portable detector for your trip."
            },
            {
              "type": null,
              "icon": "SYSTEM_DETECTOR_SMOKE",
              "title": "Smoke alarm installed",
              "description": null
            }
          ]
        }
      ]
    },
    "cancellationPolicy": {
      "policyId": 16,
      "name": "Limited",
      "title": "Add your trip dates to get the cancellation details for this stay.",
      "rules": [
        "Cleaning fees are always refunded if the reservation is cancelled before check-in.",
        "The Airbnb service fee is refundable up to 3 times per year if the guest cancels at least 14 days before check-in. If booked less than 14 days before check-in,…"
      ],
      "timeline": [],
      "notes": []
    }
  }
}

Example when something is wrong

{
  "status": false,
  "message": "Validation failed",
  "errors": [
    {
      "field": "listingId",
      "message": "\"listingId\" is required: the number from search results"
    }
  ]
}

Get Stay Host

GET /api/v1/stays/host

Host of a listing

The "Meet your host" section: name, Superhost status, years hosting, response rate and co-hosts.

- To open the host profile, send the long contextualUserId to Get Profile Details. Co-hosts have their own contextualUserId.

ParameterTypeRequiredDefaultDescription
listingIdstringyesThe listingId of a search result, e.g. 1772056939923148193
languageCodestringnoen-GBLanguage of the texts, for example en-GB, fr or ja. Values: Get Languages. Default en-GB.

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/stays/host?listingId=1782511868597718033' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Host",
  "data": {
    "name": "Anita",
    "userId": "13287163",
    "contextualUserId": "1462907809019481093",
    "pictureUrl": "https://a0.muscache.com/im/pictures/user/User-13287163/original/09514d8c-64dc-401a-8ce5-d01df1b9a303.jpeg",
    "isSuperhost": false,
    "isVerified": true,
    "isAirbnbManaged": false,
    "title": "Host",
    "hostingYears": 10,
    "hostingMonths": 3,
    "rating": 4.58,
    "reviewCount": 64,
    "about": null,
    "responseRate": "Response rate: 97%",
    "responseTime": "Responds within an hour",
    "canBeMessaged": true,
    "highlights": [
      {
        "type": null,
        "icon": "SYSTEM_GLOBE_STAND",
        "text": "Lives in Paris, France"
      }
    ],
    "coHosts": [
      {
        "name": "Jules",
        "contextualUserId": "1462896905081230599",
        "pictureUrl": "https://a0.muscache.com/im/pictures/user/1d8516d8-be58-422e-9b2d-924910d503b6.jpg?aki_policy=profile_x_medium"
      }
    ]
  }
}

Example when something is wrong

{
  "status": false,
  "message": "Validation failed",
  "errors": [
    {
      "field": "listingId",
      "message": "\"listingId\" is required: the number from search results"
    }
  ]
}

Get Stay Pricing

GET /api/v1/stays/pricing

Price for your dates

The price of a listing for your dates and guests, with the full breakdown (nightly rate, fees, taxes).

- Without checkIn and checkOut there is no price: data.price is null. - Infants do not change the price.

ParameterTypeRequiredDefaultDescription
listingIdstringyesThe listingId of a search result, e.g. 1772056939923148193
checkInstringnoYYYY-MM-DD (send with checkOut)
checkOutstringnoYYYY-MM-DD, after checkIn (send with checkIn)
adultsinteger (1..16)no1 to 16
childreninteger (0..5)no0 to 5
infantsinteger (0..5)no0 to 5
petsinteger (0..5)no0 to 5
currencyCodestringnoUSDCurrency of the prices, 3 letters. Values: Get Currency. Default USD.
languageCodestringnoen-GBLanguage of the texts, for example en-GB, fr or ja. Values: Get Languages. Default en-GB.

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/stays/pricing?listingId=1782511868597718033&checkIn=2026-12-25&checkOut=2026-12-27&adults=2' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Price for the stay",
  "data": {
    "available": true,
    "canInstantBook": false,
    "unavailabilityReason": null,
    "unavailabilityMessage": null,
    "dates": "25–27 Dec",
    "price": "$281 USD",
    "amount": 281,
    "originalPrice": null,
    "originalAmount": null,
    "qualifier": "total",
    "description": "$281 USD total",
    "breakdown": [
      {
        "description": "2 nights x $134.61 USD",
        "price": "$269.22 USD",
        "amount": 269.22,
        "originalPrice": null
      },
      {
        "description": "Taxes",
        "price": "$11.67 USD",
        "amount": 11.67,
        "originalPrice": null
      }
    ],
    "cancellationNote": "Free cancellation before 11 December",
    "tip": {
      "type": "PAY_ZERO_UPFRONT",
      "title": "$0 today · Free cancellation"
    },
    "announcement": {
      "type": "PRICE_TRANSPARENCY_FEE_INCLUSIVE",
      "title": "Prices include all fees"
    },
    "guestLimits": null
  }
}

Example when something is wrong

{
  "status": false,
  "message": "Validation failed",
  "errors": [
    {
      "field": "listingId",
      "message": "\"listingId\" is required: the number from search results"
    }
  ]
}

Get Stay Reviews

GET /api/v1/stays/reviews

Listing reviews

Guest reviews of a listing, page by page.

- Use limit (1 to 50) and offset to page. Sort with sortBy. - tag narrows the reviews to a topic from the "Guests mention" list in the answer.

ParameterTypeRequiredDefaultDescription
listingIdstringyesThe listingId of a search result, e.g. 1772056939923148193
limitinteger (1..50)no201 to 50 (default 20)
offsetinteger (0..100000)no0Reviews to skip (default 0)
sortByenum: MOST_RECENT, RATING_DESC, RATING_ASCnoMOST_RECENT, RATING_DESC or RATING_ASC
tagstringnoA review topic, e.g. LOCATION
languageCodestringnoen-GBLanguage of the texts, for example en-GB, fr or ja. Values: Get Languages. Default en-GB.

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/stays/reviews?listingId=1782511868597718033&limit=10' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Reviews found",
  "data": {
    "totalCount": 6,
    "resultCount": 6,
    "tags": [
      {
        "tag": "GETTING_AROUND",
        "label": "Getting around",
        "count": 3,
        "iconUrl": "https://a0.muscache.com/im/pictures/AirbnbPlatformAssets/AirbnbPlatformAssets-Review-AI-Synthesis/original/1d5a4065-220e-4d80-b44f-019dd4a0ae68.png",
        "summary": null
      },
      {
        "tag": "WALKABILITY",
        "label": "Walkability",
        "count": 2,
        "iconUrl": "https://a0.muscache.com/im/pictures/AirbnbPlatformAssets/AirbnbPlatformAssets-Review-AI-Synthesis/original/65e4ab99-d873-45c7-95a4-cd0c55a2314f.png",
        "summary": null
      }
    ],
    "reviews": [
      {
        "reviewId": "1803513440490287309",
        "createdAt": "2026-10-24T08:59:15Z",
        "date": "2 days ago",
        "rating": 5,
        "room": null,
        "comment": "Very nice little studio in a very quiet area.",
        "originalComment": "Petit studio très agréable dans un quartier très calme.",
        "language": "fr",
        "translatedNotice": "Translated from French",
        "highlight": "Stayed a few nights",
        "highlightType": "LENGTH_OF_STAY",
        "reviewer": {
          "userId": "84385726",
          "contextualUserId": "1481740716537702421",
          "name": "Lionel",
          "pictureUrl": "https://a0.muscache.com/im/pictures/user/3ea4193d-6fbe-4ab2-8ceb-e06548b0b2f8.jpg",
          "isSuperhost": false,
          "tenure": "10 years on Airbnb"
        },
        "host": {
          "userId": "13287163",
          "contextualUserId": "1462907809019481093",
          "name": "Anita",
          "pictureUrl": "https://a0.muscache.com/im/pictures/user/User-13287163/original/09514d8c-64dc-401a-8ce5-d01df1b9a303.jpeg",
          "isSuperhost": false
        },
        "hostResponse": null,
        "respondedDate": null,
        "photos": []
      },
      {
        "reviewId": "1799919743846186039",
        "createdAt": "2026-10-19T09:59:13Z",
        "date": "1 week ago",
        "rating": 5,
        "room": null,
        "comment": "If you want to visit Paris, Monmarte is the neighborhood you want to be and this place was right in the heart. Easily accessible wiyhin 15 minutes walking from…",
        "originalComment": "If you want to visit Paris, Monmarte is the neighborhood you want to be and this place was right in the heart. Easily accessible wiyhin 15 minutes walking from…",
        "language": "en",
        "translatedNotice": null,
        "highlight": "Stayed a few nights",
        "highlightType": "LENGTH_OF_STAY",
        "reviewer": {
          "userId": "1783427825424103325",
          "contextualUserId": "1783427825483851054",
          "name": "Pavlos",
          "pictureUrl": "https://a0.muscache.com/im/pictures/user/User/original/c1b2b516-263d-4776-91f5-d63946dae83e.jpeg",
          "isSuperhost": false,
          "tenure": "1 month on Airbnb"
        },
        "host": {
          "userId": "13287163",
          "contextualUserId": "1462907809019481093",
          "name": "Anita",
          "pictureUrl": "https://a0.muscache.com/im/pictures/user/User-13287163/original/09514d8c-64dc-401a-8ce5-d01df1b9a303.jpeg",
          "isSuperhost": false
        },
        "hostResponse": null,
        "respondedDate": null,
        "photos": []
      }
    ]
  }
}

Example when something is wrong

{
  "status": false,
  "message": "Validation failed",
  "errors": [
    {
      "field": "listingId",
      "message": "\"listingId\" is required: the number from search results"
    }
  ]
}

Get Stay Availability Calendar

GET /api/v1/stays/availability-calendar

Availability calendar

Which days of a listing are free, month by month, with check-in and check-out rules and minimum nights.

- Starts at month and year (default: this month) and covers months months (1 to 12, default 12). The window ends 36 months from now. - Airbnb sends no price per day; use Get Stay Pricing for a price.

ParameterTypeRequiredDefaultDescription
listingIdstringyesThe listingId of a search result, e.g. 1772056939923148193
monthinteger (1..12)no1 to 12
yearinteger (2020..2100)noe.g. 2026
monthsinteger (1..12)no12How many months, 1 to 12 (default 12)

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/stays/availability-calendar?listingId=1782511868597718033&months=2' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Availability calendar",
  "data": {
    "listingId": "1782511868597718033",
    "firstBookableDate": "2026-10-29",
    "constantMinNights": null,
    "months": [
      {
        "month": 10,
        "year": 2026,
        "days": [
          {
            "date": "2026-10-01",
            "available": false,
            "bookable": null,
            "canCheckIn": false,
            "canCheckOut": false,
            "minNights": 1,
            "maxNights": 1
          },
          {
            "date": "2026-10-02",
            "available": false,
            "bookable": null,
            "canCheckIn": false,
            "canCheckOut": false,
            "minNights": 1,
            "maxNights": 1
          }
        ]
      },
      {
        "month": 11,
        "year": 2026,
        "days": [
          {
            "date": "2026-11-01",
            "available": false,
            "bookable": false,
            "canCheckIn": false,
            "canCheckOut": false,
            "minNights": 2,
            "maxNights": 365
          },
          {
            "date": "2026-11-02",
            "available": false,
            "bookable": false,
            "canCheckIn": false,
            "canCheckOut": false,
            "minNights": 2,
            "maxNights": 365
          }
        ]
      }
    ]
  }
}

Example when something is wrong

{
  "status": false,
  "message": "Validation failed",
  "errors": [
    {
      "field": "listingId",
      "message": "\"listingId\" is required: the number from search results"
    }
  ]
}

Experiences

Search Airbnb Experiences and read their details, prices, sessions and reviews.

Search Experience Destinations

GET /api/v1/experiences/autocomplete

Find a place for experiences

Type the first letters of a city, area or landmark and get matching places.

- Use the placeId in Search Experiences. The ids are the same as in the stays and services lookups. - Returns up to 10 places (default 5).

ParameterTypeRequiredDefaultDescription
querystringyesThe text typed, for example Lond.
limitinteger (1..10)no5How many places, 1 to 10. Default 5.
languageCodestringnoen-GBLanguage of the texts, for example en-GB, fr or ja. Values: Get Languages. Default en-GB.

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/experiences/autocomplete?query=Paris' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Places found",
  "data": {
    "count": 5,
    "places": [
      {
        "name": "Paris, France",
        "type": "LOCATION",
        "placeId": "ChIJD7fiBh9u5kcRYJSMaMOCCwQ",
        "acpId": "db9f8d81-98a0-4f97-8e5f-51f6987effdb",
        "query": "Paris, France",
        "countryCode": "FR",
        "placeTypes": [
          "locality",
          "political"
        ],
        "boundingBox": {
          "southWestLatitude": 48.8155622,
          "southWestLongitude": 2.2242171,
          "northEastLatitude": 48.9021476,
          "northEastLongitude": 2.4698511
        }
      },
      {
        "name": "Eiffel Tower, Paris, France",
        "type": "LOCATION",
        "placeId": "ChIJLU7jZClu5kcR4PcOOO6p3I0",
        "acpId": "134159b3-4f48-4163-807a-14b67547bca0",
        "query": "Eiffel Tower, Paris, France",
        "countryCode": "FR",
        "placeTypes": [
          "establishment",
          "point_of_interest"
        ],
        "boundingBox": {
          "southWestLatitude": 48.8566838197085,
          "southWestLongitude": 2.2934008,
          "northEastLatitude": 48.8593817802915,
          "northEastLongitude": 2.296314600000001
        }
      }
    ]
  }
}

Example when something is wrong

{
  "status": false,
  "message": "Validation failed",
  "errors": [
    {
      "field": "query",
      "message": "\"query\" is required: the text the user typed"
    }
  ]
}

Search Experiences

GET /api/v1/experiences/search

Search experiences

Search Airbnb Experiences (tours, classes, activities) in a place.

- Send placeId from Search Experience Destinations. Add dates, guests and filters if you like. - Up to 40 results per page; send nextCursor as cursor for the next page. Durations are in minutes. - To see the available filters call Get Experience Search Filters.

ParameterTypeRequiredDefaultDescription
placeIdstringnoThe exact place: the placeId from the autocomplete endpoint. Enough on its own.
querystringnoPlace name, for example London, United Kingdom. Prefer placeId; send either one.
checkInstringnoYYYY-MM-DD (send with checkOut)
checkOutstringnoYYYY-MM-DD, after checkIn (send with checkIn)
adultsinteger (1..16)no1 to 16
childreninteger (0..5)no0 to 5
infantsinteger (0..5)no0 to 5
categoryTagsstringnoComma separated category tags from GET /experiences/search-filters, e.g. Tag:5348
attractionTagsstringnoAttraction tags separated by commas, taken from an attraction tile of the home feed.
featuredTagsstringnoComma separated featured tags
ticketTagsstringnoComma separated ticket tags
travelerTagsstringnoComma separated traveler-type tags
accessibilityTagsstringnoComma separated accessibility tags
priceMininteger (0..1000000)noLowest price per guest, in currencyCode
priceMaxinteger (0..1000000)noHighest price per guest, in currencyCode; not below priceMin
minDurationinteger (0..1440)noShortest duration in MINUTES, 0 to 1440
maxDurationinteger (0..1440)noLongest duration in MINUTES, 0 to 1440; not below minDuration
timeOfDaystringnoComma separated: morning, afternoon, evening
languagesstringnoComma separated language ids from GET /experiences/search-filters
topRatedbooleannotrue = only top-rated experiences
limitinteger (2..40)no16Experiences per page, 2 to 40 (default 16)
cursorstringnoThe nextCursor of the previous answer, to get the next page.
currencyCodestringnoUSDCurrency of the prices, 3 letters. Values: Get Currency. Default USD.
languageCodestringnoen-GBLanguage of the texts, for example en-GB, fr or ja. Values: Get Languages. Default en-GB.

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/experiences/search?placeId=ChIJD7fiBh9u5kcRYJSMaMOCCwQ&limit=10' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Experiences found",
  "data": {
    "totalCount": 1233,
    "resultCount": 10,
    "nextCursor": "eyJzZWN0aW9uX29mZnNldCI6MCwiaXRlbXNfb2Zmc2V0IjoxMCwidmVyc2lvbiI6MX0=",
    "experiences": [
      {
        "experienceId": "7286500",
        "location": null,
        "url": "https://www.airbnb.com/experiences/7286500",
        "title": "Freeflow cold plunge & sauna at Sant Roch",
        "description": "Access all spaces freely and compose your own ritual at your own pace. An autonomous session, ideal for first-timers and regulars. Up to 75 minutes, adjusting …",
        "theme": "Wellness",
        "rating": 4.87,
        "reviewCount": 92,
        "durationMinutes": 75,
        "badges": [
          {
            "type": "EXPERIENCE_BADGE_TICKETS",
            "text": "Ticket"
          }
        ],
        "price": {
          "prefix": "From",
          "price": "$51 USD",
          "amount": 51,
          "originalPrice": null,
          "originalAmount": null,
          "qualifier": "/ guest",
          "description": "From $51 USD per guest",
          "breakdown": [
            {
              "description": "Adults",
              "price": "$50.48 USD per guest",
              "amount": 50.48,
              "originalPrice": null
            }
          ],
          "notes": [
            "Ages 18 and up"
          ]
        },
        "paymentMessages": [],
        "photos": [
          "https://a0.muscache.com/im/pictures/Mt/MtTemplate-7286500/original/52fbfc81-7d17-4611-afdc-04ac6ba8acf8.jpeg",
          "https://a0.muscache.com/im/pictures/Mt/MtTemplate-7286500/original/2c9fa3f4-82cf-49fc-8bcc-70402633ffe3.jpeg"
        ],
        "nextSession": null
      },
      {
        "experienceId": "7120471",
        "location": null,
        "url": "https://www.airbnb.com/experiences/7120471",
        "title": "Guided cold plunge & sauna at Sant Roch",
        "description": "Learn the principles of contrast therapy, move through guided sauna and cold immersion with breathwork and sound bowls, and share a collective ritual with fell…",
        "theme": "Wellness",
        "rating": 4.84,
        "reviewCount": 310,
        "durationMinutes": 75,
        "badges": [
          {
            "type": "EXPERIENCE_BADGE_POPULAR",
            "text": "Trending"
          }
        ],
        "price": {
          "prefix": "From",
          "price": "$45 USD",
          "amount": 45,
          "originalPrice": null,
          "originalAmount": null,
          "qualifier": "/ guest",
          "description": "From $45 USD per guest",
          "breakdown": [
            {
              "description": "Adults",
              "price": "$44.87 USD per guest",
              "amount": 44.87,
              "originalPrice": null
            }
          ],
          "notes": [
            "Ages 18 and up"
          ]
        },
        "paymentMessages": [],
        "photos": [
          "https://a0.muscache.com/im/pictures/Mt/MtTemplate-7120471/original/0cec0df6-1084-4414-895e-c5a7faa2b9c0.jpeg",
          "https://a0.muscache.com/im/pictures/Mt/MtTemplate-7120471/original/d1d1be07-9e0d-4bed-9c08-c65038c17e73.jpeg"
        ],
        "nextSession": null
      }
    ]
  }
}

Example when something is wrong

{
  "status": false,
  "message": "Validation failed",
  "errors": [
    {
      "field": "languageCode",
      "message": "\"languageCode\" \"xx-INVALID\" is not supported. See GET /common/languages for the codes."
    },
    {
      "field": "",
      "message": "Send \"placeId\" (exact, from GET /stays/autocomplete) or \"query\" (free text such as Paris, France): at least one of them"
    }
  ]
}

Get Experience Search Filters

GET /api/v1/experiences/search-filters

Filters available for experiences

The live filter menu for a place: categories, tags, price range, duration, time of day and languages.

- To apply an option, send its searchParam name with its value to Search Experiences.

ParameterTypeRequiredDefaultDescription
placeIdstringnoThe exact place: the placeId from the autocomplete endpoint. Enough on its own.
querystringnoPlace name, for example London, United Kingdom. Prefer placeId; send either one.
checkInstringnoYYYY-MM-DD (send with checkOut)
checkOutstringnoYYYY-MM-DD, after checkIn (send with checkIn)
adultsinteger (1..16)no1 to 16
childreninteger (0..5)no0 to 5
infantsinteger (0..5)no0 to 5
currencyCodestringnoUSDCurrency of the prices, 3 letters. Values: Get Currency. Default USD.
languageCodestringnoen-GBLanguage of the texts, for example en-GB, fr or ja. Values: Get Languages. Default en-GB.

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/experiences/search-filters?placeId=ChIJD7fiBh9u5kcRYJSMaMOCCwQ' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Search filters",
  "data": {
    "totalCount": 1233,
    "sections": [
      {
        "sectionId": "EXPERIENCE_FEATURED",
        "title": "Featured",
        "options": [
          {
            "kind": "choice",
            "title": "Food culture",
            "subtitle": null,
            "params": [
              {
                "key": "experience_featured_tags",
                "value": "Tag:41638",
                "valueType": "array",
                "searchParam": "featuredTags",
                "remove": false
              }
            ]
          },
          {
            "kind": "choice",
            "title": "Day trips",
            "subtitle": null,
            "params": [
              {
                "key": "experience_featured_tags",
                "value": "Tag:53594",
                "valueType": "array",
                "searchParam": "featuredTags",
                "remove": false
              }
            ]
          }
        ]
      },
      {
        "sectionId": "TAXONOMY",
        "title": "Experience type",
        "options": [
          {
            "kind": "choice",
            "title": "Architecture",
            "subtitle": null,
            "params": [
              {
                "key": "kg_or_tags",
                "value": "Tag:9010",
                "valueType": "array",
                "searchParam": "categoryTags",
                "remove": false
              }
            ]
          },
          {
            "kind": "choice",
            "title": "Art workshops",
            "subtitle": null,
            "params": [
              {
                "key": "kg_or_tags",
                "value": "Tag:8953",
                "valueType": "array",
                "searchParam": "categoryTags",
                "remove": false
              }
            ]
          }
        ]
      }
    ]
  }
}

Example when something is wrong

{
  "status": false,
  "message": "Validation failed",
  "errors": [
    {
      "field": "languageCode",
      "message": "\"languageCode\" \"xx-INVALID\" is not supported. See GET /common/languages for the codes."
    },
    {
      "field": "",
      "message": "Send \"placeId\" (exact, from GET /stays/autocomplete) or \"query\" (free text such as Paris, France): at least one of them"
    }
  ]
}

Get Experience Details

GET /api/v1/experiences/details

Experience details

The experience page: description, meeting point, location, hosts, highlights, what to bring, cancellation text, agenda, rating and photos.

- Get the experienceId from Search Experiences. - Every host has a contextualUserId for the Profiles endpoints.

ParameterTypeRequiredDefaultDescription
experienceIdstringyesThe experienceId of a search result, e.g. 6785604
currencyCodestringnoUSDCurrency of the prices, 3 letters. Values: Get Currency. Default USD.
languageCodestringnoen-GBLanguage of the texts, for example en-GB, fr or ja. Values: Get Languages. Default en-GB.

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/experiences/details?experienceId=7286500' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Experience details",
  "data": {
    "experienceId": "7286500",
    "url": "https://www.airbnb.com/experiences/7286500",
    "shareUrl": "https://www.airbnb.co.uk/experiences/7286500?viralityEntryP…",
    "title": "Freeflow cold plunge & sauna at Sant Roch",
    "description": "Access all spaces freely and compose your own ritual at you…",
    "meetingPoint": "Sant Roch",
    "category": "FITNESS_AND_WELLNESS",
    "theme": "Wellness",
    "location": {
      "city": "Paris",
      "address": "75001 Paris, France",
      "latitude": 48.86429492284356,
      "longitude": 2.331613020237735
    },
    "guestRequirements": {
      "minAge": 18,
      "childrenAllowed": false,
      "childrenMinAge": 2,
      "childrenMaxAge": 12,
      "infantsAllowed": false
    },
    "highlights": [
      {
        "type": "PROFILE",
        "title": "Hosted by Sant Roch or Léa",
        "text": "Contrast therapy wellness center",
        "imageUrl": "https://a0.muscache.com/im/pictures/user/User/original/e352…"
      }
    ],
    "tips": [
      {
        "type": "PRIVATE_GROUP",
        "name": "Private groups welcome"
      }
    ],
    "hosts": [
      {
        "isPrimary": true,
        "name": "Sant Roch",
        "userId": "1699532318741611226",
        "contextualUserId": "1699534166567210655",
        "jobTitle": "Host",
        "pictureUrl": "https://a0.muscache.com/im/pictures/user/User/original/e352…"
      }
    ],
    "aboutHost": "At Sant Roch, we believe contrast therapy should be accessi…",
    "thingsToKnow": [
      {
        "type": "WHAT_TO_BRING",
        "title": "What to bring",
        "text": "Swimsuit",
        "icon": "SYSTEM_BACKPACK"
      }
    ],
    "vetting": {
      "title": "Wellness experiences with knowledgeable hosts",
      "text": "Wellness experiences are led by nutritionists, meditation t…"
    },
    "agendaIntro": "Since antiquity, communal bathing has been a place for rest…",
    "agenda": [
      {
        "title": "Arrive at Sant Roch",
        "description": "Pick up your entry ticket and get oriented in the space bef…",
        "imageUrl": "https://a0.muscache.com/im/pictures/Mt/MtTemplate-7286500/o…"
      }
    ]
  }
}

Example when something is wrong

{
  "status": false,
  "message": "Validation failed",
  "errors": [
    {
      "field": "experienceId",
      "message": "\"experienceId\" is required: the `experienceId` of a search result"
    }
  ]
}

Get Experience Pricing

GET /api/v1/experiences/pricing

Experience price

The "from" price of an experience, per guest, with its breakdown.

ParameterTypeRequiredDefaultDescription
experienceIdstringyesThe experienceId of a search result, e.g. 6785604
adultsinteger (1..16)no1 to 16
childreninteger (0..5)no0 to 5
infantsinteger (0..5)no0 to 5
currencyCodestringnoUSDCurrency of the prices, 3 letters. Values: Get Currency. Default USD.
languageCodestringnoen-GBLanguage of the texts, for example en-GB, fr or ja. Values: Get Languages. Default en-GB.

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/experiences/pricing?experienceId=7286500' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Experience price",
  "data": {
    "experienceId": "7286500",
    "price": {
      "prefix": "From",
      "price": "$51 USD",
      "amount": 51,
      "originalPrice": null,
      "originalAmount": null,
      "qualifier": "/ guest",
      "description": "From $51 USD per guest",
      "breakdown": [
        {
          "description": "Adults",
          "price": "$50.48 USD per guest",
          "amount": 50.48,
          "originalPrice": null
        }
      ],
      "notes": [
        "Ages 18 and up"
      ]
    },
    "tips": {
      "pdpAboveFooter": {
        "description": "Up to 1 day before start time",
        "icon": "SYSTEM_CALENDAR",
        "name": "Free cancellation",
        "type": "FLEX_CANCELLATION"
      },
      "pdpInsideFooter": {
        "name": "Free cancellation",
        "type": "FLEX_CANCELLATION"
      }
    },
    "offerings": {
      "publishedOfferingsForCount": [
        {
          "id": "6605559"
        }
      ],
      "publishedOfferings": [
        {
          "id": "6605559",
          "pdpWhoIsGoingToInstances": [
            {
              "pricingAvailabilityDisplay": {
                "id": "Fv7EyLoBAA==",
                "instanceDay": "Today, 26 October",
                "instanceDuration": "16:45–18:00",
                "instanceEndTime": "18:00",
                "instanceStartTime": "16:45",
                "instanceStartTimeUtc": "2026-10-26T15:45:00.000Z",
                "isAvailable": false,
                "lowRemainingAvailability": false,
                "remainingCapacity": 0,
                "maximumCapacity": 2
              }
            },
            {
              "pricingAvailabilityDisplay": {
                "availabilityDescription": "3 spots left",
                "id": "Frjhy7oBAA==",
                "instanceDay": "Today, 26 October",
                "instanceDuration": "21:30–22:45",
                "instanceEndTime": "22:45",
                "instanceStartTime": "21:30",
                "instanceStartTimeUtc": "2026-10-26T20:30:00.000Z",
                "isAvailable": true,
                "lowRemainingAvailability": true,
                "remainingCapacity": 3,
                "maximumCapacity": 8
              }
            }
          ]
        }
      ]
    }
  }
}

Example when something is wrong

{
  "status": false,
  "message": "Validation failed",
  "errors": [
    {
      "field": "experienceId",
      "message": "\"experienceId\" is required: the `experienceId` of a search result"
    }
  ]
}

Get Experience Sessions

GET /api/v1/experiences/sessions

Bookable sessions

Bookable sessions of an experience: date, time, remaining seats and price, per offering.

- Set the window with from and to. Only real availability is returned. - Up to 100 sessions per offering (default 50). - This API does not book; offeringId and availabilityKey are for reference.

ParameterTypeRequiredDefaultDescription
experienceIdstringyesThe experienceId of a search result, e.g. 6785604
fromstringnoFirst day, YYYY-MM-DD (default today)
tostringnoLast day, YYYY-MM-DD, not before from, at most 366 days after it (default: a month after from)
adultsinteger (1..16)no1 to 16
childreninteger (0..5)no0 to 5
infantsinteger (0..5)no0 to 5
limitinteger (1..100)no50Sessions per offering, 1 to 100 (default 50)
currencyCodestringnoUSDCurrency of the prices, 3 letters. Values: Get Currency. Default USD.
languageCodestringnoen-GBLanguage of the texts, for example en-GB, fr or ja. Values: Get Languages. Default en-GB.

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/experiences/sessions?experienceId=7286500&from=2026-10-28&to=2026-12-25' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Sessions",
  "data": {
    "experienceId": "7286500",
    "timeZone": "Europe/Paris",
    "city": "Paris",
    "offerings": [
      {
        "offeringId": "6605559",
        "maxGuestsPublicGroup": 18,
        "maxGuestsPrivateGroup": 18,
        "freeForInfants": false,
        "hasNextPage": true,
        "sessions": [
          {
            "availabilityKey": "FrTMz7oBAA==",
            "day": "Wednesday, 28 October",
            "time": "13:30–14:45",
            "startTime": "13:30",
            "endTime": "14:45",
            "startsAtUtc": "2026-10-28T12:30:00.000Z",
            "availabilityText": "",
            "remainingCapacity": 7,
            "soldOut": false,
            "lowAvailability": false,
            "privateBookable": false,
            "onlyPrivateBookable": false,
            "price": {
              "prefix": null,
              "price": "$51 USD",
              "amount": 51,
              "originalPrice": null,
              "originalAmount": null,
              "qualifier": "for 1 guest",
              "description": "$51 USD for 1 guest",
              "breakdown": [
                {
                  "description": "$50.48 USD x 1 adult",
                  "price": "$50.48 USD",
                  "amount": 50.48,
                  "originalPrice": null
                }
              ],
              "notes": []
            },
            "pricePerGuest": {
              "prefix": null,
              "price": "$51 USD",
              "amount": 51,
              "originalPrice": null,
              "originalAmount": null,
              "qualifier": "/ guest",
              "description": "$51 USD per guest"
            }
          },
          {
            "availabilityKey": "FvDNz7oBAA==",
            "day": "Wednesday, 28 October",
            "time": "13:45–15:00",
            "startTime": "13:45",
            "endTime": "15:00",
            "startsAtUtc": "2026-10-28T12:45:00.000Z",
            "availabilityText": "",
            "remainingCapacity": 8,
            "soldOut": false,
            "lowAvailability": false,
            "privateBookable": true,
            "onlyPrivateBookable": false,
            "price": {
              "prefix": null,
              "price": "$51 USD",
              "amount": 51,
              "originalPrice": null,
              "originalAmount": null,
              "qualifier": "for 1 guest",
              "description": "$51 USD for 1 guest",
              "breakdown": [
                {
                  "description": "$50.48 USD x 1 adult",
                  "price": "$50.48 USD",
                  "amount": 50.48,
                  "originalPrice": null
                }
              ],
              "notes": []
            },
            "pricePerGuest": {
              "prefix": null,
              "price": "$51 USD",
              "amount": 51,
              "originalPrice": null,
              "originalAmount": null,
              "qualifier": "/ guest",
              "description": "$51 USD per guest"
            }
          }
        ]
      }
    ]
  }
}

Example when something is wrong

{
  "status": false,
  "message": "Validation failed",
  "errors": [
    {
      "field": "experienceId",
      "message": "\"experienceId\" is required: the `experienceId` of a search result"
    }
  ]
}

Get Experience Calendar

GET /api/v1/experiences/calendar

Experience calendar

Which days an experience has a session.

- The window can be up to 366 days.

ParameterTypeRequiredDefaultDescription
experienceIdstringyesThe experienceId of a search result, e.g. 6785604
fromstringnoFirst day, YYYY-MM-DD (default today)
tostringnoLast day, YYYY-MM-DD, not before from, at most 366 days after it (default: a month after from)
adultsinteger (1..16)no1 to 16

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/experiences/calendar?experienceId=7286500' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Availability calendar",
  "data": {
    "count": 32,
    "availableCount": 31,
    "days": [
      {
        "date": "2026-10-26",
        "available": true
      },
      {
        "date": "2026-10-27",
        "available": true
      }
    ]
  }
}

Example when something is wrong

{
  "status": false,
  "message": "Validation failed",
  "errors": [
    {
      "field": "experienceId",
      "message": "\"experienceId\" is required: the `experienceId` of a search result"
    }
  ]
}

Get Experience Reviews

GET /api/v1/experiences/reviews

Experience reviews

Guest reviews of an experience, page by page.

- Use limit (1 to 50) and offset to page.

ParameterTypeRequiredDefaultDescription
experienceIdstringyesThe experienceId of a search result, e.g. 6785604
limitinteger (1..50)no201 to 50 (default 20)
offsetinteger (0..100000)no0Reviews to skip (default 0)
languageCodestringnoen-GBLanguage of the texts, for example en-GB, fr or ja. Values: Get Languages. Default en-GB.

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/experiences/reviews?experienceId=7286500&limit=5' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Reviews found",
  "data": {
    "resultCount": 5,
    "hasNextPage": true,
    "reviews": [
      {
        "reviewId": "1804517929640523403",
        "createdAt": "2026-10-25T18:15:00.374Z",
        "date": "Today",
        "rating": 5,
        "comment": "Very good experience",
        "originalComment": "Tres bonne expérience",
        "offering": null,
        "paidPromotionNotice": null,
        "language": "fr",
        "reviewer": {
          "userId": "1483776458608577863",
          "name": "Lucie",
          "pictureUrl": "https://a0.muscache.com/im/pictures/user/User-296661167/original/e50263e5-fcc9-406e-9e65-53cab0255e6a.jpeg?aki_policy=profile_x_medium",
          "location": "Nantes, France"
        },
        "host": {
          "userId": "1699534166567210655",
          "name": "Sant Roch",
          "pictureUrl": "https://a0.muscache.com/im/pictures/user/User/original/e352de93-e172-4774-8cfc-e3f54a90d901.jpeg?aki_policy=profile_x_medium",
          "location": null
        },
        "hostResponse": null,
        "respondedAt": null,
        "respondedDate": null
      },
      {
        "reviewId": "1804434884897618014",
        "createdAt": "2026-10-25T15:30:00.669Z",
        "date": "Today",
        "rating": 5,
        "comment": "Fantastic and relaxing experience in the middle of Paris! We left feeling completely relaxed and rejuvenated.\n\nHighly recommend taking the time to book a sessi…",
        "originalComment": "Fantastic and relaxing experience in the middle of Paris! We left feeling completely relaxed and rejuvenated.\n\nHighly recommend taking the time to book a sessi…",
        "offering": null,
        "paidPromotionNotice": null,
        "language": "en-GB",
        "reviewer": {
          "userId": "1501698887216912922",
          "name": "Sam",
          "pictureUrl": "https://a0.muscache.com/im/pictures/user/e83dddde-73c3-4144-aa85-822a5d3b9a16.jpg?aki_policy=profile_x_medium",
          "location": "Melbourne, Australia"
        },
        "host": {
          "userId": "1699534166567210655",
          "name": "Sant Roch",
          "pictureUrl": "https://a0.muscache.com/im/pictures/user/User/original/e352de93-e172-4774-8cfc-e3f54a90d901.jpeg?aki_policy=profile_x_medium",
          "location": null
        },
        "hostResponse": null,
        "respondedAt": null,
        "respondedDate": null
      }
    ]
  }
}

Example when something is wrong

{
  "status": false,
  "message": "Validation failed",
  "errors": [
    {
      "field": "experienceId",
      "message": "\"experienceId\" is required: the `experienceId` of a search result"
    }
  ]
}

Get Similar Experiences

GET /api/v1/experiences/similar

Similar experiences

The "More experiences" row at the bottom of an experience page.

- Each card has an experienceId that opens Get Experience Details.

ParameterTypeRequiredDefaultDescription
experienceIdstringyesThe experienceId of a search result, e.g. 6785604
currencyCodestringnoUSDCurrency of the prices, 3 letters. Values: Get Currency. Default USD.
languageCodestringnoen-GBLanguage of the texts, for example en-GB, fr or ja. Values: Get Languages. Default en-GB.

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/experiences/similar?experienceId=7286500' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Similar experiences",
  "data": {
    "count": 7,
    "experiences": [
      {
        "experienceId": "7120471",
        "location": null,
        "url": "https://www.airbnb.com/experiences/7120471",
        "title": "Guided cold plunge & sauna at Sant Roch",
        "description": null,
        "theme": "Wellness",
        "rating": 4.84,
        "reviewCount": 310,
        "durationMinutes": 75,
        "badges": [],
        "price": {
          "prefix": "From",
          "price": "$45 USD",
          "amount": 45,
          "originalPrice": null,
          "originalAmount": null,
          "qualifier": "/ guest",
          "description": "From $45 USD per guest",
          "breakdown": [],
          "notes": []
        },
        "paymentMessages": [],
        "photos": [
          "https://a0.muscache.com/im/pictures/Mt/MtTemplate-7120471/original/0cec0df6-1084-4414-895e-c5a7faa2b9c0.jpeg",
          "https://a0.muscache.com/im/pictures/Mt/MtTemplate-7120471/original/d1d1be07-9e0d-4bed-9c08-c65038c17e73.jpeg"
        ],
        "nextSession": null
      },
      {
        "experienceId": "6785604",
        "location": null,
        "url": "https://www.airbnb.com/experiences/6785604",
        "title": "Fast-Access Seine River Cruise from Eiffel Tower",
        "description": null,
        "theme": "Cultural tours",
        "rating": 4.79,
        "reviewCount": 4131,
        "durationMinutes": 60,
        "badges": [],
        "price": {
          "prefix": "From",
          "price": "$24 USD",
          "amount": 24,
          "originalPrice": null,
          "originalAmount": null,
          "qualifier": "/ guest",
          "description": "From $24 USD per guest",
          "breakdown": [],
          "notes": []
        },
        "paymentMessages": [],
        "photos": [
          "https://a0.muscache.com/im/pictures/Mt/MtTemplate-6785604/original/d19a8935-1762-403c-ad39-05b59bce45fc.jpeg",
          "https://a0.muscache.com/im/pictures/Mt/MtTemplate-6785604/original/1361fd0b-75a1-49e6-97bc-4dff634c2c86.jpeg"
        ],
        "nextSession": null
      }
    ]
  }
}

Example when something is wrong

{
  "status": false,
  "message": "Validation failed",
  "errors": [
    {
      "field": "experienceId",
      "message": "\"experienceId\" is required: the `experienceId` of a search result"
    }
  ]
}

Services

Search Airbnb Services (chefs, photographers and more) and read their details, calendars and time slots.

Search Service Destinations

GET /api/v1/services/autocomplete

Find a place for services

Type the first letters of a city, area or landmark and get matching places.

- Use the placeId in Get Service Types. The ids are the same as in the stays and experiences lookups. - Returns up to 10 places (default 5).

ParameterTypeRequiredDefaultDescription
querystringyesThe text typed, for example Lond.
limitinteger (1..10)no5How many places, 1 to 10. Default 5.
languageCodestringnoen-GBLanguage of the texts, for example en-GB, fr or ja. Values: Get Languages. Default en-GB.

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/services/autocomplete?query=Paris' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Places found",
  "data": {
    "count": 5,
    "places": [
      {
        "name": "Paris, France",
        "type": "LOCATION",
        "placeId": "ChIJD7fiBh9u5kcRYJSMaMOCCwQ",
        "acpId": "db9f8d81-98a0-4f97-8e5f-51f6987effdb",
        "query": "Paris, France",
        "countryCode": "FR",
        "placeTypes": [
          "locality",
          "political"
        ],
        "boundingBox": {
          "southWestLatitude": 48.8155622,
          "southWestLongitude": 2.2242171,
          "northEastLatitude": 48.9021476,
          "northEastLongitude": 2.4698511
        }
      },
      {
        "name": "Eiffel Tower, Paris, France",
        "type": "LOCATION",
        "placeId": "ChIJLU7jZClu5kcR4PcOOO6p3I0",
        "acpId": "134159b3-4f48-4163-807a-14b67547bca0",
        "query": "Eiffel Tower, Paris, France",
        "countryCode": "FR",
        "placeTypes": [
          "establishment",
          "point_of_interest"
        ],
        "boundingBox": {
          "southWestLatitude": 48.8566838197085,
          "southWestLongitude": 2.2934008,
          "northEastLatitude": 48.8593817802915,
          "northEastLongitude": 2.296314600000001
        }
      }
    ]
  }
}

Example when something is wrong

{
  "status": false,
  "message": "Validation failed",
  "errors": [
    {
      "field": "query",
      "message": "\"query\" is required: the text the user typed"
    }
  ]
}

Get Service Types

GET /api/v1/services/types

Service types in a place

The kinds of service offered in a place (photography, chefs, massage and more).

- Use the serviceType of a type in Search Services.

ParameterTypeRequiredDefaultDescription
placeIdstringnoThe exact place: the placeId from the autocomplete endpoint. Enough on its own.
querystringnoPlace name, for example London, United Kingdom. Prefer placeId; send either one.
languageCodestringnoen-GBLanguage of the texts, for example en-GB, fr or ja. Values: Get Languages. Default en-GB.

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/services/types?placeId=ChIJD7fiBh9u5kcRYJSMaMOCCwQ' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Service types",
  "data": {
    "place": "Paris",
    "count": 9,
    "types": [
      {
        "title": "Photography",
        "serviceType": "Tag:8949",
        "imageUrl": "https://a0.muscache.com/im/pictures/airbnb-platform-assets/AirbnbPlatformAssets-isometric-images/original/e5fea971-fbfe-41fd-a331-7372b54c4192.png"
      },
      {
        "title": "Chefs",
        "serviceType": "Tag:8950",
        "imageUrl": "https://a0.muscache.com/im/pictures/airbnb-platform-assets/AirbnbPlatformAssets-isometric-images/original/68fb553b-4706-4f6d-a102-9a7b6e1ebf83.png"
      }
    ],
    "partnerServices": [
      {
        "title": "Car hire",
        "imageUrl": "https://a0.muscache.com/im/pictures/AirbnbPlatformAssets/AirbnbPlatformAssets-Restricted_Use_FPO_AI_Assets/original/a182e680-1775-44c6-bb1a-6a9452dd2de4.png"
      }
    ]
  }
}

Example when something is wrong

{
  "status": false,
  "message": "Validation failed",
  "errors": [
    {
      "field": "languageCode",
      "message": "\"languageCode\" \"xx-INVALID\" is not supported. See GET /common/languages for the codes."
    },
    {
      "field": "",
      "message": "Send \"placeId\" (exact, from GET /stays/autocomplete) or \"query\" (free text such as Paris, France): at least one of them"
    }
  ]
}

Search Services

GET /api/v1/services/search

Search services

Search Airbnb Services (chefs, photographers and more) of one type in a place.

- Send placeId and serviceType from Get Service Types. - Up to 40 results per page; send nextCursor as cursor for the next page. - To see the available filters call Get Service Search Filters.

ParameterTypeRequiredDefaultDescription
placeIdstringnoThe exact place: the placeId from the autocomplete endpoint. Enough on its own.
querystringnoPlace name, for example London, United Kingdom. Prefer placeId; send either one.
serviceTypestringyesThe kind of service, a tag from GET /services/types, e.g. Tag:8952
checkInstringnoA day to check, YYYY-MM-DD
adultsinteger (1..16)no1 to 16
childreninteger (0..5)no0 to 5
infantsinteger (0..5)no0 to 5
priceMininteger (0..1000000)noLowest price per guest
priceMaxinteger (0..1000000)noHighest price per guest
minDurationinteger (0..1440)noShortest duration in minutes
maxDurationinteger (0..1440)noLongest duration in minutes
timeOfDaystringnoComma separated: morning, afternoon, evening
accessibilityTagsstringnoAccessibility tags separated by commas, from the search filters endpoint.
languagesstringnoComma separated language ids from GET /services/search-filters
limitinteger (2..40)no16Services per page, 2 to 40 (default 16)
cursorstringnoThe nextCursor of the previous answer, to get the next page.
currencyCodestringnoUSDCurrency of the prices, 3 letters. Values: Get Currency. Default USD.
languageCodestringnoen-GBLanguage of the texts, for example en-GB, fr or ja. Values: Get Languages. Default en-GB.

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/services/search?placeId=ChIJD7fiBh9u5kcRYJSMaMOCCwQ&serviceType=Tag%3A8949&limit=10' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Services found",
  "data": {
    "totalCount": 692,
    "resultCount": 10,
    "nextCursor": "eyJzZWN0aW9uX29mZnNldCI6MCwiaXRlbXNfb2Zmc2V0IjoxMCwidmVyc2lvbiI6MX0=",
    "services": [
      {
        "serviceId": "1946234",
        "url": "https://www.airbnb.com/services/1946234",
        "title": "Cinematic photos in Paris by Shithila",
        "description": "I provide beautiful cinematic photography in iconic Paris locations.",
        "category": "Photography",
        "rating": 4.99,
        "reviewCount": 1397,
        "yearsOfExperience": 9,
        "where": "In home",
        "duration": null,
        "highlight": null,
        "host": {
          "name": "Shithila",
          "pictureUrl": "https://a0.muscache.com/im/pictures/user/ba27605c-11a9-4597-8596-9cc91bc5359b.jpg?aki_policy=profile_x_medium"
        },
        "badges": [],
        "price": {
          "prefix": "From",
          "price": "$54 USD",
          "amount": 54,
          "originalPrice": null,
          "originalAmount": null,
          "qualifier": "/ guest",
          "description": "From $54 USD per guest",
          "breakdown": [
            {
              "description": "Mini Photo Session",
              "price": "From $53.84 USD per guest",
              "amount": 53.84,
              "originalPrice": null
            }
          ],
          "notes": []
        },
        "paymentMessages": [],
        "photo": "https://a0.muscache.com/im/pictures/Mt/MtTemplate-1946234/original/8c83f3b8-8329-459b-8fad-6aa4f74ffc41.jpeg",
        "nextAvailabilityKey": "LBbw75sFGBgyMDI2LTEwLTI3VDA5OjAwOjAwLjAwMFoAAA=="
      },
      {
        "serviceId": "6100522",
        "url": "https://www.airbnb.com/services/6100522",
        "title": "Eiffel Tower photo sessions by Picster!",
        "description": "We're number one in Paris for a reason! With over 10,000 happy customers on all platforms, we know Paris like the back of our hands, and we're super excited to…",
        "category": "Photography",
        "rating": 4.81,
        "reviewCount": 350,
        "yearsOfExperience": 3,
        "where": null,
        "duration": null,
        "highlight": null,
        "host": {
          "name": "Lis",
          "pictureUrl": "https://a0.muscache.com/im/pictures/user/User/original/4aa0c15a-5804-4ddf-b41a-a0a0c82e48c7.jpeg?aki_policy=profile_x_medium"
        },
        "badges": [],
        "price": {
          "prefix": "From",
          "price": "$67 USD",
          "amount": 67,
          "originalPrice": null,
          "originalAmount": null,
          "qualifier": "/ group",
          "description": "From $67 USD per group",
          "breakdown": [
            {
              "description": "20 photo session",
              "price": "From $66.18 USD per group",
              "amount": 66.18,
              "originalPrice": null
            }
          ],
          "notes": [
            "Up to 10 guests"
          ]
        },
        "paymentMessages": [],
        "photo": "https://a0.muscache.com/im/pictures/Mt/MtTemplate-6100522/original/45281bd5-141e-4fa9-96b9-03eeaf71e037.jpeg",
        "nextAvailabilityKey": "LBbWl5kFGBgyMDI2LTEwLTI2VDEzOjQ1OjAwLjAwMFoAAA=="
      }
    ]
  }
}

Example when something is wrong

{
  "status": false,
  "message": "Validation failed",
  "errors": [
    {
      "field": "serviceType",
      "message": "\"serviceType\" is required: a type tag from GET /services/types, e.g. Tag:8952"
    },
    {
      "field": "",
      "message": "Send \"placeId\" (exact, from GET /stays/autocomplete) or \"query\" (free text such as Paris, France): at least one of them"
    }
  ]
}

Get Service Search Filters

GET /api/v1/services/search-filters

Filters available for services

The live filter menu for one service type in a place.

- To apply an option, send its searchParam name with its value to Search Services.

ParameterTypeRequiredDefaultDescription
placeIdstringnoThe exact place: the placeId from the autocomplete endpoint. Enough on its own.
querystringnoPlace name, for example London, United Kingdom. Prefer placeId; send either one.
serviceTypestringyesThe kind of service, a tag from GET /services/types, e.g. Tag:8952
currencyCodestringnoUSDCurrency of the prices, 3 letters. Values: Get Currency. Default USD.
languageCodestringnoen-GBLanguage of the texts, for example en-GB, fr or ja. Values: Get Languages. Default en-GB.

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/services/search-filters?placeId=ChIJD7fiBh9u5kcRYJSMaMOCCwQ&serviceType=Tag%3A8949' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Search filters",
  "data": {
    "totalCount": 692,
    "sections": [
      {
        "sectionId": "PRICE_RANGE",
        "title": "Price per guest",
        "options": [
          {
            "kind": "price-range",
            "title": "$10 USD - $1,300 USD",
            "subtitle": "Prices before fees and taxes",
            "params": [
              {
                "key": "service_price_min",
                "value": null,
                "valueType": "integer",
                "searchParam": "priceMin",
                "remove": false
              },
              {
                "key": "service_price_max",
                "value": null,
                "valueType": "integer",
                "searchParam": "priceMax",
                "remove": false
              }
            ],
            "minValue": 10,
            "maxValue": 1300,
            "histogram": [
              0,
              0
            ]
          }
        ]
      },
      {
        "sectionId": "EXPERIENCE_MAX_DURATION",
        "title": "Duration",
        "options": [
          {
            "kind": "stepper",
            "title": null,
            "subtitle": null,
            "params": [
              {
                "key": "min_duration",
                "value": null,
                "valueType": "integer",
                "searchParam": "minDuration",
                "remove": false
              },
              {
                "key": "max_duration",
                "value": null,
                "valueType": "integer",
                "searchParam": "maxDuration",
                "remove": false
              }
            ],
            "minValue": 30,
            "maxValue": 300
          }
        ]
      }
    ]
  }
}

Example when something is wrong

{
  "status": false,
  "message": "Validation failed",
  "errors": [
    {
      "field": "serviceType",
      "message": "\"serviceType\" is required: a type tag from GET /services/types"
    },
    {
      "field": "",
      "message": "Send \"placeId\" (exact, from GET /stays/autocomplete) or \"query\" (free text such as Paris, France): at least one of them"
    }
  ]
}

Get Service Details

GET /api/v1/services/details

Service details

The service page: description, meeting point, location, service area, host with qualifications, guest requirements, cancellation text, rating and photos.

- Get the serviceId from Search Services. - Prices are in Get Service Offerings. The host contextualUserId opens the Profiles endpoints.

ParameterTypeRequiredDefaultDescription
serviceIdstringyesThe serviceId of a search result, e.g. 6740930
currencyCodestringnoUSDCurrency of the prices, 3 letters. Values: Get Currency. Default USD.
languageCodestringnoen-GBLanguage of the texts, for example en-GB, fr or ja. Values: Get Languages. Default en-GB.

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/services/details?serviceId=1946234' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Service details",
  "data": {
    "serviceId": "1946234",
    "url": "https://www.airbnb.com/services/1946234",
    "shareUrl": "https://www.airbnb.co.uk/services/1946234?viralityEntryPoint=179&s=76",
    "title": "Cinematic photos in Paris by Shithila",
    "description": "I provide beautiful cinematic photography in iconic Paris locations.",
    "meetingPoint": "Trocadéro",
    "category": "PHOTOGRAPHER",
    "hostTitle": "Photographer in Paris",
    "providedAt": "Provided at your home",
    "meetingTypes": [
      "TRAVEL_TO_HOST",
      "TRAVEL_TO_GUEST"
    ],
    "location": {
      "city": "Paris",
      "address": "75116 Paris, France",
      "latitude": 48.8636126,
      "longitude": 2.2866415,
      "serviceAreaText": "I travel to guests in the area outlined on the map. To book in a different location, you can message me.",
      "serviceArea": {
        "northEast": {
          "latitude": 48.9831,
          "longitude": 2.6912
        },
        "southWest": {
          "latitude": 48.6059,
          "longitude": 2.0862
        }
      }
    },
    "host": {
      "name": "Shithila",
      "userId": "327821587",
      "contextualUserId": "1463459996822402102",
      "jobTitle": "Photographer",
      "pictureUrl": "https://a0.muscache.com/im/pictures/user/ba27605c-11a9-4597-8596-9cc91bc5359b.jpg",
      "about": "Hi there! I'm Shithila. A passionate photographer and filmmaker based in Paris. I've been practicing and exploring the art of photography for more than 7 years…",
      "qualifications": [
        {
          "icon": "SYSTEM_CAMERA",
          "title": "9 years of experience",
          "description": "I've been exploring and pursuing my craft in photography for over nine years."
        },
        {
          "icon": "SYSTEM_STAR_BRIGHT",
          "title": "Career highlight",
          "description": "I’ve worked with over 1,500 clients from around the world."
        }
      ]
    },
    "thingsToKnow": [
      {
        "type": "GUEST_REQUIREMENTS",
        "title": "Guest requirements",
        "text": "Guests aged 2 and up can attend.",
        "icon": "SYSTEM_TEAM_STROKED"
      },
      {
        "type": "ACCESSIBILITY",
        "title": "Accessibility",
        "text": "Message your host for details.",
        "icon": "SYSTEM_ACCESSIBILITY"
      }
    ],
    "rating": {
      "average": 4.99,
      "count": 1397,
      "writtenCount": 1397
    },
    "galleryTitle": "My portfolio",
    "photos": [
      {
        "imageId": "2171626452",
        "url": "https://a0.muscache.com/im/pictures/Mt/MtTemplate-1946234/original/8c83f3b8-8329-459b-8fad-6aa4f74ffc41.jpeg",
        "aspectRatio": 1.4969413458078447
      },
      {
        "imageId": "2143497520",
        "url": "https://a0.muscache.com/im/pictures/Mt/MtTemplate-1946234/original/7e4c3600-e191-413f-a2be-fff8c96809c1.jpeg",
        "aspectRatio": 0.7962697274031564
      }
    ]
  }
}

Example when something is wrong

{
  "status": false,
  "message": "Validation failed",
  "errors": [
    {
      "field": "serviceId",
      "message": "\"serviceId\" is required: the `serviceId` of a search result"
    }
  ]
}

Get Service Offerings

GET /api/v1/services/offerings

Service packages and prices

What the provider offers: each package with title, description, duration and price, plus the "from" price and the cancellation rule.

- Set the window with from and to (up to 366 days).

ParameterTypeRequiredDefaultDescription
serviceIdstringyesThe serviceId of a search result, e.g. 6740930
fromstringnoFirst day, YYYY-MM-DD (default today)
tostringnoLast day, YYYY-MM-DD, not before from. Default one month after from.
adultsinteger (1..16)no1 to 16
childreninteger (0..5)no0 to 5
infantsinteger (0..5)no0 to 5
currencyCodestringnoUSDCurrency of the prices, 3 letters. Values: Get Currency. Default USD.
languageCodestringnoen-GBLanguage of the texts, for example en-GB, fr or ja. Values: Get Languages. Default en-GB.

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/services/offerings?serviceId=1946234' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Service offerings",
  "data": {
    "serviceId": "1946234",
    "fromPrice": {
      "prefix": "From",
      "price": "$54 USD",
      "amount": 54,
      "originalPrice": null,
      "originalAmount": null,
      "qualifier": "/ guest",
      "description": "From $54 USD per guest"
    },
    "showOfferingDuration": true,
    "cancellation": {
      "type": "FLEX_CANCELLATION",
      "name": "Free cancellation",
      "description": "Up to 1 day before start time"
    },
    "offerings": [
      {
        "offeringId": "5471224",
        "title": "Mini Photo Session",
        "description": "A short and sweet 30 min session at the Eiffel Tower. 15 professionally edited photos, plus all the unedited images. On the same day, I'll send you a link to c…",
        "duration": "30 mins",
        "imageUrl": "https://a0.muscache.com/im/pictures/Mt/MtTemplate-1946234/original/0a29c125-76c0-4f91-b285-cae9a14d21b9.jpeg",
        "price": {
          "prefix": null,
          "price": "$54 USD",
          "amount": 54,
          "originalPrice": null,
          "originalAmount": null,
          "qualifier": "/ guest",
          "description": "$54 USD per guest"
        },
        "availability": "Available"
      },
      {
        "offeringId": "5349065",
        "title": "Eiffel Tower photoshoot",
        "description": "60-minute shoot around the Eiffel Tower, covering Trocadéro, the Seine, Avenue de New York & Bir-Hakeim Bridge. Includes 30 edited photos + all unedited images…",
        "duration": "1 hr",
        "imageUrl": "https://a0.muscache.com/im/pictures/Mt/MtTemplate-1946234/original/36549457-5f12-4336-8d60-0d0adf7543f3.jpeg",
        "price": {
          "prefix": null,
          "price": "$96 USD",
          "amount": 96,
          "originalPrice": null,
          "originalAmount": null,
          "qualifier": "/ guest",
          "description": "$96 USD per guest"
        },
        "availability": "Available"
      }
    ]
  }
}

Example when something is wrong

{
  "status": false,
  "message": "Validation failed",
  "errors": [
    {
      "field": "serviceId",
      "message": "\"serviceId\" is required: the `serviceId` of a search result"
    }
  ]
}

Get Service Location

GET /api/v1/services/location

Service location

Where the service takes place: the area covered, whether a custom location is allowed and how it is booked.

ParameterTypeRequiredDefaultDescription
serviceIdstringyesThe serviceId of a search result, e.g. 6740930
languageCodestringnoen-GBLanguage of the texts, for example en-GB, fr or ja. Values: Get Languages. Default en-GB.

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/services/location?serviceId=1946234' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Service location",
  "data": {
    "host": "Shithila",
    "title": "Confirm where you want your photo shoot",
    "subtitle": "Shithila travels to guests in Paris.",
    "allowsCustomLocation": false,
    "serviceArea": {
      "northEast": {
        "latitude": 48.9831,
        "longitude": 2.6912
      },
      "southWest": {
        "latitude": 48.6059,
        "longitude": 2.0862
      }
    },
    "coordinate": {
      "latitude": 48.8636126,
      "longitude": 2.2866415
    },
    "bookingFlow": "INSTANT_BOOK",
    "bookingWarning": null,
    "locationTitle": "Your service host’s location"
  }
}

Example when something is wrong

{
  "status": false,
  "message": "Validation failed",
  "errors": [
    {
      "field": "serviceId",
      "message": "\"serviceId\" is required: the `serviceId` of a search result"
    }
  ]
}

Get Service Calendar

GET /api/v1/services/calendar

Service calendar

Which days the provider is free.

- The window can be up to 366 days.

ParameterTypeRequiredDefaultDescription
serviceIdstringyesThe serviceId of a search result, e.g. 6740930
fromstringnoFirst day, YYYY-MM-DD (default today)
tostringnoLast day, YYYY-MM-DD, not before from. Default one month after from.
adultsinteger (1..16)no1 to 16
languageCodestringnoen-GBLanguage of the texts, for example en-GB, fr or ja. Values: Get Languages. Default en-GB.

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/services/calendar?serviceId=1946234' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Availability calendar",
  "data": {
    "count": 32,
    "availableCount": 30,
    "days": [
      {
        "date": "2026-10-26",
        "available": true
      },
      {
        "date": "2026-10-27",
        "available": true
      }
    ]
  }
}

Example when something is wrong

{
  "status": false,
  "message": "Validation failed",
  "errors": [
    {
      "field": "serviceId",
      "message": "\"serviceId\" is required: the `serviceId` of a search result"
    }
  ]
}

Get Service Time Slots

GET /api/v1/services/slots

Service time slots

Packages with their start times and price, per day.

- The window is at most 14 days. - This API does not book; offeringId and availabilityKey are for reference.

ParameterTypeRequiredDefaultDescription
serviceIdstringyesThe serviceId of a search result, e.g. 6740930
fromstringnoFirst day, YYYY-MM-DD (default today)
tostringnoLast day, YYYY-MM-DD, not before from, at most 14 days after it.
adultsinteger (1..16)no1 to 16
currencyCodestringnoUSDCurrency of the prices, 3 letters. Values: Get Currency. Default USD.
languageCodestringnoen-GBLanguage of the texts, for example en-GB, fr or ja. Values: Get Languages. Default en-GB.

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/services/slots?serviceId=1946234&from=2026-10-29&to=2026-10-30' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Offerings and time slots",
  "data": {
    "title": "Schedule your photo shoot",
    "host": "Shithila",
    "days": [
      {
        "date": "2026-10-29",
        "available": true,
        "offerings": [
          {
            "offeringId": "5471224",
            "title": "Mini Photo Session",
            "description": "A short and sweet 30 min session at the Eiffel Tower. 15 professional…",
            "duration": "30 mins",
            "durationMinutes": 30,
            "maxGuestsPrivateGroup": 7,
            "photo": "https://a0.muscache.com/im/pictures/Mt/MtTemplate-1946234/original/0a…",
            "price": {
              "prefix": null,
              "price": "$54 USD",
              "amount": 54,
              "originalPrice": null,
              "originalAmount": null,
              "qualifier": "/ guest",
              "description": "$54 USD per guest",
              "breakdown": [],
              "notes": []
            },
            "slots": [
              {},
              {}
            ]
          },
          {
            "offeringId": "5349065",
            "title": "Eiffel Tower photoshoot",
            "description": "60-minute shoot around the Eiffel Tower, covering Trocadéro, the Sein…",
            "duration": "1 hr",
            "durationMinutes": 60,
            "maxGuestsPrivateGroup": 5,
            "photo": "https://a0.muscache.com/im/pictures/Mt/MtTemplate-1946234/original/36…",
            "price": {
              "prefix": null,
              "price": "$96 USD",
              "amount": 96,
              "originalPrice": null,
              "originalAmount": null,
              "qualifier": "/ guest",
              "description": "$96 USD per guest",
              "breakdown": [],
              "notes": []
            },
            "slots": [
              {},
              {}
            ]
          }
        ]
      },
      {
        "date": "2026-10-30",
        "available": true,
        "offerings": [
          {
            "offeringId": "5471224",
            "title": "Mini Photo Session",
            "description": "A short and sweet 30 min session at the Eiffel Tower. 15 professional…",
            "duration": "30 mins",
            "durationMinutes": 30,
            "maxGuestsPrivateGroup": 7,
            "photo": "https://a0.muscache.com/im/pictures/Mt/MtTemplate-1946234/original/0a…",
            "price": {
              "prefix": null,
              "price": "$54 USD",
              "amount": 54,
              "originalPrice": null,
              "originalAmount": null,
              "qualifier": "/ guest",
              "description": "$54 USD per guest",
              "breakdown": [],
              "notes": []
            },
            "slots": [
              {},
              {}
            ]
          },
          {
            "offeringId": "5349065",
            "title": "Eiffel Tower photoshoot",
            "description": "60-minute shoot around the Eiffel Tower, covering Trocadéro, the Sein…",
            "duration": "1 hr",
            "durationMinutes": 60,
            "maxGuestsPrivateGroup": 5,
            "photo": "https://a0.muscache.com/im/pictures/Mt/MtTemplate-1946234/original/36…",
            "price": {
              "prefix": null,
              "price": "$96 USD",
              "amount": 96,
              "originalPrice": null,
              "originalAmount": null,
              "qualifier": "/ guest",
              "description": "$96 USD per guest",
              "breakdown": [],
              "notes": []
            },
            "slots": [
              {},
              {}
            ]
          }
        ]
      }
    ]
  }
}

Example when something is wrong

{
  "status": false,
  "message": "Validation failed",
  "errors": [
    {
      "field": "serviceId",
      "message": "\"serviceId\" is required: the `serviceId` of a search result"
    }
  ]
}

Get Service Reviews

GET /api/v1/services/reviews

Service reviews

Guest reviews of a service, page by page.

- Use limit (1 to 50) and offset to page.

ParameterTypeRequiredDefaultDescription
serviceIdstringyesThe serviceId of a search result, e.g. 6740930
limitinteger (1..50)no201 to 50 (default 20)
offsetinteger (0..100000)no0Reviews to skip (default 0)
languageCodestringnoen-GBLanguage of the texts, for example en-GB, fr or ja. Values: Get Languages. Default en-GB.

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/services/reviews?serviceId=1946234&limit=5' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Reviews found",
  "data": {
    "resultCount": 5,
    "hasNextPage": true,
    "reviews": [
      {
        "reviewId": "1804283887233048311",
        "createdAt": "2026-10-25T10:30:00.344Z",
        "date": "1 day ago",
        "rating": 5,
        "comment": "Shithila was incredibly professional, personable, and truly talented at what he does. He knew all the best locations, angles, and poses to capture the perfect …",
        "originalComment": "Shithila was incredibly professional, personable, and truly talented at what he does. He knew all the best locations, angles, and poses to capture the perfect …",
        "offering": null,
        "paidPromotionNotice": null,
        "language": "en-GB",
        "reviewer": {
          "userId": "1503213330812608997",
          "name": "Michelle",
          "pictureUrl": "https://a0.muscache.com/im/pictures/user/ae77309c-6754-45eb-a2ed-4d7cc6926e1e.jpg?aki_policy=profile_x_medium",
          "location": "San Antonio, TX"
        },
        "host": {
          "userId": "1463459996822402102",
          "name": "Shithila",
          "pictureUrl": "https://a0.muscache.com/im/pictures/user/ba27605c-11a9-4597-8596-9cc91bc5359b.jpg?aki_policy=profile_x_medium",
          "location": "Paris, France"
        },
        "hostResponse": null,
        "respondedAt": null,
        "respondedDate": null
      },
      {
        "reviewId": "1803574354399648273",
        "createdAt": "2026-10-24T11:00:17.439Z",
        "date": "2 days ago",
        "rating": 5,
        "comment": "Shithila skills are incredible, he was very patient and we loved the results.",
        "originalComment": "Shithila skills are incredible, he was very patient and we loved the results.",
        "offering": null,
        "paidPromotionNotice": null,
        "language": "en-GB",
        "reviewer": {
          "userId": "1478574009243005177",
          "name": "Erick",
          "pictureUrl": "https://a0.muscache.com/im/pictures/user/User-388659433/original/a4fc76d0-62b2-4ad2-8abd-0d8eb82be11d.jpeg?aki_policy=profile_x_medium",
          "location": "Managua, Nicaragua"
        },
        "host": {
          "userId": "1463459996822402102",
          "name": "Shithila",
          "pictureUrl": "https://a0.muscache.com/im/pictures/user/ba27605c-11a9-4597-8596-9cc91bc5359b.jpg?aki_policy=profile_x_medium",
          "location": "Paris, France"
        },
        "hostResponse": null,
        "respondedAt": null,
        "respondedDate": null
      }
    ]
  }
}

Example when something is wrong

{
  "status": false,
  "message": "Validation failed",
  "errors": [
    {
      "field": "serviceId",
      "message": "\"serviceId\" is required: the `serviceId` of a search result"
    }
  ]
}

Profiles

Public profile of a host or a guest.

Get Profile Details

GET /api/v1/profiles/details

Profile of a host or guest

The public profile: name, verification, host or guest badges, ratings, time on Airbnb and highlighted reviews.

- Send the long contextualUserId from Get Stay Host, Get Stay Details or Get Stay Reviews. The short userId does not work. - An unknown id returns status:false.

ParameterTypeRequiredDefaultDescription
userIdstringyesThe long user id (about 19 digits): contextualUserId from the stays endpoints, or userId from the experience and service reviews.
languageCodestringnoen-GBLanguage of the texts, for example en-GB, fr or ja. Values: Get Languages. Default en-GB.

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/profiles/details?userId=1462907809019481093' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Profile",
  "data": {
    "profile": {
      "id": "1462907809019481093",
      "displayFirstName": "Anita",
      "isAHost": true,
      "isSuperHost": false,
      "verificationInfo": {
        "hasVerificationBadge": true,
        "verifiedSinceText": "Verified since February 2019",
        "verificationExplanationHtml": "Our identity verification process checks a person’s information against trusted third-party sources…"
      },
      "profileVisibility": {
        "profileViewMode": "PUBLIC"
      },
      "canViewProfilePicture": true,
      "userRepresentationUrl": {
        "hasProfilePicture": true,
        "profilePictureUrl": "https://a0.muscache.com/im/pictures/user/User-13287163/original/09514d8c-64dc-401a-8ce5-d01df1b9a30…"
      },
      "isViewerProfileOwner": false,
      "userProfileSectionConfiguration": {
        "userProfileType": "HOST",
        "showPhotoDisclaimer": false,
        "contextualReviewHighlights": [
          {
            "id": "1804201280887340029",
            "createdAt": "2026-10-25T07:45:52.901Z",
            "commentV2": "Appartement proche de toutes commodités, quartier calme et bien desservi. L’appartement est petit m…",
            "displayRating": 5,
            "contextualReviewer": {
              "id": "1473708112405420123",
              "location": "Geneva, Switzerland",
              "userRepresentationUrl": {
                "profilePictureUrl": "https://a0.muscache.com/im/pictures/user/User/original/0f005ee3-4e26-4f1f-8b7a-ccd928f0e794.jpeg?ak…"
              },
              "displayFirstName": "Diana"
            },
            "translation": {
              "comments": "Apartment close to all amenities, in a quiet neighbourhood with good transport links. The flat is s…",
              "commentsLanguage": "fr"
            }
          },
          {
            "id": "1803513440490287309",
            "createdAt": "2026-10-24T08:59:15.936Z",
            "commentV2": "Petit studio très agréable dans un quartier très calme.",
            "displayRating": 5,
            "contextualReviewer": {
              "id": "1481740716537702421",
              "location": "Wintzenheim, France",
              "userRepresentationUrl": {
                "profilePictureUrl": "https://a0.muscache.com/im/pictures/user/3ea4193d-6fbe-4ab2-8ceb-e06548b0b2f8.jpg?aki_policy=profil…"
              },
              "displayFirstName": "Lionel"
            },
            "translation": {
              "comments": "Very nice little studio in a very quiet area.",
              "commentsLanguage": "fr"
            }
          }
        ],
        "mainPlacement": {
          "compact": [
            "UserProfileAboutMeSection",
            "UserProfileReviewsSection"
          ],
          "wide": [
            "UserProfileAboutMeSection",
            "UserProfileReviewsSection"
          ],
          "sections": [
            {
              "sectionId": "UserProfileAboutMeSection",
              "sectionData": {
                "contextualUser": {}
              }
            },
            {
              "sectionId": "UserProfileReviewsSection",
              "sectionData": {
                "contextualUser": {}
              }
            }
          ]
        }
      },
      "userProfileIdCard": {
        "subtitle": "Host",
        "stats": [
          {
            "label": "Reviews",
            "value": "64"
          },
          {
            "icon": "COMPACT_STAR",
            "label": "Rating",
            "value": "4.58"
          }
        ]
      },
      "timeAsUser": {
        "months": 7,
        "years": 12
      },
      "timeAsHost": {
        "months": 3,
        "years": 10
      },
      "pastTripsCount": 15,
      "reviewsReceivedFromHosts": {
        "pageInfo": {
          "totalCount": 10
        }
      },
      "hostRatingStats": {
        "ratingStats": {
          "ratingCount": "64",
          "ratingAverage": 4.58
        }
      }
    }
  }
}

Example when something is wrong

{
  "status": false,
  "message": "Validation failed",
  "errors": [
    {
      "field": "userId",
      "message": "\"userId\" is required: the long `contextualUserId` of a host or reviewer"
    }
  ]
}

Get Profile Past Locations

GET /api/v1/profiles/past-locations

Places a person has stayed

Places this person has stayed. Shown only when the person made them public, so the list is often empty, especially for hosts.

ParameterTypeRequiredDefaultDescription
userIdstringyesThe long user id (about 19 digits): contextualUserId from the stays endpoints, or userId from the experience and service reviews.
limitinteger (1..50)no501 to 50 (default 50)
languageCodestringnoen-GBLanguage of the texts, for example en-GB, fr or ja. Values: Get Languages. Default en-GB.

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/profiles/past-locations?userId=1462907809019481093' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "This profile shows no past places",
  "data": {
    "count": 0,
    "hasNextPage": false,
    "locations": []
  }
}

Example when something is wrong

{
  "status": false,
  "message": "Validation failed",
  "errors": [
    {
      "field": "userId",
      "message": "\"userId\" is required: the long `contextualUserId` of a host or reviewer"
    }
  ]
}

Get Profile Reviews

GET /api/v1/profiles/reviews

Reviews about a person

Reviews written about this person.

- type=guests (default): reviews from guests. type=hosts: reviews from hosts. - Use limit (1 to 50, default 10) and offset to page.

ParameterTypeRequiredDefaultDescription
userIdstringyesThe long user id (about 19 digits): contextualUserId from the stays endpoints, or userId from the experience and service reviews.
typeenum: guests, hostsnoguestsguests = reviews from guests, hosts = reviews from hosts (default guests)
limitinteger (1..50)no101 to 50 (default 10)
offsetinteger (0..100000)no0Reviews to skip (default 0)
languageCodestringnoen-GBLanguage of the texts, for example en-GB, fr or ja. Values: Get Languages. Default en-GB.

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/profiles/reviews?userId=1462907809019481093&limit=5' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Reviews found",
  "data": {
    "resultCount": 5,
    "hasNextPage": false,
    "reviews": [
      {
        "reviewId": "1804201280887340029",
        "type": "StayListingReview",
        "createdAt": "2026-10-25T07:45:52.901Z",
        "rating": 5,
        "comment": "Appartement proche de toutes commodités, quartier calme et bien desservi. L’appartement est petit mais très propre et l’essentiel y est. Les hôtes ont été très…",
        "translatedComment": "Apartment close to all amenities, in a quiet neighbourhood with good transport links. The flat is small but very clean, and it has everything you need. The hos…",
        "language": "fr",
        "revieweeRole": "HOST",
        "paidPromotionNotice": null,
        "reviewer": {
          "userId": "1473708112405420123",
          "name": "Diana",
          "location": "Geneva, Switzerland",
          "pictureUrl": "https://a0.muscache.com/im/pictures/user/User/original/0f005ee3-4e26-4f1f-8b7a-ccd928f0e794.jpeg?aki_policy=profile_x_medium",
          "superhost": null
        },
        "reviewee": {
          "userId": "1462907809019481093",
          "name": "Anita",
          "location": "Paris, France",
          "pictureUrl": "https://a0.muscache.com/im/pictures/user/User-13287163/original/09514d8c-64dc-401a-8ce5-d01df1b9a303.jpeg?aki_policy=profile_x_medium",
          "superhost": false
        },
        "response": null,
        "respondedAt": null
      },
      {
        "reviewId": "1803513440490287309",
        "type": "StayListingReview",
        "createdAt": "2026-10-24T08:59:15.936Z",
        "rating": 5,
        "comment": "Petit studio très agréable dans un quartier très calme.",
        "translatedComment": "Very nice little studio in a very quiet area.",
        "language": "fr",
        "revieweeRole": "HOST",
        "paidPromotionNotice": null,
        "reviewer": {
          "userId": "1481740716537702421",
          "name": "Lionel",
          "location": "Wintzenheim, France",
          "pictureUrl": "https://a0.muscache.com/im/pictures/user/3ea4193d-6fbe-4ab2-8ceb-e06548b0b2f8.jpg?aki_policy=profile_x_medium",
          "superhost": null
        },
        "reviewee": {
          "userId": "1462907809019481093",
          "name": "Anita",
          "location": "Paris, France",
          "pictureUrl": "https://a0.muscache.com/im/pictures/user/User-13287163/original/09514d8c-64dc-401a-8ce5-d01df1b9a303.jpeg?aki_policy=profile_x_medium",
          "superhost": false
        },
        "response": null,
        "respondedAt": null
      }
    ]
  }
}

Example when something is wrong

{
  "status": false,
  "message": "Validation failed",
  "errors": [
    {
      "field": "userId",
      "message": "\"userId\" is required: the long `contextualUserId` of a host or reviewer"
    }
  ]
}

Home

The Airbnb home tabs and the home feed.

Get Home Tabs

GET /api/v1/home/tabs

Home tabs

The tabs along the top of the Airbnb app: All, Homes, Hotels, Experiences and Services.

- Use a tab value in Get Home Feed.

No parameters.

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/home/tabs' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Home tabs",
  "data": {
    "count": 5,
    "tabs": [
      {
        "tab": "all",
        "name": "All"
      },
      {
        "tab": "stays",
        "name": "Homes"
      }
    ]
  }
}

Get Home Feed

GET /api/v1/home/feed

Home feed

The home screen of one tab: rows of homes, hotels, experiences or services such as "Homes in Pune".

- Pick the tab with tab (see Get Home Tabs). - Each row has openWith: the call that opens its "see all" list. Cards have an id for the detail endpoints. - One call returns one page of rows. Send nextCursor as cursor for the next page; when it is null the feed has ended. - The places shown follow the server location, not your coordinates.

ParameterTypeRequiredDefaultDescription
tabstringnoallTab from Get Home Tabs: all, stays, hotels, experiences or services. Default all.
cursorstringnoThe nextCursor of the previous answer, to get the next page.
currencyCodestringnoUSDCurrency of the prices, 3 letters. Values: Get Currency. Default USD.
languageCodestringnoen-GBLanguage of the texts, for example en-GB, fr or ja. Values: Get Languages. Default en-GB.

sessionId (optional) is also accepted: see Create Session.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/home/feed?tab=all' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Home feed",
  "data": {
    "tab": "all",
    "nextCursor": "eyJzZWN0aW9uX29mZnNldCI6NSwic2Vlbl9zZWN0aW9uX3R5cGVfdWlkcyI…",
    "sectionCount": 4,
    "shortcuts": [],
    "sections": [
      {
        "type": "carousel",
        "sectionId": "HOMES_POPULAR_WITH_LOCALS_IN_DESTINATION_RECOMMENDED:North …",
        "title": "Guest favourite homes in North Goa",
        "subtitle": "Indian guests often rate these homes highly",
        "place": {
          "placeId": "ChIJMaD6Uu3AvzsR0E3VfowKzRs",
          "query": "North Goa"
        },
        "kinds": [
          "homes"
        ],
        "openWith": {
          "endpoint": "/stays/search",
          "params": [
            {}
          ],
          "note": null
        },
        "items": [
          {
            "kind": "homes",
            "listingId": "1732658285115285549",
            "url": "https://www.airbnb.com/rooms/1732658285115285549",
            "title": "Flat in Arpora",
            "name": "Laxmi Studios by Ami | Luxury Stay Near Baga Beach",
            "city": null,
            "latitude": null,
            "longitude": null,
            "rating": 4.93,
            "reviewCount": null,
            "ratingText": "4.93",
            "badges": [],
            "details": [],
            "highlights": [],
            "photos": [],
            "price": {},
            "paymentMessages": [],
            "bedCount": null
          }
        ]
      }
    ]
  }
}

Example when something is wrong

{
  "status": false,
  "message": "Validation failed",
  "errors": [
    {
      "field": "languageCode",
      "message": "\"languageCode\" \"xx-INVALID\" is not supported. See GET /common/languages for the codes."
    }
  ]
}

Common

Languages, currencies, sessions and server status.

Create Session

POST /api/v1/common/sessions

Create a session

Returns a new sessionId. Send it as the optional sessionId on the other endpoints.

- A session remembers its searches, and Get Home Feed is built from them. - Without a sessionId a default session is used. - Limit: 10 new sessions per hour.

No parameters.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/common/sessions' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Session created",
  "data": {
    "sessionId": "9cfc0a63ed439e64cd373330d941429536e304a4"
  }
}

Get Languages

GET /api/v1/common/languages

Supported languages

The accepted languageCode values (64), each checked against Airbnb.

- A fixed list; it does not use your monthly quota.

No parameters.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/common/languages' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Supported languages",
  "data": {
    "count": 64,
    "languages": [
      {
        "code": "ar",
        "name": "Arabic"
      },
      {
        "code": "az",
        "name": "Azerbaijani"
      }
    ]
  }
}

Get Currency

GET /api/v1/common/currencies

Supported currencies

The accepted currencyCode values (69), each checked against Airbnb.

- A fixed list; it does not use your monthly quota.

No parameters.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/common/currencies' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Supported currencies",
  "data": {
    "count": 69,
    "currencies": [
      {
        "code": "AED",
        "name": "United Arab Emirates dirham"
      },
      {
        "code": "ARS",
        "name": "Argentine peso"
      }
    ]
  }
}

Get Server Status

GET /api/v1/common/server-status

Server status

Answers "online" while the service is running. No parameters; it does not use your monthly quota.

No parameters.

Example request

curl --request GET \
  --url 'https://airbnb74.p.rapidapi.com/api/v1/common/server-status' \
  --header 'X-RapidAPI-Host: airbnb74.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_KEY'

Example answer (shortened)

{
  "status": true,
  "message": "Server status",
  "data": {
    "server": "online",
    "timestamp": "2026-10-26T13:46:08.712Z"
  }
}
Top