Airbnb Reviews Scraper: All Reviews, Replies & Translations
Pricing
from $2.00 / 1,000 reviews
Airbnb Reviews Scraper: All Reviews, Replies & Translations
Export every review of any Airbnb listing: text, star rating, date, reviewer, length of stay, host reply and a translation into your language. Get only reviews since a date for monitoring. Thousands of reviews in seconds, no login. Export to CSV, Excel or API.
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
10 days ago
Last modified
Categories
Share
Airbnb Reviews Scraper: every review of any listing, with ratings, host replies and translations
Airbnb Reviews Scraper turns the reviews of Airbnb listings into a spreadsheet for reputation monitoring, guest-experience research and sentiment analysis. Paste room URLs, one or hundreds, and you get one row per review: the full text, the 1–5 star rating, the date, the reviewer, the length of stay, the host's reply and an English (or any language) translation.
- Every review, fast. The Actor fetches 50 reviews per request and several pages and listings in parallel. In our test, 1,750 reviews from 3 listings took 7 seconds.
- Only new reviews on scheduled runs. Set Scrape reviews since and the run stops at the first older review, so a daily run costs only what's new.
- Translations included.
textis the review as written;localizedTextis Airbnb's translation into your chosen language. Analyze reviews from every country in one language. - Sort by what you need. Most recent, most relevant, highest rated or lowest rated, so a limit of 50 can mean "the 50 worst reviews".
- Pay per review, no subscription. $2–$2.50 per 1,000 reviews on paid Apify plans ($3 on the Free plan). No Airbnb account, API key or proxy setup. Export to JSON, CSV, Excel or Google Sheets, or use the API.
Scope: This Actor collects reviews. For listing details such as prices, amenities, host data and coordinates, or to find listings in a city, use Airbnb Scraper.
What can you do with Airbnb Reviews Scraper?
| Goal | How |
|---|---|
| Monitor your listings' reviews | Schedule a daily run with sinceDate set to yesterday and send new reviews to Slack or a spreadsheet. |
| Find recurring complaints | Sort by lowest-rated, then group the text of reviews rated 3 or less by topic. |
| Benchmark competitors | Scrape your competitors' listings and compare average rating, review volume per month and reply rate. |
| Measure how hosts reply | Share of reviews with a response, and the time between createdAt and respondedAt. |
| Run sentiment analysis at scale | Feed localizedText (or text when it's empty) to your model or an AI assistant, so every review is in one language. |
| Understand guests | localizedReviewerLocation shows where guests come from, reviewHighlight how long they stayed. |
How it compares
| What you need | Airbnb Reviews Scraper | Manual copy-paste | Reputation-management subscriptions |
|---|---|---|---|
| Reviews per listing | All of them, or your limit | A page at a time | Depends on the plan |
| New reviews only | Yes, with Scrape reviews since | By hand | Usually yes |
| Translations | Airbnb's own, in your language | No | Varies |
| Raw data for your own tools | Every field as JSON, CSV, Excel or API | No | Mostly dashboards |
| Price | Pay per review | Your time | Monthly subscription |
Quick start
- Click Try for free and sign in to Apify.
- Paste one or more listing links in Listing URLs, for example
https://www.airbnb.com/rooms/12937. Links from any Airbnb domain work. - For a first run, set Max reviews per listing to
20. - Click Start. When the run finishes, open the Output tab and export the data.
{"startUrls": [{ "url": "https://www.airbnb.com/rooms/12937" }],"maxReviewsPerListing": 20,"sortBy": "most-recent"}
What data can you extract?
Every row is one review:
| Group | Fields |
|---|---|
| Review | id, rating, text, language, localizedText, createdAt, localizedDate, reviewHighlight, highlightType |
| Reviewer | reviewerId, reviewerName, reviewerPictureUrl, localizedReviewerLocation |
| Host | response, respondedAt, revieweeId, revieweeName, revieweePictureUrl |
| Listing | listingId, startUrl |
Monitor reviews with scheduled runs
Most of the value comes from running the same listings again and picking up new reviews. Apify can run the Actor for you on a schedule and send the results wherever you need them.
1. Save your input as a task
Open the Actor, add your listing URLs, set Scrape reviews since to a recent date, then click Save as a new task. A task is a saved input you can run again with one click or on a schedule.
2. Schedule the task
In Apify Console, go to Schedules, click Create new, choose how often to run (for example daily at 06:00 in your time zone), and add your task. See Schedules and How to create a schedule.
Watch how to schedule an Actor:
Or schedule a saved task:
| Use case | Frequency | Cron expression |
|---|---|---|
| Alerts for your own listings | Daily | 0 6 * * * |
| Competitor benchmarking | Weekly (Monday) | 0 6 * * 1 |
| Market-wide research (many listings) | Monthly | 0 6 1 * * |
The date in a saved task is fixed. To always fetch "since yesterday", update sinceDate through the API before each run, or set it to the start of the month and remove duplicates by id (every review has a stable id).
3. Send the results to a spreadsheet or Slack
Connect Google in the task's Integrations tab to save every run to Google Sheets or Google Drive automatically, or add the Slack integration to get new reviews in a channel:
4. Compare runs
- New reviews:
ids you haven't seen before. - Rating trend: average
ratingperlistingIdand month ofcreatedAt. - Reply rate and speed: share of reviews with
response, andrespondedAtminuscreatedAt.
Input reference
| Field | Type | Default | Effect |
|---|---|---|---|
startUrls | Array of URLs | Required | Airbnb room URLs (/rooms/<id>) from any Airbnb domain. Duplicates are scraped once. |
maxReviewsPerListing | Integer | Empty (all) | Maximum reviews saved per listing. |
sortBy | String | "most-recent" | "most-recent", "most-relevant", "highest-rated" or "lowest-rated". |
sinceDate | Date | Empty | YYYY-MM-DD. Only reviews posted on or after this date. Sorts by most recent and stops at the first older review. |
locale | String | "en-US" | Language of localizedText and localizedDate. |
proxyConfiguration | Object | Apify datacenter proxy | Failed requests are retried on a new IP. |
Ready-to-run examples
New reviews since a date, for several listings
{"startUrls": [{ "url": "https://www.airbnb.com/rooms/12937" }, { "url": "https://www.airbnb.co.uk/rooms/7743405" }],"sinceDate": "2026-10-01"}
The 50 worst reviews of a competitor
{"startUrls": [{ "url": "https://www.airbnb.com/rooms/7743405" }],"sortBy": "lowest-rated","maxReviewsPerListing": 50}
Read text and response side by side to see what guests complain about and how the host handles it.
Every review in German
{"startUrls": [{ "url": "https://www.airbnb.com/rooms/12937" }],"locale": "de-DE"}
Reviews written in another language get a German localizedText; localizedDate is in German too.
All reviews of a whole market
Run Airbnb Scraper for a city, export the url column, and paste it into Listing URLs. Listings are scraped 5 at a time; set maxReviewsPerListing (for example 100) to keep the cost predictable.
Use it from your code
Run the Actor and get the reviews with the Apify API:
curl -X POST "https://api.apify.com/v2/acts/epicscrapers~airbnb-reviews-scraper/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \-H "Content-Type: application/json" \-d '{"startUrls": [{"url": "https://www.airbnb.com/rooms/12937"}], "sinceDate": "2026-10-01"}'
Python, with the Apify client:
from datetime import date, timedeltafrom apify_client import ApifyClientclient = ApifyClient("<YOUR_TOKEN>")run = client.actor("epicscrapers/airbnb-reviews-scraper").call(run_input={"startUrls": [{"url": "https://www.airbnb.com/rooms/12937"}],"sinceDate": (date.today() - timedelta(days=1)).isoformat(),})for review in client.dataset(run["defaultDatasetId"]).iterate_items():print(review["rating"], review["localizedText"] or review["text"])
The Actor also works with Make, Zapier and n8n.
Analyze the results with ChatGPT or Claude
Export the dataset as CSV and attach it to a chat with ChatGPT, Claude or another AI assistant. Some prompts to start with:
Find the top complaints. "These are Airbnb reviews of one listing. Using localizedText when it's filled and text otherwise, list the 5 most frequent complaints with how many reviews mention each, and quote one short example for each."
Compare listings. "Group these reviews by listingId. For each listing, give the average rating, the number of reviews in the last 12 months (createdAt), the share with a host response, and the two things guests praise most."
Draft replies. "For each review with a rating of 3 or less and no response, draft a short, polite reply from the host that addresses the specific issue."
Output
Results go to the run's default dataset. Use the Overview or Translations view, or export everything as JSON, CSV, Excel, XML or HTML.
This is a real row from listing 12937, scraped on October 11, 2026, with locale set to en-GB:
{"listingId": "12937","startUrl": "https://www.airbnb.com/rooms/12937","id": "1699494925880046134","rating": 5,"text": "Airbnb très propre et emplacement idéal. Communication facile avec l’hôte et accès pratique aux transports. Je recommande.","language": "fr","localizedText": "Very clean Airbnb and an ideal location. Easy communication with the host and convenient access to transport. I recommend it.","localizedReview": "Very clean Airbnb and an ideal location. Easy communication with the host and convenient access to transport. I recommend it.","createdAt": "2026-06-02T20:33:02Z","localizedDate": "June 2026","reviewerId": "397407858","reviewerName": "Alexia","reviewerPictureUrl": "https://a0.muscache.com/im/pictures/user/User/original/2bc72813-5d8f-4c8d-9862-bf9dcee42607.jpeg","localizedReviewerLocation": "5 years on Airbnb","reviewHighlight": "Stayed about a week","highlightType": "LENGTH_OF_STAY","response": "It was a pleasure hosting you two!!","respondedAt": "2026-06-04T21:53:10Z","revieweeId": "50124","revieweeName": "Orestes","revieweePictureUrl": "https://a0.muscache.com/im/pictures/user/ebac33aa-6e5a-4279-8a92-0968ddf66ae2.jpg","ratingAccessibilityLabel": "Rating, 5 stars","collectionTag": null}
Notes on fields
textis the review as written.localizedTextis Airbnb's translation into thelocalelanguage, and isnullwhen the review is already in that language.localizedReviewis the same aslocalizedText, kept for older integrations.localizedReviewerLocationis where the reviewer is from (for example "Kansas City, Missouri"), or how long they've been on Airbnb when they don't show a location.ratingis 1–5. Some old reviews (around 2013 and earlier) have no star rating, so it isnull.textcan contain<br/>line breaks.revieweeIdandrevieweeNameare the host the review is about.- Missing values are
null.
FAQ
How many reviews can I get?
Every review Airbnb shows for the listing. In our tests, listings with 500 and 502 reviews returned all of them.
How fast is it?
On the Apify platform, 1,750 reviews from 3 listings took 7 seconds. Each request returns 50 reviews; pages of one listing and up to 5 listings are fetched in parallel.
Can I get only new reviews?
Yes. Set Scrape reviews since. The Actor sorts by most recent and stops at the first review older than that date, so you only pay for new ones.
Why did my run stop early?
If the log says the run reached its maximum cost, the run hit its cost limit or your account's spending limit. Everything collected before that is saved.
Do I need proxies, an Airbnb account or an API key?
No. The Actor uses Apify's datacenter proxies by default and retries failed requests on a new IP. It doesn't log in.
Is it legal to scrape Airbnb reviews?
The Actor collects publicly visible reviews. Reviewer names and photos are personal data, so handle them according to laws such as GDPR. You are responsible for how you use the data, including Airbnb's terms.
Can I get the listing's details or price too?
Use Airbnb Scraper with the same URLs: it returns prices, rating categories, host data, amenities and registration numbers.
Cost
This Actor uses pay-per-event pricing. You pay for each review saved and a small start fee. There is no subscription.
| Event | Free plan | Bronze | Silver | Gold | Charged when |
|---|---|---|---|---|---|
| Review | $0.003 | $0.0025 | $0.0023 | $0.002 | A review is saved to the dataset. |
Each run also has a start fee of $0.0005 per GB of run memory.
| Run | Free plan | Gold |
|---|---|---|
| 100 reviews | $0.30 | $0.20 |
| 1,000 reviews | $3 | $2 |
| 10 listings, about 5 new reviews a week each, weekly for a month | $0.60 | $0.40 |
The Actor needs little memory (a 1,750-review run peaked at 63 MB), so running it with 512 MB keeps the start fee at $0.0005. Set a maximum cost per run in the run options; the Actor stops cleanly when it's reached. The Pricing tab always shows the current prices for your plan.
Related Actors
- Airbnb Scraper: every listing in a city, with prices, hosts and registration numbers.
- Booking Reviews Scraper: hotel reviews from Booking.com.
- Tripadvisor Reviews Scraper: reviews of hotels, restaurants and tours.
- Agoda Reviews Scraper: hotel reviews from Agoda.
Support
Report problems or request features in the Issues tab. Include the run ID, the input and what you expected. We read every issue.
This Actor is not affiliated with or endorsed by Airbnb, Inc. "Airbnb" is a trademark of Airbnb, Inc.