Airbnb Reviews Scraper avatar

Airbnb Reviews Scraper

Pricing

from $3.00 / 1,000 record scrapeds

Go to Apify Store
Airbnb Reviews Scraper

Airbnb Reviews Scraper

Extract comprehensive guest reviews from Airbnb.com including detailed ratings, comments, traveler profiles, and host responses. Perfect for reputation analysis, hospitality market research, and competitive intelligence in the short-term rental industry.

Pricing

from $3.00 / 1,000 record scrapeds

Rating

0.0

(0)

Developer

Reviewly

Reviewly

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

8 hours ago

Last modified

Share

Airbnb Reviews Scraper — Extract Guest Reviews at Scale

Get structured Airbnb review data from any property listing in minutes — no coding required.

Whether you manage short-term rentals, research hospitality markets, or track competitor performance, this Actor delivers clean, ready-to-use review data directly into your dataset.

  • Extract hundreds or thousands of reviews with a single run
  • Filter by date to get only what's new since your last extraction
  • Full guest profiles, star ratings, host responses, and category scores
  • Runs on residential proxies — reliable even at scale

What This Actor Does

Airbnb Reviews Scraper extracts guest reviews from any Airbnb property listing using Airbnb's internal API. Paste in one or more listing URLs, configure your options, and get back a clean JSON dataset with everything you need for analysis, monitoring, or automation.

Who is it for?

  • Property managers tracking guest satisfaction across their portfolio
  • Short-term rental agencies benchmarking against competitors
  • Market researchers studying hospitality trends at scale
  • Data scientists building sentiment models from real guest feedback
  • Hosts monitoring their reputation and improving performance

Key Features

  • Bulk extraction — scrape multiple properties in a single run
  • Date filtering — stop at a specific date to collect only recent reviews
  • Review limit — cap the number of reviews per property to control cost
  • Auto-recovery — automatically refreshes internal API tokens when they expire, so runs don't fail mid-scrape
  • Full data — review text, star rating, reviewer profile, host response, language, photos, and more
  • Residential proxies — built-in, no setup needed
  • Multiple export formats — JSON, CSV, Excel, XML

Why This Actor is Different

Most Airbnb scrapers break frequently because they rely on a hardcoded API query hash that Airbnb rotates regularly. This Actor detects when the hash becomes stale and refreshes it automatically mid-run, without failing or requiring manual intervention.

It also uses Airbnb's internal GraphQL API directly — not HTML parsing — which means:

  • Faster extraction (structured data, no DOM traversal)
  • More reliable output (no layout-change breakage)
  • Richer data (fields that never appear in the HTML)

Input Configuration

FieldTypeRequiredDefaultDescription
startUrlsarrayYesList of Airbnb listing URLs to scrape
maxNumberOfReviewsnumberNo0 (all)Max reviews to collect per property. 0 means no limit
targetDatestringNoStop collecting reviews older than this date (ISO 8601: 2025-01-01)
proxyConfigurationobjectNoUS residentialProxy country override

Example input:

{
"startUrls": [
{ "url": "https://www.airbnb.com/rooms/12345678" },
{ "url": "https://www.airbnb.fr/rooms/87654321" }
],
"maxNumberOfReviews": 200,
"targetDate": "2025-01-01"
}

Tips:

  • Both .com and .fr URLs work — mix freely
  • Use targetDate when scheduling regular runs to avoid re-collecting old reviews
  • Start with maxNumberOfReviews: 50 to test before a full extraction
  • Remove query parameters from URLs (everything after ?) for cleaner runs — the Actor handles this automatically

Output Format

Each dataset item corresponds to one property and contains two top-level keys: entity (property metadata) and reviews (the list of extracted reviews).

Sample output:

{
"entity": {
"score": 4.92,
"businessName": "Mountain View Studio Residence",
"totalNumberOfReviews": 48,
"ratings": [
{ "count": 30, "name": "Hospitality", "icon": "https://..." },
{ "count": 24, "name": "Location", "icon": "https://..." }
],
"businessUrl": "https://www.airbnb.com/rooms/12345678"
},
"reviews": [
{
"reviewId": "1621075446914143951",
"title": "Great stay",
"text": "Everything was perfect, highly recommend!",
"rating": 5,
"createdAt": "2026-02-14T15:47:32+00:00",
"reviewer": {
"name": "Sarah",
"id": "43860269",
"pictureUrl": "https://...",
"isSuperhost": false
},
"response": "Thank you for your stay!",
"reviewee": {
"name": "John",
"id": "106171829",
"pictureUrl": "https://...",
"isSuperhost": false
},
"language": "en"
}
]
}

Field reference:

