Airbnb Reviews Scraper - Guest Reviews, Ratings & Host Replies
Pricing
from $2.10 / 1,000 guest reviews
Airbnb Reviews Scraper - Guest Reviews, Ratings & Host Replies
Airbnb reviews scraper and API alternative: extract guest reviews of any Airbnb listing with star rating, review text and translation, language, date, reviewer first name and location, host reply and length of stay. Sort by most recent or most relevant, no login.
Pricing
from $2.10 / 1,000 guest reviews
Rating
0.0
(0)
Developer
CrawlKit
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Security
Limited permissionsShare
Extract guest reviews from Airbnb listings: star rating, review text with Airbnb's translation, language, date, reviewer first name and location, host reply and length of stay. Give listing URLs or ids, sort by most recent or most relevant. No login.
What it does
- Takes one or more Airbnb listing URLs (
https://www.airbnb.com/rooms/<id>, any Airbnb country domain) or numeric listing ids, and returns one flat JSON item per guest review. - Each review comes with its rating (1-5), original text, language, ISO date, the reviewer's first name, the reviewer's location (or their tenure on Airbnb, which Airbnb shows instead for some reviewers), the length of stay, and the host's public reply.
- Reviews written in another language than the requested
languagealso get Airbnb's own machine translation intranslatedText. - Uses the same JSON endpoint as the Airbnb listing page when it shows the reviews, plus the listing page itself for the listing title. No account is used.
- Reviews are deduplicated by
reviewId. Each listing returns up tomaxItemsreviews.
Typical uses: guest sentiment analysis, monitoring the reviews of your own or competing listings, comparing properties before a purchase or a management contract, training data for review classification.
Input
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
listingUrls | array of strings | Yes | — | Airbnb listing URLs (https://www.airbnb.com/rooms/36276450, https://www.airbnb.fr/rooms/36276450?adults=2) or listing ids (36276450) |
sortBy | string | No | most_recent | most_recent (newest first) or most_relevant (Airbnb's default order) |
language | string | No | en | Airbnb locale (en, fr, de, es, pt-BR...): language of translatedText, stayDetails, reviewerTenure and hostReplyDate |
maxItems | integer | No | 50 | Maximum number of reviews per listing (1-5000) |
Example:
{"listingUrls": ["https://www.airbnb.com/rooms/36276450", "1423687913527325454"],"sortBy": "most_recent","language": "en","maxItems": 100}
Output
One item per review. Real example:
{"reviewId": "1791305971234077119","listingId": "36276450","listingTitle": "A quiet little corner in the heart of Paris","listingUrl": "https://www.airbnb.com/rooms/36276450","rating": 5,"text": "The location is fantastic if you wish to visit the cathedral‑Notre‑Dame. It is right next door, so you can hear its bells ring every day, which is a lovely, magical experience. [...]","translatedText": null,"language": "en","createdAt": "2026-10-07T12:45:12Z","reviewer": "Blair","reviewerLocation": null,"reviewerTenure": "12 years on Airbnb","hostReply": "6 mn de la Station Cité\n7 mn de la station Hôtel de ville\n4 mn du RER B\nL’appartement est au 2e étage et 4 marches.","hostReplyDate": "2 weeks ago","stayDetails": "Stayed a few nights","listingReviewsCount": 682,"scrapedAt": "2026-10-28T06:41:10+00:00"}
| Field | Description |
|---|---|
reviewId | Airbnb review id (unique) |
listingId, listingTitle, listingUrl | The reviewed listing (listingTitle is null if the listing page could not be read) |
rating | Overall star rating given by the guest (1-5) |
text | Original review text, line breaks kept |
translatedText | Airbnb's translation into language when the review is written in another language, else null |
language | Language of the original text |
createdAt | Review date, ISO 8601 UTC |
reviewer | Reviewer first name as displayed by Airbnb (a last name, if any, is reduced to its initial) |
reviewerLocation | Reviewer's city / country, when Airbnb shows it |
reviewerTenure | "N years on Airbnb", shown by Airbnb instead of the location for some reviewers |
hostReply, hostReplyDate | Host's public reply (original text) and its date as worded by Airbnb ("2 weeks ago") |
stayDetails | Length of stay or trip type shown with the review ("Stayed a few nights", "Stayed with kids") |
listingReviewsCount | Total number of reviews of the listing |
scrapedAt | Extraction time |
Pricing
Pay-per-event, no start fee: $3.50 per 1,000 reviews on the Apify Free plan, with lower prices on paid plans. Each review pushed to the dataset is one event.
| Event | Free | Starter | Scale | Business | Enterprise |
|---|---|---|---|---|---|
Review (REVIEW) | $3.50 | $3.00 | $2.60 | $2.10 | $2.10 |
Prices in USD per 1,000 events.
Cost examples (Free plan)
| Scenario | Reviews | Cost |
|---|---|---|
| Quick look at one listing | 10 | $0.035 |
| 50 reviews of 10 listings | 500 | $1.75 |
| Full history of a popular listing | 700 | $2.45 |
Set a "Maximum cost per run" in the run options to cap a run: the Actor stops cleanly when it is reached.
Limitations
- Only the reviews Airbnb publishes on the listing page are available; Airbnb does not show some old or hidden reviews, so a listing can return slightly fewer reviews than
listingReviewsCount. - Airbnb shows only the reviewer's first name; no reviewer profile id or photo is returned.
- The host reply date is the relative wording shown by Airbnb ("2 weeks ago", "March 2024"); Airbnb does not expose an exact reply date.
- Category ratings (cleanliness, accuracy, location...) are only published by Airbnb as listing averages, not per review, and are not returned.
- Listing URLs only: search pages, experiences, wishlists and host profiles are not supported.
- The reviews endpoint is the one used by Airbnb's website; when Airbnb changes it, the run fails with an explicit message until the Actor is updated.