Extract public guest reviews from Airbnb listing URLs. Add one or more room URLs and get structured review text, dates, reviewer metadata, listing ratings, review counts, languages, and host responses when Airbnb makes them public.
What does Airbnb Reviews Scraper do?
Airbnb Reviews Scraper turns public Airbnb room pages into clean review datasets. It is built for teams that need recurring guest feedback, reputation monitoring, competitor research, or market intelligence without copying reviews by hand.
The actor accepts Airbnb room URLs such as https://www.airbnb.com/rooms/20669368 and saves one dataset item per review.
Who is it for?
- 🏡 Property managers tracking guest sentiment across their own listings.
- 📊 Short-term rental analysts comparing competing stays in a destination.
- ⭐ Reputation teams monitoring recent public guest feedback.
- 🧭 Hospitality researchers building review datasets for market studies.
- 🤖 Automation teams feeding reviews into BI, CRM, or AI workflows.
Why use this actor?
- Saves structured review rows instead of screenshots or copied text.
- Includes listing context with every review for easy exports.
- Supports multiple Airbnb URLs in one run.
- Lets you cap reviews per listing to control run size and cost.
- Works through Apify datasets, API, webhooks, integrations, and MCP.
Quick start
- Open the actor on Apify.
- Paste one or more Airbnb room URLs into Airbnb listing URLs.
- Set Maximum reviews per listing.
- Run the actor.
- Download results from the dataset as JSON, CSV, Excel, XML, or HTML.
Input
{
"startUrls": [
{ "url": "https://www.airbnb.com/rooms/20669368" }
],
"maxReviewsPerListing": 10,
"sort": "default",
"proxyConfiguration": { "useApifyProxy": true }
}
Input settings
| Setting | JSON key | Type / default | Description |
|---|---|---|---|
| Airbnb listing URLs | startUrls |
array, default [{"url":"https://www.airbnb.com/rooms/20669368"}] |
Public Airbnb room/listing URLs such as https://www.airbnb.com/rooms/20669368. |
| Maximum reviews per listing | maxReviewsPerListing |
integer, default 25 |
How many guest reviews to save for each Airbnb listing URL. |
| Review sort order | sort |
string, default "default" |
Use Airbnb's default order or request recent reviews when available. |
| Proxy configuration | proxyConfiguration |
object, default {"useApifyProxy":true} |
Optional Apify Proxy settings. Datacenter proxy is usually enough for small public-review runs; use residential only if Airbnb blocks your traffic. |
Example input
{
"startUrls": [
{
"url": "https://www.airbnb.com/rooms/20669368"
}
],
"maxReviewsPerListing": 10,
"sort": "default",
"proxyConfiguration": {
"useApifyProxy": true
}
}
Output example
{
"listingUrl": "https://www.airbnb.com/rooms/20669368",
"listingId": "20669368",
"listingTitle": "Little Country Houses - Finley's Fort + hot tub",
"overallRating": 4.9,
"reviewCount": 308,
"reviewId": "1701461540622642748",
"reviewerName": "Gabriella",
"reviewerProfileUrl": "https://www.airbnb.com/users/show/755284424",
"reviewerLocation": null,
"reviewDate": "2026-06-05T13:40:21Z",
"rating": null,
"language": "en",
"text": "Our stay here was Superb...",
"translatedText": null,
"responseText": null,
"responseDate": null,
"scrapedAt": "2026-06-26T00:00:00.000Z"
}
Tips for best results
- Use direct
/rooms/URLs. - Start with 5-10 reviews per listing for testing.
- Remove duplicate URLs before large runs.
- Split very large URL lists into smaller batches.
- Review the dataset sample before connecting automation.
Common workflows
Reputation monitoring
Run the actor weekly on your managed listings and send new rows to your dashboard or spreadsheet.
Market research
Collect reviews from competing listings in the same destination and compare guest language, sentiment, and frequency.
Guest experience analysis
Export text to your NLP or LLM pipeline to classify recurring topics such as cleanliness, check-in, location, host communication, and amenities.
Integrations
Apify datasets connect to:
- Google Sheets
- Make
- Zapier
- Webhooks
- BigQuery exports
- S3-compatible storage
- Custom API clients
API usage
Run Airbnb Reviews Scraper from your own code with the Apify API.
Node.js
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const input = {
"startUrls": [
{
"url": "https://www.airbnb.com/rooms/20669368"
}
],
"maxReviewsPerListing": 10,
"sort": "default",
"proxyConfiguration": {
"useApifyProxy": true
}
};
const run = await client.actor('fetch_cat/airbnb-reviews-scraper').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
Python
from apify_client import ApifyClient
import os
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("fetch_cat/airbnb-reviews-scraper").call(run_input={
"startUrls": [
{
"url": "https://www.airbnb.com/rooms/20669368"
}
],
"maxReviewsPerListing": 10,
"sort": "default",
"proxyConfiguration": {
"useApifyProxy": true
}
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)
cURL
curl -X POST "https://api.apify.com/v2/acts/fetch_cat~airbnb-reviews-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"startUrls":[{"url":"https://www.airbnb.com/rooms/20669368"}],"maxReviewsPerListing":10,"sort":"default","proxyConfiguration":{"useApifyProxy":true}}'
Use with AI agents via MCP
Airbnb Reviews Scraper can be used by AI assistants through the hosted Apify MCP server.
Claude Code setup
claude mcp add --transport http apify "https://mcp.apify.com?tools=fetch_cat/airbnb-reviews-scraper"
Claude Desktop, Cursor, or VS Code JSON config
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=fetch_cat/airbnb-reviews-scraper"
}
}
}
Example prompts
- "Run Airbnb Reviews Scraper with this input JSON and summarize the dataset."
- "Export the latest Airbnb Reviews Scraper results to a table I can review."
- "Schedule this Actor for monitoring and tell me what changed between runs."
Data quality notes
Airbnb may not expose every field for every review. For example, per-review star ratings, reviewer location, translated text, or host response can be missing. Missing fields are returned as null rather than invented.
Limitations
- Supports public Airbnb room/listing pages only.
- Does not access private account data.
- Does not bypass login-only, CAPTCHA, or blocked pages.
- Availability, prices, and booking calendars are outside this actor's scope.
Legality
Use Airbnb Reviews Scraper responsibly and only for data you are allowed to process.
Legal and responsible use
This actor is intended for public web data. Review Airbnb's terms, privacy requirements, and applicable laws before using scraped data. Do not use the output for spam, harassment, or discriminatory decisions.
Support
Report bugs, wrong output, blocked runs, or missing fields from the Actor page. Include the Apify run ID or run URL, your input JSON, what you expected, what the Actor returned, and one reproducible public URL so the issue can be tested quickly.