Airbnb Reviews Scraper avatar

Airbnb Reviews Scraper

Pricing

from $0.03 / 1,000 review saveds

Go to Apify Store
Airbnb Reviews Scraper

Airbnb Reviews Scraper

Extract public Airbnb reviews, reviewer details, ratings, dates, host responses, and listing context from room URLs for STR research.

Pricing

from $0.03 / 1,000 review saveds

Rating

0.0

(0)

Developer

Hanna Nosova

Hanna Nosova

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

8 days ago

Last modified

Share

Extract public guest reviews from Airbnb listing URLs. Add one or more room URLs and get structured review text, dates, reviewer metadata, listing ratings, review counts, languages, and host responses when Airbnb makes them public.

Ready-to-run examples

View all ready-to-run examples

What does Airbnb Reviews Scraper do?

Airbnb Reviews Scraper turns public Airbnb room pages into clean review datasets. It is built for teams that need recurring guest feedback, reputation monitoring, competitor research, or market intelligence without copying reviews by hand.

The actor accepts Airbnb room URLs such as https://www.airbnb.com/rooms/20669368 and saves one dataset item per review.

Who is it for?

  • 🏑 Property managers tracking guest sentiment across their own listings.
  • πŸ“Š Short-term rental analysts comparing competing stays in a destination.
  • ⭐ Reputation teams monitoring recent public guest feedback.
  • 🧭 Hospitality researchers building review datasets for market studies.
  • πŸ€– Automation teams feeding reviews into BI, CRM, or AI workflows.

Why use this actor?

  • Saves structured review rows instead of screenshots or copied text.
  • Includes listing context with every review for easy exports.
  • Supports multiple Airbnb URLs in one run.
  • Lets you cap reviews per listing to control run size and cost.
  • Filters saved reviews by date, rating, or a keyword without changing the original review data.
  • Saves a run summary and a resumable pending-listing checkpoint when time runs short.
  • Works through Apify datasets, API, webhooks, integrations, and MCP.

Output fields

JSON keyLabelTypeDescription
listingUrlListingUrlstringOutput field for listingurl.
listingIdListingIdstringOutput field for listingid.
listingTitleListingTitlestring / nullOutput field for listingtitle.
overallRatingOverallRatingnumber / nullOutput field for overallrating.
reviewCountReviewCountinteger / nullOutput field for reviewcount.
reviewIdReviewIdstringOutput field for reviewid.
reviewerNameReviewerNamestring / nullOutput field for reviewername.
reviewerProfileUrlReviewerProfileUrlstring / nullOutput field for reviewerprofileurl.
reviewerLocationReviewerLocationstring / nullOutput field for reviewerlocation.
reviewDateReviewDatestring / nullOutput field for reviewdate.
ratingRatingnumber / nullOutput field for rating.
languageLanguagestring / nullOutput field for language.
textTextstringOutput field for text.
translatedTextTranslatedTextstring / nullOutput field for translatedtext.
responseTextResponseTextstring / nullOutput field for responsetext.
responseDateResponseDatestring / nullOutput field for responsedate.
scrapedAtScrapedAtstringOutput field for scrapedat.

Pricing

This Actor uses Apify pay-per-event pricing. A one-time start event is charged when the run begins; a review event is charged only for each review row saved to the dataset. The exact discount tier depends on your Apify plan or agreement.

EventWhat is chargedPrice
startOne-time run start$0.005
item β€” FreeSaved review row$0.000031745 each ($0.031745 / 1,000)
item β€” Starter / BronzeSaved review row$0.000027604 each ($0.027604 / 1,000)
item β€” Scale / SilverSaved review row$0.000021531 each ($0.021531 / 1,000)
item β€” Business / GoldSaved review row$0.000016563 each ($0.016563 / 1,000)
item β€” PlatinumSaved review row$0.000011042 each ($0.011042 / 1,000)
item β€” DiamondSaved review row$0.0000077292 each ($0.0077292 / 1,000)

