Airbnb Reviews · Guest Comments by Listing
Pricing
from $1.99 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
20
Total users
0
Monthly active users
3 days ago
Last modified
Categories
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:
| Actor | Use when |
|---|---|
| Airbnb Pro Host | Business emails and phones by city |
| Airbnb Property Details | Amenities, GPS, photos, completeness |
| Airbnb Calendar | Occupancy and day-by-day availability |
| Airbnb Price Monitor | Nightly rates across a market |
| This Actor — Reviews | Guest comments by listing URL |
| Airbnb Host Portfolio | Map a host’s listings from profile URLs |
Who is this for?
| You are… | Typical goal | Suggested setup |
|---|---|---|
| STR host / owner | Reputation watch on your listing | One listing URL |
| Conciergerie / PM | Quality checks across a portfolio | Several listing URLs |
| Revenue manager | Compare guest sentiment vs competitors | Two listings in one run |
| Analyst / journalist | Structured comments with dates | English localization via JSON |
Quick start
- Paste one Airbnb listing URL under Listing URLs.
- Click Start.
- 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)
| Example | Best for |
|---|---|
| Guest reviews for a Paris Airbnb listing | STR hosts monitoring Paris reputation |
| Guest reviews for a Lyon Airbnb listing | Conciergerie / PM quality checks in Lyon |
| Airbnb reviews for a Barcelona listing | International STR analysts |
| Bulk Airbnb reviews — two listings | Compare two properties’ reputation |
What you get
| Column | What it means for you |
|---|---|
listingId | Airbnb’s numeric listing id — handy if you merge with other data |
listingUrl | The exact link you pasted — easy to match rows back to your list |
listingIndex / listingsTotal | Which listing in your batch (1 of 5, 2 of 5, …) when you run several URLs |
reviewText | The guest’s comment (in the export language you choose — see below) |
reviewTextOriginal | How the guest wrote it originally, when Airbnb exposes it — useful when the site translated the main text |
rating | Star rating as a number |
localizedDate | Month and year you can read at a glance (e.g. “March 2025”) |
publishedAt | Precise timestamp when available |
reviewerName | First name when shown |
hostResponse | Your (or the host’s) public reply, if any |
reviewId | Stable id when Airbnb provides it |
scrapedAt | When 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
- Open Input.
- Under Listing URLs, enter one link per line (or paste a JSON array of strings — not
{ "url": "…" }objects). - Click Run.
- 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.
| Parameter | Type | Default | Description |
|---|---|---|---|
listingUrls | string[] | — | One /rooms/ URL per line |
maxReviewPages | integer | all (max 200) | Try prefill: 1. Omit in API for the full listing |
maxListings | integer | — | Cap how many URLs to process (JSON) |
listingConcurrency | integer | 3 | Parallel listings in API mode (1–8) |
localizedLanguage | string | site TLD | e.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 run —
maxListings,maxReviewPages,maxReviewsPerListing,reviewsPerPage - Speed vs. caution —
listingConcurrency(parallel listings; lower it if Airbnb throttles) - Logs —
logAllListingUrlsto print every URL in the run log - Fallback control —
reviewsFeedDisabled/useListingPagesOnlyto 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 rootapify runnpm 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.