Airbnb Reviews Scraper | Extract Ratings, Reviews & Guest Data
Pricing
from $2.00 / 1,000 reviews
Airbnb Reviews Scraper | Extract Ratings, Reviews & Guest Data
Scrape Airbnb reviews from any listing URL with this fast Airbnb Review Scraper API. Extract review text, ratings, dates, reviewer profiles, host responses, and sentiment-ready structured data for market research, competitor analysis, AI workflows, and hospitality intelligence.
Pricing
from $2.00 / 1,000 reviews
Rating
5.0
(1)
Developer
Epic Scrapers
Maintained by CommunityActor stats
1
Bookmarked
3
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Airbnb Reviews Scraper ⭐

From $2.00 / 1,000 reviews — Scrape every guest review from any Airbnb.com listing, including ratings, full review text, reviewer profiles, host responses, and translations, without logging in. Built for property managers, hospitality analysts, and data teams who need structured Airbnb review data at scale.
Search by listing URL, max review count, sort order (most recent, most relevant, highest rated, lowest rated), date range, and locale (60+ languages). Returns full review text, star ratings (1–5), reviewer and host profile data, Airbnb-curated highlights, host responses, localized dates, and reviewer tenure. Up to unlimited reviews per run. No login, no API key, no browser required.
🚀 Features
- No login required — Scrapes all reviews from public Airbnb listing pages without an Airbnb account, API key, or browser automation. Works the same way any visitor browsing Airbnb sees them.
- 4 sort options — Choose from
most-recent,most-relevant,highest-rated, orlowest-ratedto get the reviews that matter most to your analysis. No other Airbnb review scraper on Apify Store offers this flexibility. - Date-range filtering — Use
sinceDate(YYYY-MM-DD) to scrape only reviews posted on or after a specific date. Perfect for recurring monitoring runs where you only want new reviews since your last extraction. - 60+ locales — Set a locale (from
en-UStozh-TWand everything in between) to get localized dates, reviewer location strings, and translated review text when Airbnb provides it. Essential for multilingual portfolios and international market research. - Unlimited reviews per listing — No artificial caps. Scrape 10 reviews or 10,000+ from a single listing. The actor paginates through every available review using Airbnb's own API.
- Automatic session recovery — If an Airbnb session goes stale mid-run (which happens with large scrapes), the actor detects it, refreshes the session, and retries automatically — up to 3 times. Your run doesn't fail on a stale cookie.
- Full reviewer & host profiles — Each review returns the reviewer's and host's Airbnb user ID, first name, and profile picture URL. Track who's reviewing and who's responding across your portfolio.
- Host response tracking — Captures the host's reply to each review when one exists. Monitor response rates and response quality across competing properties.
- Structured JSON output — Every review is a clean JSON object with 20+ fields, ready for ingestion into analytics pipelines, BI tools, or AI workflows.
- Multi-listing batch support — Pass any number of Airbnb listing URLs in a single run. The actor processes each one sequentially and pushes all results to the same dataset.
📋 What You Get
Every scraped review returns 20 fields of structured data, including reviewer information, host details, ratings, dates, and translations:
| Field | Type | Description | Example |
|---|---|---|---|
startUrl | string | The Airbnb listing URL from which this review was scraped | https://www.airbnb.com/rooms/12937 |
id | string | Unique Airbnb review identifier | 1685465785158235566 |
language | string | ISO 639-1 language code of the original review text | en |
text | string | Full review body text (may include <br/> for line breaks) | "I only stayed one night at Roberto's place but he was super friendly..." |
localizedText | string or null | Translated version of the review text when available in the requested locale | null |
localizedReview | string or null | Alternative localized version of the review (usually null) | null |
createdAt | string | ISO 8601 timestamp of when the review was posted | 2026-05-14T11:59:38Z |
revieweeId | string | Airbnb user ID of the host being reviewed | 575166842 |
revieweeName | string | First name of the host | Roberto |
revieweePictureUrl | string | Profile picture URL of the host | https://a0.muscache.com/im/pictures/user/... |
reviewerId | string | Airbnb user ID of the guest who wrote the review | 180379282 |
reviewerName | string | First name of the guest reviewer | Luciana |
reviewerPictureUrl | string | Profile picture URL of the reviewer | https://a0.muscache.com/im/pictures/user/... |
reviewHighlight | string or null | Airbnb-curated highlight snippet from the review | null |
highlightType | string or null | Category of the review highlight (e.g., LENGTH_OF_STAY) | null |
rating | integer | Star rating given by the reviewer, from 1 to 5 | 5 |
response | string or null | Host's reply to this review, if any | null |
localizedDate | string | Human-readable relative date string as shown on Airbnb | "3 weeks ago" |
localizedReviewerLocation | string or null | Reviewer's tenure on Airbnb or geographic location | "8 years on Airbnb" |
collectionTag | string or null | Tag indicating the review belongs to a curated collection | null |
📥 Input
| Input | Type | Required | Default | Description |
|---|---|---|---|---|
startUrls | array of objects | ✅ Yes | — | One or more Airbnb room URLs to scrape reviews from. Each entry should have a url field. |
maxReviewsPerListing | integer | No | all | Maximum number of reviews to scrape from each listing. Leave empty to scrape all available reviews. |
sortBy | string | No | most-recent | Order in which reviews are scraped. Options: most-recent, most-relevant, highest-rated, lowest-rated. |
sinceDate | string | No | — | Only scrape reviews on or after this date (format: YYYY-MM-DD). Requires sortBy: most-recent. |
locale | string | No | en-US | Locale for localized review text, dates, and labels. Supports 60+ locale codes including en-GB, fr-FR, de-DE, ja-JP, pt-BR, es-ES, ko-KR, zh-CN, and more. |
📝 Example Input
{"startUrls": [{ "url": "https://www.airbnb.com/rooms/12937" },{ "url": "https://www.airbnb.com/rooms/1029728" }],"maxReviewsPerListing": 50,"sortBy": "most-recent","sinceDate": "2026-01-01","locale": "en-US"}
📝 Example Output
{"startUrl": "https://www.airbnb.com/rooms/12937","id": "1685465785158235566","language": "en","text": "I only stayed one night at Roberto's place but he was super friendly and helpful. Even walked me over a known restaurant for a late lunch after my arrival.","localizedText": null,"localizedReview": null,"createdAt": "2026-05-14T11:59:38Z","revieweeId": "575166842","revieweeName": "Roberto","revieweePictureUrl": "https://a0.muscache.com/im/pictures/user/User/original/d21f57b5-4344-42d5-9b6f-18091115be4a.jpeg","reviewerId": "180379282","reviewerName": "Luciana","reviewerPictureUrl": "https://a0.muscache.com/im/pictures/user/User/original/5a3a574e-5cce-43bd-a11b-442b0b152ddd.jpeg","reviewHighlight": null,"highlightType": null,"rating": 5,"response": null,"localizedDate": "3 weeks ago","localizedReviewerLocation": "8 years on Airbnb","collectionTag": null}
🔗 Related Actors
| Actor | Description |
|---|---|
| Whatnot Seller Review Scraper | Extract seller ratings, reviews, and reviewer profiles from Whatnot.com marketplace — same review-scraping pattern for a different platform |
💡 Use Cases
📈 Competitive Benchmarking for Property Managers
A property manager overseeing 50 short-term rentals in Barcelona needs to understand how their properties stack up against competitors in the same neighborhoods. They run this actor weekly with a list of competitor listing URLs, scraping the 25 most recent reviews per property with sortBy: "most-recent".
By comparing rating distributions across properties, they identify which competitors consistently score 4.9+ and analyze what guests praise in their text fields. The response field reveals which competitors are actively engaging with guests — a strong correlation with higher ratings. They export the dataset to Google Sheets via Apify's integration and build a dashboard tracking average rating, response rate, and review volume per competitor each week.
The result: data-driven decisions on pricing adjustments, amenity upgrades, and host training priorities that directly improve their portfolio's competitive position.
🧠 Sentiment Analysis for Hospitality Brands
A hotel group expanding into the vacation rental space needs to understand what drives guest satisfaction across different property types. They scrape 500+ Airbnb listings in their target markets using batch startUrls, collecting full text fields across thousands of reviews.
The review text feeds into an NLP pipeline that extracts sentiment scores, topic clusters (cleanliness, location, check-in experience, amenities), and recurring keywords. By joining this with rating data, they identify which topics correlate most strongly with high and low scores. For example, they discover that properties mentioning "smart lock" in positive reviews score 0.3 stars higher on average than those without.
This analysis directly shapes their property acquisition criteria: they now prioritize listings with contactless check-in, dedicated workspace, and good soundproofing — the three topics that most consistently predict 5-star ratings across their dataset.
🏠 Reputation Monitoring for Hosts
An independent host with 8 listings across Lisbon runs this actor every Monday morning via Apify Schedules. They configure it with sortBy: "most-recent", maxReviewsPerListing: 25, and a sinceDate of the previous Monday to capture only the week's new reviews.
The actor pushes results to a Slack webhook: new 1–3 star reviews trigger an immediate alert with the review text and reviewerName, while weekly summaries of rating averages are posted to a dashboard channel. The host can respond to negative feedback within hours instead of days.
Over three months of monitoring, the host identifies a recurring complaint pattern about thin walls in one property. They install acoustic panels, and the next month's average rating for that listing climbs from 4.2 to 4.7. The ROI: one preventable 3-star review prevented per week, saving an estimated €2,000 in lost future bookings.
🚀 Market Entry Research for Travel Tech Startups
A travel tech company building an AI-powered booking assistant needs to understand guest preferences across 20 cities to train their recommendation model. They scrape 200 Airbnb listings per city, collecting all available reviews to build a training dataset of 40,000+ reviews.
The text and localizedText fields provide natural language data in multiple languages, which their model uses to learn sentiment patterns and guest priorities by location. The rating field serves as ground truth for their satisfaction prediction model. They also use collectionTag and highlightType to understand trip-type patterns — for example, that "business trip" tagged reviews in Tokyo prioritize fast WiFi, while "family trip" reviews in Orlando mention pool access 3x more often.
The resulting model predicts booking satisfaction with 86% accuracy, becoming the core differentiator of their product. Without bulk access to structured Airbnb review data, this training effort would require months of manual data collection.
💰 Investor Due Diligence for Vacation Rental Acquisitions
A real estate investment firm evaluating a 15-unit apartment building in Miami for conversion to short-term rentals uses this actor to research the competitive landscape. They scrape every review from the 50 highest-rated comparable listings within a 1-mile radius.
By analyzing the text fields for each competitor, they build a feature importance matrix: which amenities, location attributes, and host behaviors consistently appear in 5-star reviews. They discover that guests in this micro-market value "private parking" and "responsive host" above "pool access" or "ocean view" — counter to their initial assumptions.
Armed with this data, the firm budgets for a parking solution and a dedicated concierge service rather than pool renovation, saving $120,000 in unnecessary construction. The acquisition closes with a data-backed business plan that forecasts 88% average occupancy based on the review-derived competitive analysis.
🎓 Academic Research on Short-Term Rental Markets
A PhD candidate in urban studies is researching the impact of short-term rentals on local housing markets in 10 European cities. They use this actor to scrape all reviews from 1,000 Airbnb listings per city, collecting createdAt timestamps spanning 5+ years of review history.
The localizedReviewerLocation field reveals traveler origin patterns — which cities send the most visitors and how those patterns shifted after COVID-19. The rating and text data feed into a longitudinal analysis of guest satisfaction trends, showing that properties managed by professional operators score consistently higher than individual hosts, with a statistically significant gap of 0.4 stars.
The resulting paper, published in a peer-reviewed journal, uses this dataset to argue for tiered regulatory approaches to short-term rental management. The actor's structured data makes what would have been months of manual data collection feasible within a single research semester.
❓ Frequently Asked Questions
🔍 How do I find the right listing URL?
Open any Airbnb property page in your browser. The URL follows the format https://www.airbnb.com/rooms/XXXXXXXX. Copy the full URL from the address bar. Experience URLs, wishlist URLs, and search result pages are not supported — only individual room URLs work.
📊 How many reviews can I scrape per run?
There is no hard limit. The actor paginates through every available review using Airbnb's API. You can scrape 10 reviews or 10,000+ from a single listing. Use maxReviewsPerListing to cap the number if you only need a sample. For large scrapes (1,000+ reviews per listing), a single listing typically completes in under 30 seconds.
🔑 Do I need an Airbnb account or API key?
No. The actor establishes an anonymous web session automatically, exactly like any visitor browsing Airbnb without logging in. No login credentials, API keys, or browser automation are required.
🌍 Can I scrape reviews from listings in any country?
Yes. Airbnb listings from any country work with this actor. The locale parameter lets you set the language for dates and labels (e.g., de-DE for German, ja-JP for Japanese). The review text is returned in the original language the guest wrote in. Use locale to get translated versions when Airbnb provides them.
⏱️ How fresh is the data?
Each run scrapes reviews live from Airbnb in real time. There is no cached or stale dataset. The createdAt timestamp tells you exactly when the review was posted. For recurring monitoring, use sinceDate to capture only new reviews since your last run.
📤 Can I export the data to Excel, CSV, or Google Sheets?
Yes. The Apify platform supports exporting datasets as JSON, CSV, Excel (XLSX), XML, HTML, and RSS. Use the built-in integrations to push data directly to Google Sheets, Airtable, Slack, Make, Zapier, or any webhook endpoint. The API also lets you programmatically access results in any format.
🏆 How is this different from other Airbnb review scrapers on Apify?
This actor offers 4 sort options (most competitors offer 1), 60+ locales (competitors support 1–20), date-range filtering with sinceDate (only 2 competitors offer this), automatic session recovery when Airbnb returns stale data (unique to this actor), and the same competitive pricing at $2/1,000 reviews. The output schema is also drop-in compatible with the leading Airbnb reviews actor — existing pipelines work without changes.
🚨 What happens if the actor encounters an error mid-run?
The actor handles three common failure modes: stale sessions (refreshes cookies and retries up to 3 times), rate limiting (429 responses), and malformed listing URLs (skips with a warning and continues). Each page request also includes a retry mechanism with backoff. In practice, runs with valid URLs complete successfully without intervention.
📚 Technical Details
⚙️ How It Works
The actor uses a two-phase approach. First, it establishes an anonymous Airbnb web session by calling the platform's tracking and homepage endpoints to collect the required cookies and CSRF token. Second, it calls Airbnb's internal GraphQL API (ReviewsV2Query) with the base64-encoded listing ID, paginating through reviews in batches of 20 until the requested limit is reached or no more reviews remain. Each review is extracted, normalized, and pushed to the dataset in real time. No browser, no Selenium, no Puppeteer — pure HTTP requests for maximum speed and minimum cost.
🛡️ Error Handling
- Stale sessions — If a scrape returns unexpectedly few reviews (≤2), the actor assumes the session has gone stale, refreshes cookies via a new
createSession()call, and retries. Up to 3 session refreshes per listing. - HTTP errors — Non-200 responses from the Airbnb API are caught and retried with exponential backoff (500ms, 1000ms, 1500ms). After 3 failed attempts on a single page, the actor moves on to avoid blocking the entire run.
- Rate limiting (429) — Detected explicitly and reported with a clear error message suggesting proxy configuration or reduced concurrency.
- Invalid URLs — URLs that don't match the
/rooms/pattern are logged as warnings and skipped. The run continues with the remaining valid URLs. - Empty results — Listings with no reviews or where all reviews are older than
sinceDateproduce empty results without error.
✅ Data Integrity
- Schema consistency — Every review object contains all 20 fields, with
nullvalues for missing data (e.g., no host response, no translation, no highlight). You never have to handle missing keys. - Deduplication — The input list is not deduplicated (if the same URL appears twice, it's scraped twice). For downstream deduplication, use the
idfield, which is Airbnb's unique review identifier. - Rate limiting avoidance — Listings are processed sequentially, not concurrently, to avoid triggering Airbnb's rate limits. For large batches, this is more reliable than parallel scraping.
- Real-time pushing — Each review is pushed to the dataset immediately upon extraction via
Actor.pushData(). If the run is interrupted, all reviews scraped up to that point are preserved.
🔍 SEO Keywords
Airbnb reviews scraper, Airbnb review extractor, Airbnb guest reviews dataset, scrape Airbnb reviews, Airbnb review API, Airbnb review data export, Airbnb review sentiment analysis, bulk Airbnb review scraper, Airbnb listing reviews, Airbnb host response scraper, Airbnb review text extraction, Airbnb star ratings scraper, Airbnb review translation, Airbnb localized reviews, Airbnb review monitoring, Airbnb competitive analysis, Airbnb market research, vacation rental data, short-term rental analytics, Airbnb data extraction, Airbnb scraper Apify, Airbnb review actor, Airbnb property reviews, Airbnb guest feedback, Airbnb review pagination, Airbnb review sorting, Airbnb date filter reviews, Airbnb no login scraper, Airbnb review CSV export, Airbnb review JSON, hospitality data scraper, travel data extraction, property management data, Airbnb review API alternative, Airbnb review analysis tool, scrape Airbnb without API, Airbnb review dataset, Airbnb multilingual reviews
⚠️ Disclaimer
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Airbnb.com, Airbnb Inc., or any of their subsidiaries. All trademarks are the property of their respective owners.
This Actor accesses only publicly available review data on Airbnb.com. It requires no authentication, no login, and accesses data that is visible to any public visitor. You are solely responsible for ensuring your use complies with Airbnb's Terms of Service and applicable laws in your jurisdiction, including but not limited to GDPR, CCPA, and other data protection regulations.