Airbnb Reviews Scraper
Pricing
from $1.29 / 1,000 review scrapeds
Airbnb Reviews Scraper
Scrape Airbnb guest reviews for any listing: text, rating, reviewer and host profiles, host responses, and optional AI sentiment, topics, and translation. Export JSON, CSV, Excel.
Pricing
from $1.29 / 1,000 review scrapeds
Rating
0.0
(0)
Developer
ParseBird
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Airbnb Reviews Scraper
Extract guest reviews from any Airbnb listing — review text, star rating, reviewer and host profiles, host responses, and dates. Airbnb Reviews Scraper returns clean, structured JSON for every review, with optional sentiment scoring, topic detection, and automatic translation for non-English reviews.
| Paste a listing URL or ID and get every review with reviewer and host profiles, ratings, and host responses — sort by date or rating, filter by topic or keyword, and optionally add sentiment, detected topics, and English translations to each review. |
Copy to your AI assistant
Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.
Airbnb Reviews Scraper (parsebird/airbnb-reviews-scraper) scrapes guest reviews for Airbnb listings. Inputs: startUrls (array of {url} — Airbnb /rooms/ URLs), listingIds (array of numeric strings, alternative to startUrls), maxReviewsPerListing (integer, default 0 = all), sortBy (MOST_RECENT default / BEST_QUALITY / RATING_DESC / RATING_ASC — non-default sorts read all reviews first to rank correctly), filterByTopic (CLEANLINESS/LOCATION/HOSPITALITY/SLEEP/VALUE/COMMUNICATION/ACCURACY/CHECKIN/AMENITIES/NOISE/PARKING/WIFI/COMFORT/SAFETY/VIEW/GETTING_AROUND/BATHROOM/PRIVACY/FAMILY, matched against review text), searchQuery (string, case-insensitive substring match), locale (default en-US), enableAIAnalysis (boolean, default false — adds sentiment/sentimentScore/aiTopics/translatedText; translation only for non-English reviews), proxyConfiguration (residential, set by default). Output per review: listingId, listingUrl, reviewId, language, text, localizedDate, createdAt, rating, hostResponse, reviewerId/Name/PictureUrl/ProfileUrl/IsSuperhost, hostId/Name/PictureUrl/ProfileUrl/IsSuperhost, scrapedAt; with enableAIAnalysis also sentiment, sentimentScore, aiTopics, translatedText. Pricing: pay-per-event, $0.00199 per review on Free down to $0.00129 on Gold. API: https://apify.com/parsebird/airbnb-reviews-scraper/api - Token: https://console.apify.com/account/integrations
What is Airbnb Reviews Scraper?
Airbnb Reviews Scraper is an Apify Actor that pulls the full guest review history from any Airbnb listing — the same reviews shown on the listing page, without Airbnb's own API. Paste a listing URL or its numeric ID and get every review as structured JSON: text, star rating, dates, reviewer and host profiles, and host responses.
It runs on one listing or hundreds in a single job, so it works equally well for checking your own property's feedback or benchmarking a set of competitor listings.
What can Airbnb Reviews Scraper do?
- 📝 Full review text & rating — every review's text, star rating, and both a localized ("3 weeks ago") and exact ISO date.
- 👤 Reviewer & host profiles — names, profile pictures, profile URLs, and Superhost status for both sides.
- 💬 Host responses — the host's public reply to a review, when one exists.
- 🔢 Multiple listings per run — combine Start URLs and/or plain listing IDs.
- 🔀 Sorting — most recent (Airbnb's native, fastest order), best quality, highest rated, or lowest rated.
- 🎯 Topic & keyword filtering — keep only reviews about cleanliness, location, wifi, noise, and 15 more topics, or matching a free-text search.
- 🤖 Optional AI analysis — a sentiment label and score, detected topics, and an English translation for non-English reviews.
- 🌐 Locale support — get localized dates and labels in the language you need.
- 📅 Built for monitoring — save an input and run it on an Apify Schedule for a rolling review feed.
- ⚡ Runs on Apify with API access, webhooks, integrations, and export to JSON, CSV, Excel, HTML, or XML.
What data can you extract from Airbnb reviews?
| Field | Description |
|---|---|
reviewId / text / rating | Core review content |
localizedDate / createdAt | Localized ("3 weeks ago") and exact ISO-8601 dates |
language | Detected language code of the review text |
hostResponse | The host's public reply, when present |
reviewerName / reviewerPictureUrl / reviewerProfileUrl / reviewerIsSuperhost | Reviewer profile |
hostName / hostPictureUrl / hostProfileUrl / hostIsSuperhost | Host profile |
sentiment / sentimentScore | Positive / neutral / negative label and a -1..1 score (only with enableAIAnalysis) |
aiTopics | Topics detected in the review text (only with enableAIAnalysis) |
translatedText | English translation, for non-English reviews only (only with enableAIAnalysis) |
How to scrape Airbnb reviews
- Open Airbnb Reviews Scraper on Apify Store and click Try for free.
- Paste one or more listing URLs into Start URLs, or plain numeric IDs into Listing IDs.
- (Optional) Set Max reviews per listing, Sort by, a Filter by topic, or a Search query.
- (Optional) Turn on Enable AI analysis for sentiment, topics, and translations.
- Click Start, then open the Dataset tab. Export as JSON, CSV, Excel, HTML, or XML.
Input example — simplest run
{"startUrls": [{ "url": "https://www.airbnb.com/rooms/12937" }]}
Input example — plain listing IDs
{"listingIds": ["12937", "1029728", "54321"]}
Input example — most recent 50, sorted
{"startUrls": [{ "url": "https://www.airbnb.com/rooms/12937" }],"maxReviewsPerListing": 50,"sortBy": "MOST_RECENT"}
Input example — topic filter
{"startUrls": [{ "url": "https://www.airbnb.com/rooms/12937" }],"filterByTopic": "CLEANLINESS"}
Input example — AI sentiment and translations
{"startUrls": [{ "url": "https://www.airbnb.com/rooms/12937" }],"maxReviewsPerListing": 50,"sortBy": "MOST_RECENT","enableAIAnalysis": true}
Turn one scrape into a recurring review monitor
For reputation tracking, save an input for your own or a competitor's listings and run it on an Apify Schedule:
- Weekly, active properties:
sortBy: "MOST_RECENT",maxReviewsPerListing: 25-50, andenableAIAnalysis: truefor a rolling sentiment view. - Monthly, competitor benchmarking: batch several
listingIds, keepsortBy: "MOST_RECENT", and export to Google Sheets or your BI tool. - Issue triage after each run: filter by low ratings, negative sentiment, or a
searchQuerylikewifi,cleanliness, ornoise.
{"listingIds": ["12937", "1029728"],"maxReviewsPerListing": 50,"sortBy": "MOST_RECENT","enableAIAnalysis": true}
Use webhooks to notify your team when each run finishes. If you also need fresh listing details, run Airbnb Scraper & API on the same listing IDs to update prices, availability, and host details alongside the review history.
Output example
{"listingId": "12937","listingUrl": "https://www.airbnb.com/rooms/12937","reviewId": "1598794192968517887","language": "de","text": "Ich war zum dritten oder vierten Mal bei Orestes...","localizedDate": "3 weeks ago","createdAt": "2026-01-14T21:58:39Z","rating": 5,"hostResponse": null,"reviewerId": "232038","reviewerName": "Marion","reviewerPictureUrl": "https://a0.muscache.com/im/users/232038/profile_pic/…/original.jpg","reviewerProfileUrl": "/users/show/232038","reviewerIsSuperhost": false,"hostId": "50124","hostName": "Orestes","hostIsSuperhost": false,"scrapedAt": "2026-02-10T00:52:54.470Z","sentiment": "positive","sentimentScore": 0.95,"aiTopics": ["location", "hospitality"],"translatedText": "I stayed at Orestes for the third or fourth time..."}
Download the dataset in JSON, CSV, Excel, HTML, or XML from the Dataset tab.
Use cases
- ⭐ Reputation monitoring — track new reviews and sentiment trends for your own listings.
- 🔍 Competitor benchmarking — compare review volume, ratings, and recurring complaints across similar listings.
- 🛠️ Issue triage — surface negative reviews about a specific topic (cleanliness, noise, wifi) right after each stay.
- 📊 Market research — analyze what guests value across a market or neighborhood.
- 🤖 AI & data pipelines — feed review data into LLM agents through the Apify MCP server or a BI tool.
How it works
- The Actor resolves each Start URL or listing ID to a numeric Airbnb listing id.
- It paginates through that listing's reviews. For the default
MOST_RECENTsort with no topic/search filter, it stops as soon asmaxReviewsPerListingis reached; sorting by rating or filtering requires reading every review first so results can be ranked or filtered correctly. - Each raw review is normalized into a flat record with reviewer and host profile fields.
filterByTopicandsearchQueryare applied against the review text, then results are sorted persortByand trimmed tomaxReviewsPerListing.- With
enableAIAnalysis, each kept review gets a sentiment label/score, detected topics, and — for non-English reviews — an English translation. - Each review is billed as one pay-per-event result.
How much does it cost to scrape Airbnb reviews?
Airbnb Reviews Scraper uses pay-per-event pricing. You are charged once per review.
| Plan | Price per review | Price per 1,000 reviews |
|---|---|---|
| Free | $0.00199 | $1.99 |
| Bronze | $0.00179 | $1.79 |
| Silver | $0.00159 | $1.59 |
| Gold | $0.00129 | $1.29 |
Scraping 1,000 reviews costs about $1.99 on the Free plan. Apify platform usage (compute and proxy) is billed separately but is minimal for the default run; enableAIAnalysis adds a small amount of processing time and, for non-English reviews, one translation request each. See the Apify pricing page.
API usage examples
Run Airbnb Reviews Scraper with the Apify API.
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_API_TOKEN>")run_input = {"listingIds": ["12937"],"maxReviewsPerListing": 50,"sortBy": "MOST_RECENT","enableAIAnalysis": True,}run = client.actor("parsebird/airbnb-reviews-scraper").call(run_input=run_input)for review in client.dataset(run["defaultDatasetId"]).iterate_items():print(review["reviewerName"], review["rating"], review.get("sentiment"))
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });const run = await client.actor('parsebird/airbnb-reviews-scraper').call({startUrls: [{ url: 'https://www.airbnb.com/rooms/12937' }],filterByTopic: 'CLEANLINESS',});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.map((r) => `${r.rating}★ — ${r.text.slice(0, 60)}`));
Connect finished datasets to Google Sheets, Slack, Zapier, Make, webhooks, or your own pipeline.
Is it legal to scrape Airbnb reviews?
Airbnb Reviews Scraper reads only publicly visible data — the same reviews any visitor sees on a listing's airbnb.com page. It does not log in or access private account data. Review text includes personal opinions and reviewer names, which may be personal data under the GDPR and similar laws; you are responsible for having a lawful basis to process it and for complying with Airbnb's Terms of Service. For background, read Apify's guide: Is web scraping legal?.
Related Actors
- Airbnb Scraper & API — Listings, prices, amenities, host details, and availability calendars.
- Airbnb Availability Calendar Scraper — Day-by-day availability for a single listing.
- Trustpilot Reviews Scraper — Business reviews from Trustpilot.
- GetYourGuide Review Scraper — Tour and activity reviews.
FAQ
Do I need an Airbnb account or API key? No. The Actor uses Airbnb's public review data — no login or API key.
How does sorting by rating work if Airbnb doesn't expose a sort parameter?
Airbnb's public review data is always served in most-recent-first order. For BEST_QUALITY, RATING_DESC, and RATING_ASC, the Actor reads every review for the listing and sorts them itself, so those modes take longer than MOST_RECENT on listings with many reviews.
Is filterByTopic Airbnb's own topic tagging?
No. Airbnb doesn't expose its internal per-review topic tags through the data this Actor uses, so filterByTopic and aiTopics match review text against a keyword set for each topic (cleanliness, location, wifi, noise, and so on). It's a practical approximation, not Airbnb's own classification.
Is the sentiment score from a trained AI model?
It's a deterministic method that combines the review's star rating with a keyword-weighted read of the text — fast, free, and consistent, but not a large language model. Treat sentiment/sentimentScore as a useful signal for triage, not a definitive judgment.
How accurate are the translations?
translatedText uses a machine translation service and is populated only for reviews whose detected language isn't English. Quality is generally good for everyday review text but, like any machine translation, can miss nuance or slang.
Can I schedule recurring runs to monitor new reviews? Yes — see "Turn one scrape into a recurring review monitor" above. Use Apify schedules and webhooks.
Can I use this as an Airbnb reviews API? Yes. Call the Actor through the Apify API, use webhooks, or connect it to AI assistants with the Apify MCP server.
Something looks wrong or missing. Report it on the Issues tab and it will be looked at quickly.