Airbnb Reviews Scraper avatar

Airbnb Reviews Scraper

Pricing

from $1.90 / 1,000 results

Go to Apify Store
Airbnb Reviews Scraper

Airbnb Reviews Scraper

Fast multi-listing Airbnb reviews scraper. Scrape every review from any listing URL with full pagination, filtering, and sort control.

Pricing

from $1.90 / 1,000 results

Rating

0.0

(0)

Developer

Crikit

Crikit

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Scrape every guest review from any Airbnb listing in seconds. Multi-listing input, full pagination, cheap.

This Airbnb Reviews Scraper is built around the gap most existing actors leave open: the popular ones charge several dollars per thousand reviews, and the cheap ones only handle a single listing URL at a time. This actor handles both: multiple Airbnb listing URLs in a single run, full pagination through every review, and a price per review that is meaningfully cheaper than the leading alternatives.

Why this actor

Most short-term rental teams, market researchers, and review-analytics tools end up paying far more for Airbnb review data than they need to. The market roughly splits in two: a flagship Airbnb Reviews Scraper that handles bulk URLs but charges around $5 per 1,000 reviews, and a long tail of cheaper single-URL scrapers that force you to run them one listing at a time. Neither is a great fit if you want to scrape reviews across, say, 200 properties in one job and not lose a quarter to per-review fees.

This scraper is designed for that real-world job. It accepts an arbitrary list of Airbnb listing URLs, paginates through every review on each one, and emits a flat row per review so that the dataset drops straight into a spreadsheet, BigQuery, or a dashboard.

What it does

  • Accepts one or more Airbnb listing URLs (e.g. https://www.airbnb.com/rooms/12937)
  • Paginates through every review for each listing (50 reviews per request, full coverage)
  • Lets you sort by Most recent, Best quality, Highest rated, or Lowest rated
  • Lets you cap the total number of reviews returned across all listings via maxResults
  • Lets you filter reviews by dateFrom and dateTo (most efficient with MOST_RECENT sort, where pagination short-circuits once older reviews are encountered)
  • Returns every field you would expect: review text, rating, language, created-at timestamp, host response, reviewer profile, host profile, photos, review highlight tags

Output schema

Every dataset item is a single review:

FieldTypeNotes
startUrlstringOriginal input URL the review was found under
roomIdstringNumeric Airbnb room id parsed from the URL
idstringAirbnb review id
languagestringISO language code
textstringReview text in the original language
localizedTextstringReview text in the locale you requested
localizedReviewobject or null{ text, disclaimer } when Airbnb auto-translates
localizedDatestringHuman-readable date e.g. 2 weeks ago
localizedReviewerLocationstringe.g. Tomah, Wisconsin
createdAtstringISO 8601 timestamp
reviewerobject{ id, firstName, hostName, pictureUrl, profilePath, profilePicture }
revieweeobjectHost details, same shape as reviewer
reviewHighlightstring or nulle.g. Stayed a few nights
highlightTypestring or nulle.g. LENGTH_OF_STAY
ratingnumber1 through 5. Pre-2014 reviews predate Airbnb's rating system and return null here
responsestring or nullHost response text
ratingAccessibilityLabelstringe.g. Rating, 5 stars
photoUrlsarrayURLs of any photos attached to the review

The schema is a superset of the most popular Airbnb Reviews Scraper actor, so existing pipelines that consume that actor's output should drop in without changes.

Input

{
"startUrls": [
{ "url": "https://www.airbnb.com/rooms/12937" },
{ "url": "https://www.airbnb.com/rooms/40569814" }
],
"locale": "en-US",
"currency": "USD",
"sortingPreference": "MOST_RECENT",
"maxResults": 500,
"dateFrom": "2024-01-01"
}
Input fieldDefaultPurpose
startUrlsrequiredArray of { url } objects pointing at Airbnb listings. Numeric IDs and URLs with query params both parse correctly.
localeen-USBCP-47 locale that Airbnb uses to translate localized text and date strings.
currencyUSDCurrency code, mostly cosmetic for reviews.
sortingPreferenceMOST_RECENTOne of MOST_RECENT, BEST_QUALITY, RATING_DESC, RATING_ASC.
maxResultsunlimitedHard cap across all listings combined.
dateFrom / dateTononeISO 8601 date filters applied client-side.
proxyConfigurationApify ProxyThe reviews come from a public-key-protected JSON API, so any Apify proxy group works fine. Datacenter is the cheapest if your plan includes it.

How it works

The actor talks directly to Airbnb's internal GraphQL endpoint that powers the reviews modal in the listing page. That endpoint returns reviews 50 at a time as structured JSON. Because the data is already JSON on the wire, the actor does not run a headless browser, does not parse HTML, and does not need residential proxies. It runs on HttpCrawler with 256 MB of memory, which keeps the per-run compute cost negligible and makes the per-review price possible.

Practically, scraping a listing with 478 reviews takes ten paginated requests and finishes in a few seconds end to end. Scraping a portfolio of 50 listings runs in parallel and is dominated by network round trips, not CPU.

Pricing

This actor uses a pay-per-event pricing model with two events: a tiny actor-start fee and a per-review fee. The per-review fee is the dominant cost for any non-trivial run. The pricing is deliberately set below the dominant competitor while still leaving healthy margin, because the underlying compute cost is low.

Volume tiers (BRONZE, SILVER, GOLD, PLATINUM, DIAMOND) reduce the per-review fee further as monthly usage grows. Final per-tier numbers are configured in the Apify Console.

Use cases

  • Sentiment analysis and topic mining across a portfolio of properties
  • Competitor reputation tracking
  • Listing optimization, where reviews surface guest pain points by category
  • Market research on review velocity and rating trends in a city or neighborhood
  • Powering analytics dashboards that need fresh review data refreshed daily

Limitations

  • The actor scrapes published guest reviews. It does not access private host-only data.
  • A handful of pre-2014 reviews predate Airbnb's rating system and return with rating: null while still containing review text, language, and reviewer details. This is true negative coverage, not a parsing miss.
  • Airbnb does not expose a server-side date filter for reviews. dateFrom and dateTo are applied client-side. With MOST_RECENT sort the actor short-circuits pagination once older reviews appear, so date-bounded queries remain fast.
  • Listings that have been delisted or never existed return NOT_FOUND from Airbnb and are skipped with a log warning. Other listings in the same run continue normally.

Tips

  • Combine MOST_RECENT sort with dateFrom for incremental scraping (only fetch reviews newer than your last run).
  • For city-wide analysis, pair this actor with an Airbnb listing-discovery actor: collect URLs first, then feed them to this scraper in batches.
  • The localizedText field already contains Airbnb's translation of foreign-language reviews into your requested locale, so you usually don't need a separate translation step.

Output formats

Datasets are downloadable as JSON, CSV, or XLSX from the Apify Console, or via the Apify API.