FieldDescription
entity.scoreOverall property rating
entity.businessNameListing title
entity.totalNumberOfReviewsTotal published review count
entity.ratingsCategory-level scores (Hospitality, Location, etc.)
entity.businessUrlOriginal listing URL
reviews[].reviewIdUnique Airbnb review identifier
reviews[].titleReview headline
reviews[].textFull review body
reviews[].ratingStar rating (1–5)
reviews[].createdAtPublication date (ISO 8601)
reviews[].reviewerGuest name, ID, photo, superhost status
reviews[].responseHost reply text (or null)
reviews[].revieweeHost name, ID, photo
reviews[].languageReview language code (en, fr, es, etc.)

How to Use

  1. Open the Actor in Apify Console
  2. Paste one or more Airbnb listing URLs into Start URLs
  3. Optionally set Max Number of Reviews and/or a Target Date
  4. Click Start and wait for the run to finish
  5. Download your data as JSON, CSV, or Excel from the Dataset tab

To use the API:

curl -X POST https://api.apify.com/v2/acts/YOUR_ACTOR_ID/runs \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"startUrls": [{ "url": "https://www.airbnb.com/rooms/12345678" }],
"maxNumberOfReviews": 100,
"targetDate": "2025-01-01"
}'

JavaScript (Node.js):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('YOUR_ACTOR_ID').call({
startUrls: [{ url: 'https://www.airbnb.com/rooms/12345678' }],
maxNumberOfReviews: 200,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Python:

from apify_client import ApifyClient
client = ApifyClient('YOUR_API_TOKEN')
run = client.actor('YOUR_ACTOR_ID').call(run_input={
'startUrls': [{'url': 'https://www.airbnb.com/rooms/12345678'}],
'maxNumberOfReviews': 200,
})
items = client.dataset(run['defaultDatasetId']).list_items().items

Use Cases

1. Reputation Monitoring

Schedule weekly runs on your own listings to track new reviews over time. Use targetDate to collect only what's been posted since the last run. Feed results into a dashboard or alerting system to catch negative feedback fast.

2. Competitive Intelligence

Scrape competitor listings in your market to understand what guests praise or criticize. Identify gaps in your own offering — amenities, communication, cleanliness — and act on real feedback rather than guesswork.

3. Market Research

Collect thousands of reviews across a city or property type to analyze satisfaction trends, pricing sentiment, or seasonal patterns. Export to Excel or Tableau for analysis.

4. Sentiment Analysis & NLP

Build a training dataset for sentiment classifiers or topic models using the text and rating fields. The language field lets you filter by locale for multilingual models.

5. Real Estate Investment

Before acquiring a short-term rental property, scrape its full review history to assess guest satisfaction trends, host responsiveness, and recurring complaints.


Advanced Tips

Scheduling regular extractions: Use Apify's built-in scheduler to run this Actor weekly or daily. Set targetDate to the date of your last run so you only collect new reviews — keeping costs low and datasets clean.

Scraping large properties: For properties with 500+ reviews, the Actor paginates automatically. No configuration needed — just let it run.

Integrating with other tools: Use Apify webhooks to trigger a downstream action (Slack alert, Google Sheets update, email report) as soon as a run completes.

Proxy country: By default the Actor uses US residential proxies. If you're scraping .fr listings and getting unexpected results, set proxyConfiguration.apifyProxyCountry to FR.


Pricing

This Actor uses pay-per-event pricing — you only pay for successfully extracted reviews.

PlanPrice per 1,000 reviews
Free / Standard$3.00
Silver$2.50
Gold$2.00

Examples:

ScenarioReviewsCost (Standard)
1 property, 100 reviews100$0.30
10 properties, 50 reviews each500$1.50
1 property, 1,000 reviews1,000$3.00
100 properties, 100 reviews each10,000$30.00

With Apify's free tier ($5/month credit), you can extract up to 1,666 reviews completely free every month.


FAQ & Troubleshooting

No reviews were extracted

  • Verify the URL is a valid Airbnb listing (format: airbnb.com/rooms/XXXXXXXX)
  • Make sure the property has published reviews
  • Check that targetDate isn't set too recently

Fewer reviews than expected

  • Increase or remove maxNumberOfReviews
  • Adjust or remove targetDate
  • Some properties have fewer accessible reviews than the displayed count

Missing fields in some reviews

  • response is null when the host hasn't replied
  • Not all reviewers fill every field — this reflects the real data on Airbnb

The run failed mid-way

  • Retry the run — the Actor auto-refreshes its internal API token and recovers from transient errors
  • If it keeps failing, open an issue on the Issues tab

Can I scrape reviews in bulk across many properties? Yes — add as many URLs as you need to startUrls. The Actor processes them sequentially.

Is this legal? Web scraping publicly available data is generally permitted for research and analysis. Always ensure your use case complies with Airbnb's terms of service and applicable laws in your jurisdiction.


Support


Built for short-term rental professionals, researchers, and developers who need reliable Airbnb review data at scale.