Airbnb Reviews · Guest Comments by Listing avatar

Airbnb Reviews · Guest Comments by Listing

Pricing

from $1.99 / 1,000 results

Go to Apify Store
Airbnb Reviews · Guest Comments by Listing

Airbnb Reviews · Guest Comments by Listing

Export guest reviews from any Airbnb listing — ratings, comments, dates, names, host replies. Paste one URL or many. CSV/Excel when the run finishes. No login.

Pricing

from $1.99 / 1,000 results

Rating

0.0

(0)

Developer

Corentin Robert

Corentin Robert

Maintained by Community

Actor stats

0

Bookmarked

20

Total users

0

Monthly active users

3 days ago

Last modified

Share

Airbnb Reviews Scraper

Collect every guest review from any Airbnb listing — rating, comment, date, reviewer name, host reply — in one table you can open in Excel, Google Sheets, or a BI tool.

No login. No API key. No Airbnb account.

Built for STR hosts, conciergeries, and revenue managers who need structured guest feedback without scrolling listing pages.


Also available

The Store does not cross-sell this suite. Pick the Actor that matches the job:

ActorUse when
Airbnb Pro HostBusiness emails and phones by city
Airbnb Property DetailsAmenities, GPS, photos, completeness
Airbnb CalendarOccupancy and day-by-day availability
Airbnb Price MonitorNightly rates across a market
This Actor — ReviewsGuest comments by listing URL
Airbnb Host PortfolioMap a host’s listings from profile URLs

Who is this for?

You are…Typical goalSuggested setup
STR host / ownerReputation watch on your listingOne listing URL
Conciergerie / PMQuality checks across a portfolioSeveral listing URLs
Revenue managerCompare guest sentiment vs competitorsTwo listings in one run
Analyst / journalistStructured comments with datesEnglish localization via JSON

Quick start

  1. Paste one Airbnb listing URL under Listing URLs.
  2. Click Start.
  3. Download CSV from the Dataset tab (Reviews view).

Store Try uses a real listing and 1 review page (~10 comments) so the daily health check finishes under 5 minutes. Omit maxReviewPages in API JSON to export the full listing (capped at 200 pages).


Ready-made examples (published tasks)

ExampleBest for
Guest reviews for a Paris Airbnb listingSTR hosts monitoring Paris reputation
Guest reviews for a Lyon Airbnb listingConciergerie / PM quality checks in Lyon
Airbnb reviews for a Barcelona listingInternational STR analysts
Bulk Airbnb reviews — two listingsCompare two properties’ reputation

What you get

ColumnWhat it means for you
listingIdAirbnb’s numeric listing id — handy if you merge with other data
listingUrlThe exact link you pasted — easy to match rows back to your list
listingIndex / listingsTotalWhich listing in your batch (1 of 5, 2 of 5, …) when you run several URLs
reviewTextThe guest’s comment (in the export language you choose — see below)
reviewTextOriginalHow the guest wrote it originally, when Airbnb exposes it — useful when the site translated the main text
ratingStar rating as a number
localizedDateMonth and year you can read at a glance (e.g. “March 2025”)
publishedAtPrecise timestamp when available
reviewerNameFirst name when shown
hostResponseYour (or the host’s) public reply, if any
reviewIdStable id when Airbnb provides it
scrapedAtWhen this row was written

Need extra columns? In the JSON input, set "includeVerboseReviewFields": true to add things like reviewer region, highlight tags, and language flags — handy for deep analysis, heavier files.

Dataset views in Apify: use the Reviews (default export) view for a compact column set. With Include all extra fields (JSON), the dataset still stores every key — open Apify’s built-in All fields tab (no separate custom view needed).


How to run

  1. Open Input.
  2. Under Listing URLs, enter one link per line (or paste a JSON array of strings — not { "url": "…" } objects).
  3. Click Run.
  4. When it finishes, open Dataset and download CSV / JSON / Excel.

Example input:

{
"listingUrls": [
"https://www.airbnb.fr/rooms/25497233"
],
"maxReviewPages": 1
}

You can also pass a single URL as "url": "https://www.airbnb.com/rooms/…" in JSON.

ParameterTypeDefaultDescription
listingUrlsstring[]One /rooms/ URL per line
maxReviewPagesintegerall (max 200)Try prefill: 1. Omit in API for the full listing
maxListingsintegerCap how many URLs to process (JSON)
listingConcurrencyinteger3Parallel listings in API mode (1–8)
localizedLanguagestringsite TLDe.g. "en" for one language (JSON)

Output sample

{
"listingId": "25497233",
"listingUrl": "https://www.airbnb.fr/rooms/25497233",
"rating": 5,
"reviewText": "Great stay, quiet and central.",
"localizedDate": "March 2025",
"reviewerName": "Marie",
"hostResponse": "Thank you!",
"scrapedAt": "2026-08-20T08:00:00.000Z"
}

Download JSON, CSV, Excel, or HTML from the Dataset tab.


Language & dates

  • Default: text and month names follow each listing’s site (e.g. airbnb.fr → French, airbnb.de → German). You don’t have to configure anything.
  • Want everything in one language? In JSON, add e.g. "localizedLanguage": "en" so comments and date labels are aligned in English across all listings.
  • Prefer the guest’s own wording in the main text column? In JSON: "preferOriginalReviewText": true.

Translations come from Airbnb’s own content — this actor does not call a separate translation API.


Power users (JSON input)

The form stays simple on purpose. Open the JSON editor when you need to:

  • Cap or tune the runmaxListings, maxReviewPages, maxReviewsPerListing, reviewsPerPage
  • Speed vs. cautionlistingConcurrency (parallel listings; lower it if Airbnb throttles)
  • LogslogAllListingUrls to print every URL in the run log
  • Fallback controlreviewsFeedDisabled / useListingPagesOnly to force page-based collection only
  • Stays / retries — check-in/out, guests, timeouts, maxRequestRetries, etc.

See CHANGELOG.md for version history and behaviour changes.


While the actor runs

Progress appears in the run log. A copy is also saved under Storage → Key-value store → RUN_LOG, so you can review what happened without scrolling the whole console.


FAQ

  • Official Airbnb API? No. The Actor uses the same public listing / reviews feed a visitor sees.
  • Empty dataset? The listing ID must be a real /rooms/ URL. The old placeholder id does not return reviews.
  • Only 10 reviews? Store Try sets maxReviewPages: 1. Omit it in JSON for the full history.
  • Wrong language? Set "localizedLanguage": "en" (or another code) in JSON.

Local development

npm install
# Edit input.json at the project root
apify run
npm test

Full suite: npm run test:all — see tests/README.md.

Support

Something wrong? Check RUN_LOG and the run output.

The form uses a simple URL list (strings). If you still see old inputs shaped like { "url": "…", "0": "h", … }, the actor accepts those too (url first, or rebuild from numeric keys).

Custom integrations or consulting: corentin@outreacher.fr.