Airbnb Reviews Scraper — Ratings, Comments & Host Replies
Pricing
from $4.00 / 1,000 review scrapeds
Airbnb Reviews Scraper — Ratings, Comments & Host Replies
Scrape all reviews for any Airbnb listing — rating, comment, date, reviewer, host response, photos, and topic tags. HTTP-only, MCP-ready.
Pricing
from $4.00 / 1,000 review scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
Airbnb Reviews Scraper
Airbnb Reviews Scraper is an Apify Actor for reviewers, analysts, operators, and AI agents that need public review data from an individual Airbnb stay listing. It accepts either Airbnb listing URLs or numeric listing IDs, and each output record represents one review. The returned fields include rating, comment text, dates, reviewer details, host response, review photos, highlight tags, and the listing metadata needed to keep the review attached to the right stay. It is HTTP-only, works through Apify MCP, and returns structured dataset items that are ready for downstream processing.
Best fit and connected workflows
This Actor fits workflows that start from a known Airbnb stay listing and need the review history in a structured form. It routes naturally into:
- sentiment analysis and topic labeling from
commentsandhighlightType - hospitality research using
rating,createdAt, andlistingReviewsCount - property management review monitoring with
hostResponseandhostResponseDate - LLM agent workflows that need one listing in and review records out through Apify MCP
- data pipelines that join review data with other listing-level datasets
Use For listing prices, amenities, and host metadata, the current README points to the companion Airbnb Scraper, while this Actor stays focused on reviews when the next workflow needs that Actor's focused input and output contract.
Practical scenario
A market analyst has a single Airbnb room URL from a competitor listing and wants to review recent guest sentiment before preparing a report. They run the Actor with that listing URL, ask for the most recenta bounded number of reviews, and receive fields such as rating, comments, createdAt, reviewerName, reviewerLocation, and hostResponse. The analyst uses the ratings and recurring phrases in the comments to decide which guest themes to track next, then shares the dataset link with a teammate for deeper analysis.
Input
Use either listingUrls or listingIds. Provide at least one.
| Field | Type | Description |
|---|---|---|
listingUrls | array | Airbnb stay listing URLs. Full URLs with or without query parameters are accepted, and the room ID is extracted automatically. Use this for individual stay listings. |
listingIds | array | Numeric Airbnb room IDs. Each ID is the number after /rooms/ in a listing URL. |
maxReviewsPerListing | integer | Maximum reviews to scrape per listing. Set to 0 to scrape all available reviews. Default 100. |
sortBy | string | Review order. MOST_RECENT, RATING_DESC, or RATING_ASC. |
language | string | ISO locale for localized dates and Airbnb auto-translations. Original text stays in comments. Default en. |
includeHostResponse | boolean | Includes the host's public reply in hostResponse when available. Default true. |
proxyConfiguration | object | Proxy settings used to reach Airbnb. Default uses Apify datacenter proxies in the US. |
Focused JSON example
{"listingUrls": ["https://www.airbnb.com/rooms/20669368"],"maxReviewsPerListing": 50,"sortBy": "MOST_RECENT","language": "en","includeHostResponse": true}
Output
Each dataset item is one review.
| Field | Type | Description |
|---|---|---|
listingId | string | Numeric Airbnb room ID. |
listingUrl | string | Airbnb listing URL. |
listingTitle | string or null | Listing title when available. |
listingReviewsCount | integer or null | Total public review count shown for the listing. |
reviewId | string | Unique review ID. |
rating | integer or null | Review rating. |
comments | string or null | Original review text. |
localizedReview | string or null | Auto-translated review text when available. |
language | string or null | Review language code. |
createdAt | string or null | Review date in ISO format. |
localizedDate | string or null | Localized relative date. |
reviewerId | string or null | Reviewer user ID. |
reviewerName | string or null | Reviewer name. |
reviewerLocation | string or null | Reviewer location when shown by Airbnb. |
reviewerTenure | string or null | Reviewer account tenure when shown instead of location. |
reviewerIsSuperhost | boolean or null | Whether the reviewer is a Superhost. |
reviewerPictureUrl | string or null | Reviewer profile photo URL. |
reviewerProfileUrl | string or null | Reviewer profile URL. |
hostResponse | string or null | Host's public reply. |
hostResponseDate | string or null | Date of the host reply. |
reviewPhotoUrls | array | Review photo URLs. |
highlightType | string or null | Airbnb highlight tag. |
channel | string or null | Booking channel. |
scrapedAt | string | Scrape timestamp in ISO format. |
Illustrative dataset record
{"listingId": "20669368","listingUrl": "https://www.airbnb.com/rooms/20669368","listingTitle": "Cosy Cotswold Cabin","listingReviewsCount": 308,"reviewId": "1701461540622642748","rating": 5,"comments": "Our stay here was superb. The cabin was lovely, very clean and stylish.","localizedReview": null,"language": "en","createdAt": "2026-06-05T13:40:21Z","localizedDate": "1 week ago","reviewerName": "Gabriella","reviewerLocation": "London, United Kingdom","reviewerIsSuperhost": false,"hostResponse": null,"hostResponseDate": null,"reviewPhotoUrls": [],"highlightType": null,"channel": null,"scrapedAt": "2026-06-18T09:00:00Z"}
How it works
The Actor uses Airbnb's public review API for individual stay listings and fetches review data in a paginated workflow. The live contract states that it is HTTP-only and self-healing at the operation-hash level. Output rows are written to the default dataset, and the overview table surfaces the key review fields: rating, reviewer, location, review text, date, host reply, and listing link.
Pricing
Airbnb Reviews Scraper uses Pay per event pricing plus standard Apify platform usage. Pricing is based on the charged events in the live contract:
- one Actor start event per run
- one
Review scrapedevent for each review written to the dataset
For example, if a listing returns one hundred reviews, the billed event count includes one start event and one hundred review events. If you want a smaller billed result set, use maxReviewsPerListing to set the review cap. For current totals and platform usage details, check the live Pricing tab on the Actor page.
Use with AI agents (MCP)
This Actor is available as an Apify Actor through Apify MCP. In agent workflows, the tool receives a listing URL or listing ID and returns structured review rows from the dataset.
Actor identity: khadinakbar/airbnb-reviews-scraper
Pull reviews for this Airbnb listing, keep the original text, include host replies, and return the dataset items for analysis.
The output is suitable interpreted one row at a time, where each row represents one public review. Provenance is preserved through listingId, listingUrl, reviewId, and scrapedAt, which makes it easier to trace records back to the listing and run. Scope is limited to individual stay listings, and the input schema accepts either full listing URLs or numeric room IDs. When you set a review cap, pagination still follows the sort order you choose, so the returned set reflects the order and limit together. Cost guidance is straightforward: each scraped review is billed as its own event, so the cap directly affects spend.
Apify API example
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const run = await client.actor('khadinakbar/airbnb-reviews-scraper').call({listingUrls: ['https://www.airbnb.com/rooms/20669368'],maxReviewsPerListing: 10,sortBy: 'MOST_RECENT',includeHostResponse: true,});const items = await client.dataset(run.defaultDatasetId).listItems();console.log(items.items);
Python
from apify_client import ApifyClientimport osclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("khadinakbar/airbnb-reviews-scraper").call(run_input={"listingUrls": ["https://www.airbnb.com/rooms/20669368"],"maxReviewsPerListing": 10,"sortBy": "MOST_RECENT","includeHostResponse": True,})dataset_id = run["defaultDatasetId"]items = list(client.dataset(dataset_id).iterate_items())print(items)
Best results and outcome guidance
Use a full Airbnb stay listing URL or the numeric room ID for the listing you want to inspect. If you need the newest public feedback, keep sortBy on MOST_RECENT. If you are comparing review tone across the full history, set maxReviewsPerListing to 0 and process the complete dataset. If your workflow depends on host replies, keep includeHostResponse enabled so hostResponse and hostResponseDate remain available for analysis.
Focused standalone workflow
Airbnb Reviews Scraper is designed as a focused standalone workflow for the public input and structured output contract described above.
Design note
I found that the dataset contract requires listingId, reviewId, and scrapedAt on every output row, which makes review provenance explicit and easy to trace in downstream workflows.
FAQ
Can this Actor work from a single listing URL?
Yes. It is designed for individual Airbnb stay listing URLs or the equivalent numeric room IDs.
Can I pass multiple listings in one run?
Yes. You can provide multiple listingUrls or listingIds, and the Actor will return one record per review across those listings.
Does it return the host's public reply?
Yes, when includeHostResponse is enabled. The reply appears in hostResponse, with hostResponseDate when available.
Which review order should I choose?
Use MOST_RECENT for the newest reviews first. Use RATING_DESC or RATING_ASC when rating order matters more than recency.
Can this Actor be used through Apify MCP?
Yes. It is MCP-ready and exposed as an Apify Actor, which makes it suitable for agent workflows that need structured review records.
Responsible use
This Actor collects publicly available Airbnb review data for lawful analysis and automation workflows. Review text can contain personal data, so downstream storage, sharing, and processing should follow applicable privacy and data protection rules. Use the output in ways that respect Airbnb's terms and the rights of reviewers and hosts.