Airbnb Reviews Scraper — Guest Ratings and Host Replies
Pricing
$2.50 / 1,000 reviews
Airbnb Reviews Scraper — Guest Ratings and Host Replies
Collect public Airbnb guest reviews with ratings, original text, available translations, guest locations, stay highlights and host replies. Supply room URLs or listing IDs and choose review order and a limit per listing.
Airbnb Reviews Scraper
Airbnb Reviews Scraper collects public guest reviews from Airbnb listings. Get ratings, original review text, available translations, guest display names and locations, stay highlights, and host replies in a structured dataset. It is useful for hosts, property managers, reputation analysts, and researchers comparing guest experiences across listings.
What Airbnb Reviews Scraper delivers
Each dataset row represents one guest review for one listing. The original review text is preserved alongside an available Airbnb translation, making it possible to compare guest feedback across languages without losing the source wording. Host responses are separate fields, so you can examine how hosts respond to praise, complaints, or recurring issues.
Listing IDs and review IDs are returned as strings. Keep them as strings in spreadsheets
and databases: long IDs can lose precision when converted to numbers. Use place_id to
join reviews to your listing records and review_id to identify individual reviews.
Repeating the same listing within one input does not collect it twice.
Input
Provide listings as a list of Airbnb room URLs or numeric listing IDs written as strings.
Regional Airbnb room URLs work as well. URL query parameters and fragments are ignored,
and room URLs containing /rooms/plus/ are accepted. Custom vanity links and experience
URLs are unsupported because they do not identify an accommodation listing directly.
This input uses a real public listing from the recorded examples:
{"listings": ["https://www.airbnb.com/rooms/1142549760112481397"],"max_reviews": 5,"sort": "newest","language": "en","translate": true}
The default max_reviews is 100 per listing. You can request from 1 to 10,000 reviews per
listing, subject to how many Airbnb makes available. Submit up to 100 listings in one run.
The limit applies separately to each listing, rather than to the combined dataset.
Choose newest for recent feedback, relevant for Airbnb's relevance order,
highest_rating to start with the strongest ratings, or lowest_rating to start with
the weakest. Reviews retain this source order within each listing. A review's position
shows its one-based position in that order.
The language option controls available translations and localized date and location
text. Supported values are en, en-GB, nl, de, pt-BR, zh-TW, and ja.
The original text and original language remain available regardless of this option.
Set translate to false to return original text with null translation fields.
Output
Reviews are saved to the default dataset, where you can download them in JSON, CSV, or other formats supported by Apify. The main fields are:
| Field | Meaning |
|---|---|
review_id, place_id, place_url | Review ID, listing ID, and canonical room URL |
rating | The guest's rating on Airbnb's 1–5 scale |
text, language | Original review text and its language |
text_translated, translation_language | Available translated text and requested language |
published_at, published_text | Exact review timestamp and localized display date |
author_name, author_location | Guest display name and displayed location |
author_tenure | Displayed Airbnb membership duration when location is not shown |
length_of_stay, trip_type | Stay duration or trip highlight when available |
reply_text, reply_text_translated | Original host reply and available translated reply |
reply_date_text | Host reply date exactly as displayed, without an inferred timestamp |
host_name, host_id, room_type | Displayed host identity and room type when supplied |
photos, listing_reviews_count | Review photo URLs and the listing's reported review total |
fetched_at, input, position | Retrieval time, original input, and source position |
For example, the recorded review 1791905086662251880 has the original text
Súper recomendable!! ☺️, language es, rating 5, and the available English translation
Highly recommended!! ☺️. Its publication timestamp is 2026-10-08T08:35:32Z.
Airbnb displays 9 years on Airbnb in the location area for this guest, so the result
places that text in author_tenure and leaves author_location null.
Missing information remains null or an empty list. This source does not provide a listing
name, an individual review permalink, guest country codes, rating sub-scores, or an exact
host reply timestamp. The host's display name is not presented as the listing name.
Review photos are often an empty list. Stay duration is only supplied when Airbnb displays
a stay-duration highlight; a family-trip highlight is recorded separately as trip_type.
Pricing
Billing is per delivered review. A listing with no returned reviews contributes no review charges. Review rows are delivered before they are counted for billing; listing metadata and error messages are not review rows. Consult the actor's Apify pricing panel for the current price per review before starting a run.
Users without a paid Apify plan receive at most ten review rows per run in total, even when several listings are submitted. The cap applies to delivery and billing together. Users with a paid plan can request the stated per-listing maximum.
Large collections and unavailable listings
Apify follows continuation pages automatically during a run. Larger collections may take
longer because each listing has its own review pages. The OUTPUT record contains counts
and completion information. Check partial, warnings, and errors before assuming that
every requested review was collected. A remaining continuation means the collection has
not finished; retry the unfinished work with the same options when using the API.
A missing listing does not prevent valid listings in the same request from producing reviews. If every listing has no available reviews, the run returns no review rows. Source availability and review totals can change between collection times. For repeated analysis, retain review IDs and retrieval timestamps so you can identify changes between exports.
FAQ
Can I collect reviews for several properties?
Yes. Put their room URLs or string listing IDs in listings. The maximum review count
applies to each property independently, while the free-plan limit applies to the whole run.
Does selecting a translation language replace the original review?
No. Original text remains in text. Available translated text is stored separately.
A missing or empty translation stays null, and a host reply can have a translation even
when the guest review does not. Airbnb supplies the translations.
Why is a guest location missing?
Airbnb may show membership duration instead of a location. That display text is stored
as author_tenure. When neither is displayed, both fields remain null. Location text is
kept as Airbnb displays it and is not converted into a country code.
Can I get an exact date for a host response?
This review source provides the host reply's display date rather than an exact timestamp.
Use reply_date_text as display information and avoid treating it as an exact date.
What should I check when a collection is incomplete?
Inspect the run's OUTPUT, warnings, and errors. Already delivered review rows remain
available. A temporary source error may leave a continuation for unfinished reviews;
keep the original listing and sorting options when continuing the collection.