GET
Airbnb Listing Reviews API
Extract comprehensive guest reviews from Airbnb listings using the listing ID.
Overview
Real-time Review Data
Get complete review content, ratings, and host responses with real-time data updates.
The Airbnb Listing Reviews endpoint provides access to detailed review data including guest profiles, ratings, review text, and host responses. Perfect for analyzing guest feedback and sentiment.
Endpoint URL
GET https://api.stayapi.com/v1/airbnb/listing/reviews/{listing_id}
Parameters
Parameter | Type | Required | Description |
---|---|---|---|
listing_id | string | Required | Airbnb listing ID (path parameter) |
limit | integer | Optional | Number of reviews per page (1-50, default: 10) |
offset | string | Optional | Pagination offset (default: "0") |
sort_by | string | Optional | Sort order: BEST_QUALITY or MOST_RECENT (default: BEST_QUALITY) |
check_in | string | Optional | Check-in date for contextual reviews (YYYY-MM-DD) |
check_out | string | Optional | Check-out date for contextual reviews (YYYY-MM-DD) |
Response Structure
Review Information
id
- Unique review identifierrating
- Overall rating (1-5 stars)text
- Full review textlanguage
- Review language codecreated_at
- Review submission date
Reviewer Details
- Reviewer ID and display name
- Profile picture URL
- Verification status
Additional Data
- Host response text and date (if available)
- Total review count for pagination
- Pagination metadata
Finding the Listing ID
Need the Listing ID?
Use the /listing/extract-id endpoint to extract the listing ID from any Airbnb URL.
The listing ID can be found in Airbnb URLs. For example:
https://www.airbnb.com/rooms/22120898
The listing ID is 22120898
(the number after "rooms/").
Request
curl -X GET "https://api.stayapi.com/v1/airbnb/listing/reviews/22120898?limit=10&offset=0" \ -H "x-api-key: YOUR_API_KEY"
const listingId = "22120898"; const params = new URLSearchParams({ limit: "10", offset: "0", sort_by: "MOST_RECENT" }); const response = await fetch( `https://api.stayapi.com/v1/airbnb/listing/reviews/${listingId}?${params}`, { headers: { "x-api-key": "YOUR_API_KEY" } } ); const data = await response.json(); // Display reviews data.reviews.forEach(review => { console.log(`${review.rating}/5 - ${review.reviewer.name}`); console.log(`Review: ${review.text}`); if (review.host_response) { console.log(`Host response: ${review.host_response.text}`); } console.log("---"); });
import requests listing_id = "22120898" url = f"https://api.stayapi.com/v1/airbnb/listing/reviews/{listing_id}" headers = {"x-api-key": "YOUR_API_KEY"} params = { "limit": 10, "offset": 0, "sort_by": "MOST_RECENT" } response = requests.get(url, headers=headers, params=params) data = response.json() # Display review summary print(f"Total reviews: {data['total_count']}") print(f"Fetched: {data['review_count']} reviews\n") # Display individual reviews for review in data["reviews"]: print(f"{review['rating']}/5 ⭐ - {review['reviewer']['name']}") print(f"Date: {review['created_at']}") print(f"Review: {review['text'][:200]}...") if review.get("host_response"): print(f"Host response: {review['host_response']['text'][:100]}...") print("-" * 50)
<?php $listingId = "22120898"; $url = "https://api.stayapi.com/v1/airbnb/listing/reviews/" . $listingId; $params = http_build_query([ "limit" => 10, "offset" => 0, "sort_by" => "MOST_RECENT" ]); $ch = curl_init($url . "?" . $params); curl_setopt($ch, CURLOPT_HTTPHEADER, ["x-api-key: YOUR_API_KEY"]); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); $data = json_decode($response, true); curl_close($ch); // Display reviews foreach ($data["reviews"] as $review) { echo $review["rating"] . "/5 - " . $review["reviewer"]["name"] . "\n"; echo "Review: " . $review["text"] . "\n"; echo "---\n"; } ?>
require "net/http" require "json" require "uri" listing_id = "22120898" uri = URI("https://api.stayapi.com/v1/airbnb/listing/reviews/\#{listing_id}") uri.query = URI.encode_www_form({ limit: 10, offset: 0, sort_by: "MOST_RECENT" }) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri) request["x-api-key"] = "YOUR_API_KEY" response = http.request(request) data = JSON.parse(response.body) # Display reviews puts "Total reviews: \#{data['total_count']}" data["reviews"].each do |review| puts "\#{review['rating']}/5 - \#{review['reviewer']['name']}" puts "Review: \#{review['text'][0..200]}..." puts "-" * 50 end
Response
{ "success": true, "listing_id": 22120898, "total_count": 321, "review_count": 10, "has_more": true, "reviews": [ { "id": "1092837465", "rating": 5, "text": "What an amazing place! The views were absolutely stunning and the host was incredibly helpful throughout our stay. The apartment was spotlessly clean and exactly as described in the photos.", "language": "en", "created_at": "2024-03-15", "reviewer": { "id": "user_456789", "name": "Sarah Johnson", "picture_url": "https://a0.muscache.com/im/pictures/user/456789.jpg" }, "host_response": { "text": "Thank you so much for your wonderful review, Sarah! We're thrilled you enjoyed your stay.", "created_at": "2024-03-16", "author": "Host" } }, { "id": "1092736284", "rating": 4, "text": "Great location and comfortable apartment. Check-in was smooth and the host provided lots of local recommendations. Only minor issue was street noise at night.", "language": "en", "created_at": "2024-03-10", "reviewer": { "id": "user_123456", "name": "Michael Chen", "picture_url": null }, "host_response": null } ] }
{ "error": "Listing not found", "detail": "No listing found with ID: 999999999", "status_code": 404 }