Airbnb Reviews Scraper — Ratings, Comments & Host Replies avatar

Airbnb Reviews Scraper — Ratings, Comments & Host Replies

Pricing

from $4.00 / 1,000 review scrapeds

Go to Apify Store
Airbnb Reviews Scraper — Ratings, Comments & Host Replies

Airbnb Reviews Scraper — Ratings, Comments & Host Replies

Scrape all reviews for any Airbnb listing — rating, comment, date, reviewer, host response, photos, and topic tags. HTTP-only, MCP-ready.

Pricing

from $4.00 / 1,000 review scrapeds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

2 days ago

Last modified

Share

Airbnb Reviews Scraper

Airbnb Reviews Scraper is an Apify Actor for reviewers, analysts, operators, and AI agents that need public review data from an individual Airbnb stay listing. It accepts either Airbnb listing URLs or numeric listing IDs, and each output record represents one review. The returned fields include rating, comment text, dates, reviewer details, host response, review photos, highlight tags, and the listing metadata needed to keep the review attached to the right stay. It is HTTP-only, works through Apify MCP, and returns structured dataset items that are ready for downstream processing.

Best fit and connected workflows

This Actor fits workflows that start from a known Airbnb stay listing and need the review history in a structured form. It routes naturally into:

  • sentiment analysis and topic labeling from comments and highlightType
  • hospitality research using rating, createdAt, and listingReviewsCount
  • property management review monitoring with hostResponse and hostResponseDate
  • LLM agent workflows that need one listing in and review records out through Apify MCP
  • data pipelines that join review data with other listing-level datasets

Use For listing prices, amenities, and host metadata, the current README points to the companion Airbnb Scraper, while this Actor stays focused on reviews when the next workflow needs that Actor's focused input and output contract.

Practical scenario

A market analyst has a single Airbnb room URL from a competitor listing and wants to review recent guest sentiment before preparing a report. They run the Actor with that listing URL, ask for the most recenta bounded number of reviews, and receive fields such as rating, comments, createdAt, reviewerName, reviewerLocation, and hostResponse. The analyst uses the ratings and recurring phrases in the comments to decide which guest themes to track next, then shares the dataset link with a teammate for deeper analysis.

Input

Use either listingUrls or listingIds. Provide at least one.

FieldTypeDescription
listingUrlsarrayAirbnb stay listing URLs. Full URLs with or without query parameters are accepted, and the room ID is extracted automatically. Use this for individual stay listings.
listingIdsarrayNumeric Airbnb room IDs. Each ID is the number after /rooms/ in a listing URL.
maxReviewsPerListingintegerMaximum reviews to scrape per listing. Set to 0 to scrape all available reviews. Default 100.
sortBystringReview order. MOST_RECENT, RATING_DESC, or RATING_ASC.
languagestringISO locale for localized dates and Airbnb auto-translations. Original text stays in comments. Default en.
includeHostResponsebooleanIncludes the host's public reply in hostResponse when available. Default true.
proxyConfigurationobjectProxy settings used to reach Airbnb. Default uses Apify datacenter proxies in the US.

Focused JSON example

{
"listingUrls": ["https://www.airbnb.com/rooms/20669368"],
"maxReviewsPerListing": 50,
"sortBy": "MOST_RECENT",
"language": "en",
"includeHostResponse": true
}

Output

Each dataset item is one review.

FieldTypeDescription
listingIdstringNumeric Airbnb room ID.
listingUrlstringAirbnb listing URL.
listingTitlestring or nullListing title when available.
listingReviewsCountinteger or nullTotal public review count shown for the listing.
reviewIdstringUnique review ID.
ratinginteger or nullReview rating.
commentsstring or nullOriginal review text.
localizedReviewstring or nullAuto-translated review text when available.
languagestring or nullReview language code.
createdAtstring or nullReview date in ISO format.
localizedDatestring or nullLocalized relative date.
reviewerIdstring or nullReviewer user ID.
reviewerNamestring or nullReviewer name.
reviewerLocationstring or nullReviewer location when shown by Airbnb.
reviewerTenurestring or nullReviewer account tenure when shown instead of location.
reviewerIsSuperhostboolean or nullWhether the reviewer is a Superhost.
reviewerPictureUrlstring or nullReviewer profile photo URL.
reviewerProfileUrlstring or nullReviewer profile URL.
hostResponsestring or nullHost's public reply.
hostResponseDatestring or nullDate of the host reply.
reviewPhotoUrlsarrayReview photo URLs.
highlightTypestring or nullAirbnb highlight tag.
channelstring or nullBooking channel.
scrapedAtstringScrape timestamp in ISO format.

Illustrative dataset record

