Airbnb Reviews Scraper avatar

Airbnb Reviews Scraper

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Airbnb Reviews Scraper

Airbnb Reviews Scraper

Pull every guest review for one or more Airbnb listings - full text, star rating, author first name & avatar, trip date, host response. Built for reputation analytics, sentiment scoring, and AI/RAG corpora.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

Xtractoo

Xtractoo

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

5 days ago

Last modified

Share

Pull every guest review for an Airbnb listing — full review text, star rating, author first name and avatar, trip date, host response — into clean structured JSON.

Whether you are a vacation-rental host benchmarking competitor properties, a sentiment-analysis team building a reputation dashboard, a content site publishing "what guests are saying," or an AI team assembling a hospitality RAG corpus, this actor gives you the reviews you need without managing scrapers, browsers, or CAPTCHAs.


What you can do with it

  • Reputation analytics — monitor your listing's review velocity, rating distribution, and sentiment trends over time.
  • Competitive benchmarking — see exactly what guests praise and complain about at neighbouring properties.
  • Host-response audits — measure how often (and how quickly) hosts respond, and what they say.
  • AI / RAG corpora — feed thousands of real travel reviews into a hospitality chatbot, recommendation model, or sentiment classifier.
  • Travel content sites — surface "top quotes" pulled from real guests on your own pages.
  • Fraud signals — flag listings with suspicious review patterns (velocity spikes, duplicate text, geographic clustering).

Why use this actor

  • No Airbnb account required — runs on public data anonymous visitors can read.
  • No CAPTCHAs, no browsers — point it at one or more listings and it returns the reviews.
  • Up to thousands of reviews per listing — pagination is automatic.
  • Original language preserved — both the original review text and Airbnb's localized translation when present.
  • Stable JSON schema — fixed fields ready to feed straight into your warehouse, spreadsheet, or notebook.

How it works

  1. You give the actor a list of Airbnb listing URLs (or numeric room IDs) and how many reviews to pull per listing.
  2. For each listing the actor walks the public reviews endpoint Airbnb's own site uses, page by page, in your chosen sort order.
  3. Each review is normalized to one row in the dataset, ready for download as JSON, CSV, Excel, or XML.

Pagination, retries, and proxy rotation are handled automatically — you only need to provide listings and a max-review cap.


Input

{
"listing_urls": [
"https://www.airbnb.com/rooms/983207483398233150"
],
"max_reviews_per_listing": 100,
"sort": "MOST_RECENT",
"locale": "en",
"proxy": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}
FieldTypeRequiredDescription
listing_urlsstring[]one of urls/idsFull Airbnb listing URLs (e.g. https://www.airbnb.com/rooms/12345678)
listing_idsstring[]one of urls/idsNumeric Airbnb room IDs
max_reviews_per_listingintegernoHard cap per listing (default 100, max 5000)
sortstringnoMOST_RECENT (default), BEST_QUALITY, RATING_DESC, RATING_ASC
localestringnoTwo-letter language tag (default en) — Airbnb may auto-translate; the original language is preserved
max_concurrencyintegernoParallel listings (1–4, default 1)
proxyobjectnoApify proxy configuration; residential recommended

Sample output

One record per review. Real shape of a single record:

{
"id": "9876543210",
"listing_id": "983207483398233150",
"url": "https://www.airbnb.com/rooms/983207483398233150",
"rating": 5,
"language": "en",
"comments": "Loved every minute of our stay. The hot tub at sunset is unforgettable. Anna was an excellent host — quick to respond, full of local recommendations.",
"localized_review": null,
"localized_response": null,
"created_at": "2025-09-18T03:14:12Z",
"localized_date": "September 2025",
"localized_short_date": "Sep 2025",
"trip_duration": "Stayed about a week",
"highlighted_review_sentence": [
"Anna was an excellent host"
],
"reviewer_id": "147015926",
"reviewer_name": "Marta",
"reviewer_location": "Madrid, Spain",
"reviewer_picture_url": "https://a0.muscache.com/im/pictures/user/Hosting-User-147015926/original/abcdef12-3456-7890.jpeg",
"response": "Thank you Marta! We are so glad you enjoyed the sunsets — see you again soon.",
"response_date": "2025-09-19T10:02:44Z"
}

Output schema

FieldTypeDescription
idstringAirbnb review ID
listing_idstringNumeric room ID this review is for
urlstringCanonical listing URL
ratingintegerGuest star rating, 1–5
languagestringISO language code of the original review (en, de, id, ...)
commentsstringFull review text in the original language
localized_reviewstringAirbnb-localized version when the original was in another language
created_atstringISO 8601 timestamp
localized_datestringHuman-friendly "September 2025"
localized_short_datestringCompact "Sep 2025"
trip_durationstring"Stayed a few nights" / "Stayed about a week"
highlighted_review_sentencestring[]Sentences Airbnb highlights in the UI
reviewer_idstringAirbnb's numeric user ID
reviewer_namestringGuest first name (Airbnb does not expose last names)
reviewer_locationstringGuest's hometown
reviewer_picture_urlstringAvatar URL
responsestringHost's reply text
response_datestringISO 8601 timestamp of the host's reply

Tips

  • Use MOST_RECENT for fresh signal; switch to RATING_ASC to surface complaints first.
  • Combine with the airbnb-scraper actor: scrape listings first, then feed the resulting id values into this actor for full reviews.
  • For high-volume runs (many listings × thousands of reviews) split across multiple actor runs to keep each within memory limits and to spread proxy load.