Apify may also charge platform usage for compute, storage, proxies, or data transfer outside this Actor pricing. Check the Actor run and the Apify Pricing tab for the exact cost shown to your account.

Quick start

  1. Open the actor on Apify.
  2. Paste one or more Airbnb room URLs into Airbnb listing URLs.
  3. Set Maximum reviews per listing.
  4. Run the actor.
  5. Download results from the dataset as JSON, CSV, Excel, XML, or HTML.

Input

{
"startUrls": [
{ "url": "https://www.airbnb.com/rooms/20669368" }
],
"maxReviewsPerListing": 10,
"sort": "default",
"proxyConfiguration": { "useApifyProxy": true }
}

Input settings

SettingJSON keyType / defaultDescription
Airbnb listing URLsstartUrlsarray, default [{"url":"https://www.airbnb.com/rooms/20669368"}]Public Airbnb room/listing URLs such as https://www.airbnb.com/rooms/20669368.
Maximum reviews per listingmaxReviewsPerListinginteger, default 25How many guest reviews to save for each Airbnb listing URL.
Review sort ordersortstring, default "default"Use Airbnb's default order or request recent reviews when available.
Only reviews on or afterdateFromoptional YYYY-MM-DDSave reviews on or after this inclusive date.
Only reviews on or beforedateTooptional YYYY-MM-DDSave reviews on or before this inclusive date.
Minimum / maximum review ratingminRating, maxRatingoptional integer, 1–5Save only review rows inside the inclusive star-rating range.
Review keywordkeywordoptional stringSave rows whose review, Airbnb translation, or host reply contains the phrase.
Resume pending listing URLsresumeListingUrlsoptional arrayContinue a time-limited run using URLs from PENDING_LISTINGS.
Run safety limitrunSafetySecondsinteger, default 270Optional early-stop limit for large batches. Completed rows are saved and remaining URLs are recorded before the Actor shuts down.
Proxy configurationproxyConfigurationobject, default {"useApifyProxy":true}Optional Apify Proxy settings. Datacenter proxy is usually enough for small public-review runs; use residential only if Airbnb blocks your traffic.

Example input

{
"startUrls": [
{
"url": "https://www.airbnb.com/rooms/20669368"
}
],
"maxReviewsPerListing": 10,
"sort": "default",
"proxyConfiguration": {
"useApifyProxy": true
}
}

Output example

{
"listingUrl": "https://www.airbnb.com/rooms/20669368",
"listingId": "20669368",
"listingTitle": "Little Country Houses - Finley's Fort + hot tub",
"overallRating": 4.9,
"reviewCount": 308,
"reviewId": "1701461540622642748",
"reviewerName": "Gabriella",
"reviewerProfileUrl": "https://www.airbnb.com/users/show/755284424",
"reviewerLocation": null,
"reviewDate": "2026-06-05T13:40:21Z",
"rating": null,
"language": "en",
"text": "Our stay here was Superb...",
"translatedText": null,
"responseText": null,
"responseDate": null,
"scrapedAt": "2026-06-26T00:00:00.000Z"
}

Tips for best results

  • Use direct /rooms/ URLs.
  • Start with 5-10 reviews per listing for testing.
  • Remove duplicate URLs before large runs.
  • Split very large URL lists into smaller batches.
  • Review the dataset sample before connecting automation.

Common workflows

Reputation monitoring

Run the actor weekly on your managed listings and send new rows to your dashboard or spreadsheet.

Market research

Collect reviews from competing listings in the same destination and compare guest language, sentiment, and frequency.

Guest experience analysis

Export text to your NLP or LLM pipeline to classify recurring topics such as cleanliness, check-in, location, host communication, and amenities.

Integrations

Apify datasets connect to:

  • Google Sheets
  • Make
  • Zapier
  • Webhooks
  • BigQuery exports
  • S3-compatible storage
  • Custom API clients

