Airbnb Reviews Scraper: All Reviews, Replies & Translations avatar

Airbnb Reviews Scraper: All Reviews, Replies & Translations

Pricing

from $2.00 / 1,000 reviews

Go to Apify Store
Airbnb Reviews Scraper: All Reviews, Replies & Translations

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

Epic Scrapers

Maintained by Community

Actor stats

1

Bookmarked

3

Total users

1

Monthly active users

10 days ago

Last modified

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. text is the review as written; localizedText is 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?

GoalHow
Monitor your listings' reviewsSchedule a daily run with sinceDate set to yesterday and send new reviews to Slack or a spreadsheet.
Find recurring complaintsSort by lowest-rated, then group the text of reviews rated 3 or less by topic.
Benchmark competitorsScrape your competitors' listings and compare average rating, review volume per month and reply rate.
Measure how hosts replyShare of reviews with a response, and the time between createdAt and respondedAt.
Run sentiment analysis at scaleFeed localizedText (or text when it's empty) to your model or an AI assistant, so every review is in one language.
Understand guestslocalizedReviewerLocation shows where guests come from, reviewHighlight how long they stayed.

How it compares

What you needAirbnb Reviews ScraperManual copy-pasteReputation-management subscriptions
Reviews per listingAll of them, or your limitA page at a timeDepends on the plan
New reviews onlyYes, with Scrape reviews sinceBy handUsually yes
TranslationsAirbnb's own, in your languageNoVaries
Raw data for your own toolsEvery field as JSON, CSV, Excel or APINoMostly dashboards
PricePay per reviewYour timeMonthly subscription

Quick start

  1. Click Try for free and sign in to Apify.
  2. Paste one or more listing links in Listing URLs, for example https://www.airbnb.com/rooms/12937. Links from any Airbnb domain work.
  3. For a first run, set Max reviews per listing to 20.
  4. 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:

GroupFields
Reviewid, rating, text, language, localizedText, createdAt, localizedDate, reviewHighlight, highlightType
ReviewerreviewerId, reviewerName, reviewerPictureUrl, localizedReviewerLocation
Hostresponse, respondedAt, revieweeId, revieweeName, revieweePictureUrl
ListinglistingId, 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 caseFrequencyCron expression
Alerts for your own listingsDaily0 6 * * *
Competitor benchmarkingWeekly (Monday)0 6 * * 1
Market-wide research (many listings)Monthly0 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 rating per listingId and month of createdAt.
  • Reply rate and speed: share of reviews with response, and respondedAt minus createdAt.

Input reference

FieldTypeDefaultEffect
startUrlsArray of URLsRequiredAirbnb room URLs (/rooms/<id>) from any Airbnb domain. Duplicates are scraped once.
maxReviewsPerListingIntegerEmpty (all)Maximum reviews saved per listing.
sortByString"most-recent""most-recent", "most-relevant", "highest-rated" or "lowest-rated".
sinceDateDateEmptyYYYY-MM-DD. Only reviews posted on or after this date. Sorts by most recent and stops at the first older review.
localeString"en-US"Language of localizedText and localizedDate.
proxyConfigurationObjectApify datacenter proxyFailed 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, timedelta
from apify_client import ApifyClient
client = 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

  • text is the review as written. localizedText is Airbnb's translation into the locale language, and is null when the review is already in that language. localizedReview is the same as localizedText, kept for older integrations.
  • localizedReviewerLocation is 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.
  • rating is 1–5. Some old reviews (around 2013 and earlier) have no star rating, so it is null.
  • text can contain <br/> line breaks.
  • revieweeId and revieweeName are 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.

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.

EventFree planBronzeSilverGoldCharged when
Review$0.003$0.0025$0.0023$0.002A review is saved to the dataset.

Each run also has a start fee of $0.0005 per GB of run memory.

RunFree planGold
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.

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.