Airbnb Reviews Scraper — Guest Ratings and Host Replies avatar

Airbnb Reviews Scraper — Guest Ratings and Host Replies

Pricing

$2.50 / 1,000 reviews

Go to Apify Store
Airbnb Reviews Scraper — Guest Ratings and Host Replies

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.

Pricing

$2.50 / 1,000 reviews

Rating

0.0

(0)

Developer

SR

SR

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Categories

Share

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:

FieldMeaning
review_id, place_id, place_urlReview ID, listing ID, and canonical room URL
ratingThe guest's rating on Airbnb's 1–5 scale
text, languageOriginal review text and its language
text_translated, translation_languageAvailable translated text and requested language
published_at, published_textExact review timestamp and localized display date
author_name, author_locationGuest display name and displayed location
author_tenureDisplayed Airbnb membership duration when location is not shown
length_of_stay, trip_typeStay duration or trip highlight when available
reply_text, reply_text_translatedOriginal host reply and available translated reply
reply_date_textHost reply date exactly as displayed, without an inferred timestamp
host_name, host_id, room_typeDisplayed host identity and room type when supplied
photos, listing_reviews_countReview photo URLs and the listing's reported review total
fetched_at, input, positionRetrieval 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.