{
"listingId": "20669368",
"listingUrl": "https://www.airbnb.com/rooms/20669368",
"listingTitle": "Cosy Cotswold Cabin",
"listingReviewsCount": 308,
"reviewId": "1701461540622642748",
"rating": 5,
"comments": "Our stay here was superb. The cabin was lovely, very clean and stylish.",
"localizedReview": null,
"language": "en",
"createdAt": "2026-06-05T13:40:21Z",
"localizedDate": "1 week ago",
"reviewerName": "Gabriella",
"reviewerLocation": "London, United Kingdom",
"reviewerIsSuperhost": false,
"hostResponse": null,
"hostResponseDate": null,
"reviewPhotoUrls": [],
"highlightType": null,
"channel": null,
"scrapedAt": "2026-06-18T09:00:00Z"
}

How it works

The Actor uses Airbnb's public review API for individual stay listings and fetches review data in a paginated workflow. The live contract states that it is HTTP-only and self-healing at the operation-hash level. Output rows are written to the default dataset, and the overview table surfaces the key review fields: rating, reviewer, location, review text, date, host reply, and listing link.

Pricing

Airbnb Reviews Scraper uses Pay per event pricing plus standard Apify platform usage. Pricing is based on the charged events in the live contract:

  • one Actor start event per run
  • one Review scraped event for each review written to the dataset

For example, if a listing returns one hundred reviews, the billed event count includes one start event and one hundred review events. If you want a smaller billed result set, use maxReviewsPerListing to set the review cap. For current totals and platform usage details, check the live Pricing tab on the Actor page.

Use with AI agents (MCP)

This Actor is available as an Apify Actor through Apify MCP. In agent workflows, the tool receives a listing URL or listing ID and returns structured review rows from the dataset.

Actor identity: khadinakbar/airbnb-reviews-scraper

Pull reviews for this Airbnb listing, keep the original text, include host replies, and return the dataset items for analysis.

The output is suitable interpreted one row at a time, where each row represents one public review. Provenance is preserved through listingId, listingUrl, reviewId, and scrapedAt, which makes it easier to trace records back to the listing and run. Scope is limited to individual stay listings, and the input schema accepts either full listing URLs or numeric room IDs. When you set a review cap, pagination still follows the sort order you choose, so the returned set reflects the order and limit together. Cost guidance is straightforward: each scraped review is billed as its own event, so the cap directly affects spend.

Apify API example

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({
token: process.env.APIFY_TOKEN,
});
const run = await client.actor('khadinakbar/airbnb-reviews-scraper').call({
listingUrls: ['https://www.airbnb.com/rooms/20669368'],
maxReviewsPerListing: 10,
sortBy: 'MOST_RECENT',
includeHostResponse: true,
});
const items = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.items);

Python

from apify_client import ApifyClient
import os
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("khadinakbar/airbnb-reviews-scraper").call(run_input={
"listingUrls": ["https://www.airbnb.com/rooms/20669368"],
"maxReviewsPerListing": 10,
"sortBy": "MOST_RECENT",
"includeHostResponse": True,
})
dataset_id = run["defaultDatasetId"]
items = list(client.dataset(dataset_id).iterate_items())
print(items)

Best results and outcome guidance

Use a full Airbnb stay listing URL or the numeric room ID for the listing you want to inspect. If you need the newest public feedback, keep sortBy on MOST_RECENT. If you are comparing review tone across the full history, set maxReviewsPerListing to 0 and process the complete dataset. If your workflow depends on host replies, keep includeHostResponse enabled so hostResponse and hostResponseDate remain available for analysis.

Focused standalone workflow

Airbnb Reviews Scraper is designed as a focused standalone workflow for the public input and structured output contract described above.

Design note

I found that the dataset contract requires listingId, reviewId, and scrapedAt on every output row, which makes review provenance explicit and easy to trace in downstream workflows.

FAQ

Can this Actor work from a single listing URL?

Yes. It is designed for individual Airbnb stay listing URLs or the equivalent numeric room IDs.

Can I pass multiple listings in one run?

Yes. You can provide multiple listingUrls or listingIds, and the Actor will return one record per review across those listings.

Does it return the host's public reply?

Yes, when includeHostResponse is enabled. The reply appears in hostResponse, with hostResponseDate when available.

Which review order should I choose?

Use MOST_RECENT for the newest reviews first. Use RATING_DESC or RATING_ASC when rating order matters more than recency.

Can this Actor be used through Apify MCP?

Yes. It is MCP-ready and exposed as an Apify Actor, which makes it suitable for agent workflows that need structured review records.

Responsible use

This Actor collects publicly available Airbnb review data for lawful analysis and automation workflows. Review text can contain personal data, so downstream storage, sharing, and processing should follow applicable privacy and data protection rules. Use the output in ways that respect Airbnb's terms and the rights of reviewers and hosts.