Airbnb data, ready when you are.

Listings, prices for a stay and reviews from Airbnb.

Try in playground From $0.0018 a record · $0.10 free

What you can get.

  • $0.0018per record

    Listings

    Full cards for up to ten listings by URL or room id, priced for a stay. Nightly and total price, availability, ratings by category, amenities, house rules, cancellation policy, host.

    Try it →
  • $0.0018per record

    Reviews

    Reviews for up to ten listings. Text, rating, date, host response.

    Try it →

What the data looks like.

titlepropertyTyperoomTypecapacitylocationratingOverallreviewsCountpricePerNightcurrencyhostNamehostIsSuperhostamenitieslistingIdlistingUrldetails
Sunny loft near the old townEntire loftEntire home3Lisbon, Portugal4.92214118USDInêstrue
  • Wifi, Kitchen, Washer
4266698829https://www.airbnb.com/sunny-loft-near-the-old-town-1000
  • {}
Quiet garden studioEntire guest suiteEntire home2Bengaluru, India4.859642USDMeerafalse
  • Wifi, Air conditioning
4179722422https://www.airbnb.com/quiet-garden-studio-1001
  • {}
Beach cabin with a viewEntire cabinEntire home4Byron Bay, Australia4.97302260USDJacktrue
  • Beach access, Parking, Kitchen
414104026https://www.airbnb.com/beach-cabin-with-a-view-1002
  • {}
15 fields, scroll sideways for all. Example rows: made-up names, real field names. Live calls return real data.

For developers

API reference.

One endpoint, POST /v1/airbnb. Open an operation to see its fields.

Read the docs
Listingslistings

Full cards for up to ten listings by URL or room id, priced for a stay. Nightly and total price, availability, ratings by category, amenities, house rules, cancellation policy, host.

FieldTypeMeaning
subjects *list of string · 1-10 itemsListing URLs or room ids.
stayobject
stay.checkInstring · YYYY-MM-DDFirst night, YYYY-MM-DD. Only read together with checkOut.
stay.checkOutstring · YYYY-MM-DDDeparture day, YYYY-MM-DD, after checkIn.
stay.adultsinteger · 1-16Guests aged 13+; the nightly price depends on the party.
stay.childreninteger · 0-10Guests aged 2-12.
stay.infantsinteger · 0-5Guests under 2; usually not counted toward the listing's capacity.
stay.petsinteger · 0-5Pets, where the listing allows them; adds the pet fee to the total.
stay.currencystring · ISO 4217ISO 4217 code the prices come back in ("USD", "INR", "EUR").
stay.localestring · ≤10 charsLanguage tag for titles and descriptions ("en-US", "fr-FR").

Response fields, each row of data

FieldType
listingIdstring
listingUrlstring
titlestring
propertyTypestring
roomTypestring
capacityinteger
summaryDetailslist of string
descriptionstring
locationstring
locationSubtitlestring
locationPathstring
latitudenumber
longitudenumber
neighborhoodNotesany
ratingsany
ratingOverallnumber
reviewsCountinteger
highlightsany
amenitiesany
houseRulesany
cancellationPolicystring
availableboolean
staystring
currencystring
totalPriceTextstring
pricePerNightTextstring
baseSubtotalTextstring
priceQualifierstring
totalPricenumber
pricePerNightnumber
hostany
hostNamestring
hostIsSuperhostboolean
coHostsany
imagesany
thumbnailstring
detailsobject

Every field is present on every row: a value the source had nothing for is null, an empty list is []. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

example request · listings
curl -X POST https://apiforagents.dev/v1/airbnb \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"listings","subjects":["https://www.airbnb.com/rooms/<room-id>"],"stay":{"checkIn":"2027-03-12","checkOut":"2027-03-15","adults":2,"currency":"USD"}}'

Example response rows

data · made-up names, real field names
[
  {
    "title": "Sunny loft near the old town",
    "propertyType": "Entire loft",
    "roomType": "Entire home",
    "capacity": 3,
    "location": "Lisbon, Portugal",
    "ratingOverall": 4.92,
    "reviewsCount": 214,
    "pricePerNight": 118,
    "currency": "USD",
    "hostName": "Inês",
    "hostIsSuperhost": true,
    "amenities": [
      "Wifi",
      "Kitchen",
      "Washer"
    ],
    "listingId": "4266698829",
    "listingUrl": "https://www.airbnb.com/sunny-loft-near-the-old-town-1000",
    "details": {}
  },
  {
    "title": "Quiet garden studio",
    "propertyType": "Entire guest suite",
    "roomType": "Entire home",
    "capacity": 2,
    "location": "Bengaluru, India",
    "ratingOverall": 4.85,
    "reviewsCount": 96,
    "pricePerNight": 42,
    "currency": "USD",
    "hostName": "Meera",
    "hostIsSuperhost": false,
    "amenities": [
      "Wifi",
      "Air conditioning"
    ],
    "listingId": "4179722422",
    "listingUrl": "https://www.airbnb.com/quiet-garden-studio-1001",
    "details": {}
  }
]

An example to show the shape. The rows show the most used fields; a live row carries every field in the table above.

Try listings in the playground Examples and pricing for listings
Reviewsreviews

Reviews for up to ten listings. Text, rating, date, host response.

FieldTypeMeaning
subjects *list of string · 1-10 itemsListing URLs or room ids.
localestring · ≤10 charsLanguage tag the review text is returned in ("en-US"); reviews in other languages come translated.
limitinteger · 1-100

Response fields, each row of data

FieldType
reviewIdstring
reviewTextstring
translatedTextstring
originalLanguagestring
ratingnumber
postedDatestring
highlightstring
highlightTypestring
hostResponsestring
hostIdstring
hostNamestring
hostProfileUrlstring
reviewerUserIdstring
reviewerNamestring
reviewerProfilestring
reviewerAvatarstring
reviewerLocationstring
reviewerTenurestring
detailsobject

Every field is present on every row: a value the source had nothing for is null, an empty list is []. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

example request · reviews
curl -X POST https://apiforagents.dev/v1/airbnb \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"reviews","subjects":["https://www.airbnb.com/rooms/<room-id>"],"locale":"en-US","limit":25}'

Example response rows

data · made-up names, real field names
[
  {
    "reviewerName": "Hannah",
    "reviewerLocation": "Berlin, Germany",
    "rating": 5,
    "reviewText": "Spotless, bright and a 2-minute walk to everything.",
    "postedDate": "2026-10-08",
    "hostName": "Inês",
    "hostResponse": null,
    "reviewId": "3422556718",
    "hostId": "84440075",
    "hostProfileUrl": "https://www.airbnb.com/hannah-1000",
    "reviewerUserId": "1660453336",
    "details": {}
  },
  {
    "reviewerName": "Arjun",
    "reviewerLocation": "Pune, India",
    "rating": 5,
    "reviewText": "Host replied in minutes. Would stay again.",
    "postedDate": "2026-09-30",
    "hostName": "Inês",
    "hostResponse": null,
    "reviewId": "3672073992",
    "hostId": "558151567",
    "hostProfileUrl": "https://www.airbnb.com/arjun-1001",
    "reviewerUserId": "598161622",
    "details": {}
  }
]

An example to show the shape. The rows show the most used fields; a live row carries every field in the table above.

Try reviews in the playground Examples and pricing for reviews
Historyhistoryfree

Stored price/rating series of listings already held. Free.

FieldTypeMeaning
subjects *list of string · 1-10 items
metricenumprice_per_night · total_price · rating_overall · reviews_count
daysinteger · 1-730
Try history in the playground

Guides and ideas.

Use it from your tools.

More in places & travel.

All platforms