Travel
Airbnb Reviews Scraper
airbnb.com
An Airbnb room page shows a handful of reviews; the rest load page by page from Airbnb's own internal API. A dedicated plugin endpoint takes a listing id or a room URL from any Airbnb domain and reads every review, not only the few on the page: each review's id, star rating, the text as written with its language and Airbnb's translation into the locale you pick, the ISO date and Airbnb's relative date, the stay detail (such as Stayed a few nights or Group trip), photos, the reviewer (name, photo, home town or time on Airbnb, profile link, superhost flag, and whether the account has since been closed) and the host's response. The listing summary comes with them: title, room and property type, city and country, host, overall rating and the six category ratings, review count, the share and number of ratings per star, review tags such as Location or Hospitality with their counts, and the Guest favourite flag. Order by Airbnb's own relevance, most recent, highest or lowest rated, drop reviews older than a date with since, and collect up to 500 per call from any page or offset, with nextPage and nextOffset to continue. It is the reviews companion to our Airbnb search and listing plugins, with no Airbnb account or login involved.
What you can extract
- Review id, star rating, the text as written, its language and the date (ISO and as Airbnb words it)
- Airbnb's translation into the locale you pick, such as en, de, fr, es or pt-BR
- Stay detail such as Stayed a few nights or Group trip, and review photos
- Reviewer: name, photo, home town or time on Airbnb, profile link, superhost flag and a closed-account flag
- The host's response
- Listing summary: title, room and property type, city, country, host, overall and six category ratings, review count, rating distribution, ratings per star, review tags and Guest favourite
- Sort by relevance, most recent, highest or lowest rated, with a since date cut-off
- Every review: up to 500 per call from any page or offset, with nextPage and nextOffset to continue
Dedicated endpoints
/travel/airbnb-reviews Airbnb listing reviews
The guest reviews of one listing by id or room URL (any Airbnb domain): a reviews array with id, rating, text, language, translatedText, date, localizedDate, stayDetail, photos, reviewer (id, name, photo, location or tenure, profileUrl, profileId, isSuperhost, deleted) and response, plus the listing summary (title, roomType, propertyType, city, country, host, rating with the category ratings, reviewsCount, ratingDistribution, ratingCounts, reviewTags, isGuestFavorite) and totalResults, hasMore, nextPage and nextOffset. sort is most_relevant, most_recent, highest_rated or lowest_rated; locale sets the translation language; since drops older reviews; max_reviews 1-500 (default 50, Airbnb serves 50 a page) from page or offset; include_listing=false skips the summary.
How to scrape it
curl -X POST \
-H "X-ScrapeUnblocker-Key: $SU_API_KEY" \
"https://api.scrapeunblocker.com/travel/airbnb-reviews?room=35283352&max_reviews=100&sort=most_recent"import requests
resp = requests.post(
"https://api.scrapeunblocker.com/travel/airbnb-reviews",
headers={"X-ScrapeUnblocker-Key": SU_API_KEY},
params={"room": "35283352", "max_reviews": "100", "sort": "most_recent"},
)
print(resp.text)import { ScrapeUnblockerClient } from 'scrapeunblocker';
const su = new ScrapeUnblockerClient({ apiKey: process.env.SU_API_KEY });
const data = await su.airbnbReviews('35283352', {
maxReviews: 100,
sort: 'most_recent',
});
console.log(data); Requests are POST and take their parameters in the query string. Browser rendering always happens - there is no flag to enable.
Example response
{
"url": "https://www.airbnb.com/rooms/35283352",
"listingId": "35283352",
"listing": {
"id": "35283352",
"url": "https://www.airbnb.com/rooms/35283352",
"title": "Cozy studio close to Champs Elysées & Eiffel tower",
"roomType": "Entire home/apt",
"propertyType": "Entire rental unit",
"city": "Seine",
"country": "France",
"host": {
"id": "...",
"name": "Moutaz",
"isSuperhost": true
},
"rating": {
"overall": 4.9,
"accuracy": 4.93,
"cleanliness": 4.86,
"checkin": 4.95,
"communication": 4.98,
"location": 4.97,
"value": 4.86
},
"reviewsCount": 177,
"ratingDistribution": [
{
"stars": 5,
"percentage": 0.921
},
{
"stars": 4,
"percentage": 0.056
},
{
"stars": 3,
"percentage": 0.023
}
],
"ratingCounts": {
"5": 163,
"4": 10,
"3": 4,
"2": 0,
"1": 0
},
"isGuestFavorite": true,
"isNewListing": false,
"reviewTags": [
{
"key": "LOCATION",
"name": "Location",
"count": 117
},
{
"key": "WALKABILITY",
"name": "Walkability",
"count": 42
}
]
},
"reviews": [
{
"id": "1783949263908511671",
"rating": 5,
"text": "Logement très bien situé avec toutes les commodités. Moutaz répond rapidement.",
"language": "fr",
"translatedText": "Very well-located accommodation with all amenities. Moutaz responds quickly.",
"date": "2026-09-27T09:08:44Z",
"localizedDate": "1 week ago",
"stayDetail": "Stayed a few nights",
"stayDetailType": "LENGTH_OF_STAY",
"roomTypeTitle": null,
"photos": [],
"reviewer": {
"id": "...",
"name": "Yvan",
"photo": "https://a0.muscache.com/im/pictures/user/....jpg",
"location": "North Hatley, Canada",
"tenure": null,
"profileUrl": "...",
"profileId": "...",
"isSuperhost": false,
"deleted": false
},
"response": null
}
],
"resultsCollected": 10,
"totalResults": 177,
"page": 1,
"offset": 0,
"pagesFetched": 1,
"hasMore": true,
"nextPage": 2,
"nextOffset": 10,
"sort": "most_recent",
"locale": "en",
"since": null,
"warnings": []
} Frequently asked questions
Is it legal to scrape Airbnb reviews?
Collecting publicly available Airbnb reviews and ratings is lawful in many jurisdictions, but the rules depend on your country, the data you collect and how you use it. Reviewer names, photos and review text are personal data, so follow the privacy rules that apply to you. ScrapeUnblocker returns the public reviews; what you collect and how you use it is your responsibility.
How do I scrape Airbnb reviews without getting blocked?
Airbnb uses bot detection and rate limiting. The /travel/airbnb-reviews plugin reads the reviews from Airbnb's own web API through ScrapeUnblocker's exits, a few pages at a time, with no browser render. When Airbnb retires the query its web app uses, the plugin reads the live room page once, learns the new one and carries on. In ScrapeUnblocker's benchmark it returned reviews on 99.5% of 1,100 calls with a different listing each time, about 2.0s per call.
How many Airbnb reviews can I get?
All of them. Airbnb serves reviews 50 at a time, and the plugin reads as many of those pages as max_reviews needs: up to 500 per call (default 50), starting at any page or at an exact position with offset. hasMore, nextPage and nextOffset continue where the call stopped, and totalResults is the number of reviews the listing has, so a listing with 1,200 reviews takes three calls. A listing without reviews answers with an empty list; a removed or private listing is a 404.
What data do I get for each review?
Each review has its id, the star rating, the text as written and its language, Airbnb's translation, the ISO date and Airbnb's own wording of it, the stay detail, photos, the reviewer's name, photo, home town or time on Airbnb, profile link and superhost flag, a flag for a guest who has since closed their account, and the host's response. The listing summary adds the title, room and property type, city, country, host, overall rating and the accuracy, cleanliness, check-in, communication, location and value ratings, the review count, each star's share of the ratings with the matching counts, review tags such as Location with their counts, and the Guest favourite flag.
Can I get Airbnb reviews in my language?
Yes. Every review comes back as written, with its language code, and translatedText holds Airbnb's own translation into locale (default en; for example de, fr, es or pt-BR), which covers host responses too. sort sets the order: most_relevant (Airbnb's own), most_recent, highest_rated or lowest_rated, and since drops reviews older than a date; with most_recent, paging stops once older reviews start, which suits monitoring new reviews. For the listing itself, use our Airbnb listing plugin, /travel/airbnb-room, and to find listings in a city, /travel/airbnb.
How much does it cost to scrape Airbnb reviews?
Airbnb serves 50 reviews per page, and each page read is billed as one request: the default 50 reviews is 1 request, 500 reviews is 10, and pagesFetched shows the exact number. 1 request = 1 credit, EUR 1.00 per 1,000 on pay as you go, down to about EUR 0.55 per 1,000 on the Ultimate plan. Blocks and timeouts are not billed, and the free trial includes 500 requests with no card.
Related scrapers
Start scraping this site today
Free tier included. No credit card required to test it.