API usage

Run Airbnb Reviews Scraper from your own code with the Apify API.

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const input = {
"startUrls": [
{
"url": "https://www.airbnb.com/rooms/20669368"
}
],
"maxReviewsPerListing": 10,
"sort": "default",
"proxyConfiguration": {
"useApifyProxy": true
}
};
const run = await client.actor('fetch_cat/airbnb-reviews-scraper').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
import os
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("fetch_cat/airbnb-reviews-scraper").call(run_input={
"startUrls": [
{
"url": "https://www.airbnb.com/rooms/20669368"
}
],
"maxReviewsPerListing": 10,
"sort": "default",
"proxyConfiguration": {
"useApifyProxy": true
}
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

cURL

curl -X POST "https://api.apify.com/v2/acts/fetch_cat~airbnb-reviews-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"startUrls":[{"url":"https://www.airbnb.com/rooms/20669368"}],"maxReviewsPerListing":10,"sort":"default","proxyConfiguration":{"useApifyProxy":true}}'

Use with AI agents via MCP

Airbnb Reviews Scraper can be used by AI assistants through the hosted Apify MCP server.

Claude Code setup

$claude mcp add --transport http apify "https://mcp.apify.com?tools=fetch_cat/airbnb-reviews-scraper"

Claude Desktop, Cursor, or VS Code JSON config

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=fetch_cat/airbnb-reviews-scraper"
}
}
}

Example prompts

  • "Run Airbnb Reviews Scraper with this input JSON and summarize the dataset."
  • "Export the latest Airbnb Reviews Scraper results to a table I can review."
  • "Schedule this Actor for monitoring and tell me what changed between runs."

Data quality notes

Airbnb may not expose every field for every review. For example, per-review star ratings, reviewer location, translated text, or host response can be missing. Missing fields are returned as null rather than invented.

Limitations

  • Supports public Airbnb room/listing pages only.
  • Does not access private account data.
  • Does not bypass login-only, CAPTCHA, or blocked pages.
  • Availability, prices, and booking calendars are outside this actor's scope.

Legality

Use Airbnb Reviews Scraper responsibly and only for data you are allowed to process.

This actor is intended for public web data. Review Airbnb's terms, privacy requirements, and applicable laws before using scraped data. Do not use the output for spam, harassment, or discriminatory decisions.

FAQ

Can it scrape private reviews?

No. It only extracts publicly visible review data from public Airbnb listing pages.

Why are some fields null?

Airbnb does not expose every review attribute on every listing. The actor keeps the row and leaves unavailable values as null.

Can I scrape many listings at once?

Yes. Add multiple room URLs and set a reasonable per-listing review cap. For large batches, use smaller chunks.

What if a listing was removed?

Removed, private, or blocked listings may return an HTTP error. Check the run log for the affected URL.

Does it support API and MCP automation?

Yes. You can call the actor through the Apify API, schedule it, connect webhooks, or run it via Apify MCP.

Support

Report bugs, wrong output, blocked runs, or missing fields from the Actor page. Include the Apify run ID or run URL, your input JSON, what you expected, what the Actor returned, and one reproducible public URL so the issue can be tested quickly.

Privacy and data handling

This Actor only requests the permissions needed to run the input you provide. It uses your input (such as URLs, search terms, identifiers, filters, and limits) only to fetch the requested public data from the relevant source site or API for this Actor, then writes results to your Apify dataset/key-value store.

Data may pass through Apify platform services and Apify Proxy during the run, and requests are sent only to the target site or public data provider required for this Actor's results. FetchCat does not send your inputs or outputs to advertising networks, data brokers, or model-training services, and does not retain run data outside Apify storage after the run except when you explicitly share run details for transient support debugging.

You are responsible for using this Actor lawfully, respecting the target site's terms, and avoiding unnecessary personal or sensitive data in inputs. Review the output before storing, sharing, or combining it with other data.