Airbnb Reviews Scraper
Pricing
from $3.99 / 1,000 results
Airbnb Reviews Scraper
Collect public Airbnb guest reviews with ratings, complete text, listing details and optional host responses. Available fields and review coverage depend on the public website.
Pricing
from $3.99 / 1,000 results
Rating
0.0
(0)
Developer
Coding Frontned
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
4.3 hours
Issues response
19 days ago
Last modified
Categories
Share
What does the Airbnb reviews scraper do?
The Airbnb reviews scraper collects public review records from Airbnb listing pages and enriches each review with public listing and reviewer details when available. Enter one or more canonical room links, choose review limits and options, then read or download the run's dataset. Results depend on the public pages Airbnb makes available.
Target site: Airbnb.
Why use the Airbnb reviews scraper?
Use public review data for accommodation research, guest experience analysis, and listing comparisons. Each saved row represents one review and may include the listing's rating, location, capacity, amenities, photos, reviewer details, and host response exposed by Airbnb.
Start a run from the Apify Console, schedule repeated runs, or connect through the Apify API and integrations. The Input tab supports no-code runs.
What data can the Airbnb reviews scraper extract?
| Data group | Examples |
|---|---|
| Review | Review text, rating, publication date, language, public review highlights and photos, review topics, and review position |
| Listing | Listing ID and URL, title, location, overall rating, rating categories, review count, guest capacity, and description |
| Host | Public name, profile link, hosting tenure, Superhost status, response rate, response text, and response author avatar |
| Media and amenities | Cover image, photo gallery, amenity groups and availability, sleeping arrangements, and listing highlights |
| House information | Public location notes and coordinates, house rules, safety information, and property details |
| Reviewer | Public display name, profile link, location, tenure, Superhost status, and avatar when shown with the review |
How to scrape Airbnb listing reviews
- Open the Actor and select the Input tab.
- Enter 1 to 20 HTTPS Airbnb room URLs in Listing URLs. Each path must be exactly
/rooms/<numeric-id>; regional Airbnb domains and harmless tracking parameters are supported. - Set review limits, search or sort options, and optional listing or reviewer details.
- Select Save & Start.
- When the run finishes, open Results to view or download review rows and Output summary to check run status.
Input
See the Input tab for the complete configuration. productUrls is required; all other fields are optional and use the defaults shown below. Listing IDs are deduplicated after URL normalization, so regional links to the same listing are processed once. Query parameters and fragments are removed after validation. Booking, modal, private, login, or credential controls in query parameters or fragments are rejected.
Listing and result limits
| Field | Type | Required? | Default | What it does |
|---|---|---|---|---|
| productUrls | Array of strings | Required | No default; form prefilled with a sample URL | Enter 1 to 20 HTTPS Airbnb room links with an exact /rooms/<numeric-id> path. The accepted hosts are Airbnb's apex or www domain with .com, a two-letter regional suffix, .co.<country>, or .com.<country>. Harmless tracking parameters and fragments are discarded. Duplicate listing IDs are processed once. |
| maxReviewsPerListing | Integer | Optional | 0 | Maximum review rows to save from each listing. 0 means no per-listing cap. Range: 0 to 1,000. |
| maxTotalReviews | Integer | Optional | 0 | Maximum review rows to save across all listings. 0 means no run-wide cap. Range: 0 to 10,000. Reaching this limit is normal completion. |
Search, sort, and details
| Field | Type | Required? | Default | What it does |
|---|---|---|---|---|
| includeHostResponses | Boolean | Optional | true | Include available host response text, response author, profile URL, avatar, and original-language response text. hasHostResponse is still included when this option is off. |
| includeListingMetadata | Boolean | Optional | true | Include public listing ratings, capacity, host details, description, amenity groups, photos, sleeping arrangements, location details, highlights, rules, and safety information. |
| includeReviewerDetails | Boolean | Optional | true | Include public reviewer profile, location, tenure, Superhost status, and avatar details shown with a review. |
| reviewSearch | String | Optional | Empty text | Optional phrase for Airbnb's review search control. Maximum length: 200 characters. No matching reviews means no rows for that listing. |
| reviewSort | Choice | Optional | BEST_QUALITY | Sort order exposed by Airbnb's review panel: BEST_QUALITY, MOST_RECENT, HIGHEST_RATED, or LOWEST_RATED. |
The listing title stays with each review as context when available, even when listing metadata is disabled. Disabling host responses omits the reply details while retaining hasHostResponse when the source exposes whether a reply exists.
The search and sort settings use controls or review data exposed by Airbnb. If the requested control is unavailable, collection for that listing fails instead of returning a different order or unfiltered results. A search with no matches produces no review rows.
Advanced settings
| Field | Type | Required? | Default | What it does |
|---|---|---|---|---|
| maxConcurrency | Integer | Optional | 1 | Maximum number of listing pages processed at once. Range: 1 to 5. Lower values reduce concurrent requests. |
| maxRequestRetries | Integer | Optional | 1 | Maximum retries for transient listing navigation or source request failures. Access-denied pages are not retried. Range: 0 to 5. |
| requestDelayMs | Integer | Optional | 1000 | Additional wait before each listing navigation. Range: 0 to 10,000 ms. |
| requestTimeoutSecs | Integer | Optional | 60 | Navigation timeout for listing and review pages. Range: 15 to 180 seconds. |
| proxyConfiguration | Object | Optional | Apify Residential proxy | Select Apify proxy groups and an optional two-letter country code, provide custom HTTP(S) proxy URLs, or disable proxies. These routes cannot be combined. Apify proxy groups can be empty to use automatic group selection. Custom proxy credentials stay in the input and are not included in this README's examples. |
The proxy editor uses these canonical fields. Empty arrays are accepted as unset; an empty Apify group list means automatic group selection. When useApifyProxy is false, provide custom URLs or use no proxy. Custom URLs must use HTTP(S); Apify proxy fields and nonempty custom URLs cannot be combined.
| Proxy field | Type | Required? | Default | What it does |
|---|---|---|---|---|
| proxyConfiguration.useApifyProxy | Boolean | Optional | true | Select Apify Proxy. Set false to use custom proxy URLs or disable proxies. |
| proxyConfiguration.apifyProxyGroups | Array of strings | Optional | RESIDENTIAL | Apify Proxy groups. An empty array requests automatic group selection. Maximum: 50 groups. |
| proxyConfiguration.apifyProxyCountry | String | Optional | None | Optional two-letter country code for Apify Proxy. |
| proxyConfiguration.proxyUrls | Array of strings | Optional | None | Custom HTTP(S) proxy URLs. Use only with useApifyProxy: false. Maximum: 50 URLs. A proxy URL may contain credentials; keep them private. |
Copyable input examples
A small run for one listing:
{"productUrls": ["https://www.airbnb.com/rooms/1104883308160967951"],"maxReviewsPerListing": 5}
Search review text and sort recent results:
{"productUrls": ["https://www.airbnb.com/rooms/1104883308160967951"],"maxReviewsPerListing": 25,"maxTotalReviews": 100,"reviewSearch": "clean","reviewSort": "MOST_RECENT"}
Provide several URL forms for one listing. The first two URLs canonicalize to the same listing ID and are deduplicated. The third URL is a separate listing, so the Actor processes two unique IDs:
{"productUrls": ["https://www.airbnb.com/rooms/1104883308160967951","https://www.airbnb.co.uk/rooms/1104883308160967951?adults=1","https://www.airbnb.com/rooms/2902865"],"maxTotalReviews": 20}
Collect review content without optional listing, reviewer, or host response details:
{"productUrls": ["https://www.airbnb.com/rooms/1104883308160967951"],"maxReviewsPerListing": 10,"includeHostResponses": false,"includeListingMetadata": false,"includeReviewerDetails": false}
Adjust pacing and retries while keeping the default Apify Residential proxy route:
{"productUrls": ["https://www.airbnb.com/rooms/1104883308160967951"],"maxConcurrency": 1,"maxRequestRetries": 2,"requestDelayMs": 1500,"requestTimeoutSecs": 60,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Output
The dataset contains one business record per saved review. Required fields are recordId, listingId, listingUrl, reviewIndex, authorName, and reviewText. Optional fields are included only when the page exposes them and the corresponding input option permits them.
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. The illustrative record below includes every supported top-level and nested field. Its values are documentation examples, not a verified live result. Optional values may not appear together on a real review:
{"recordId": "1234567890123456789#review-9876543210987654321","listingId": "1234567890123456789","listingUrl": "https://www.airbnb.com/rooms/1234567890123456789","listingTitle": "Example apartment near the city center","overallRating": 4.87,"totalReviewCount": 128,"starDistribution": {"5_star": 86,"4_star": 10,"3_star": 3,"2_star": 1,"1_star": 0},"categoryRatings": {"cleanliness": 4.9,"accuracy": 4.8,"checkIn": 4.9,"communication": 4.9,"location": 4.7,"value": 4.6},"listingType": "Entire apartment","location": "Example City, Example Country","guestCapacity": 4,"bedroomCount": 2,"bedCount": 2,"bathroomCount": 1.5,"hostName": "Example Host","hostProfileUrl": "https://www.airbnb.com/users/profile/123456789","hostIsSuperhost": true,"hostReviewCount": 128,"hostRating": 4.95,"hostYearsHosting": 6,"hostResponseRate": "100%","hostResponseTime": "Responds within an hour","listingDescription": "A bright example apartment close to public transport.\n\nThe space\nTwo bedrooms, a kitchen, and a comfortable dining area.\n\nGuest access\nGuests have access to the whole apartment.","coverImageUrl": "https://a0.muscache.com/im/pictures/example-cover.jpg","isGuestFavourite": true,"amenityCount": 3,"reviewIndex": 1,"reviewId": "9876543210987654321","authorName": "Example Reviewer","authorInfo": "Example City, Example Country","reviewerLocation": "Example City, Example Country","reviewerYearsOnAirbnb": 5,"reviewerId": "123456789","reviewerUrl": "https://www.airbnb.com/users/profile/123456789","authorAvatar": "https://a0.muscache.com/im/pictures/example-avatar.jpg","reviewerIsSuperhost": false,"rating": 5,"date": "January 2026","stayType": "Stayed a few nights","reviewText": "The apartment was clean, comfortable, and close to public transport.","hasHostResponse": true,"hostResponse": "Thank you for your thoughtful feedback. We hope to welcome you again.","hostResponseAuthor": "Example Host","hostResponseAuthorId": "123456789","hostResponseAuthorUrl": "https://www.airbnb.com/users/profile/123456789","hostResponseAuthorAvatar": "https://a0.muscache.com/im/pictures/user/example-host-avatar.jpg","hostResponseDate": "February 2026","listingDescriptionHtml": "A bright example apartment close to public transport.<br /><br /><b>The space</b><br />Two bedrooms, a kitchen, and a comfortable dining area.<br /><br /><b>Guest access</b><br />Guests have access to the whole apartment.","amenityGroups": [{"name": "Kitchen and dining","amenities": [{"name": "Kitchen","description": "Space where guests can cook their own meals","available": true},{"name": "Refrigerator","available": true}]},{"name": "Home safety","amenities": [{"name": "Smoke alarm","description": "Installed in the hallway","available": true},{"name": "Carbon monoxide alarm","description": "Not available","available": false}]}],"listingPhotos": [{"id": "111111","url": "https://a0.muscache.com/im/pictures/example-cover.jpg","caption": "First bedroom","width": 1600,"height": 1067,"roomTags": ["Bedroom"]},{"id": "222222","url": "https://a0.muscache.com/im/pictures/example-kitchen.jpg","caption": "Kitchen and dining area","width": 1600,"height": 1067,"roomTags": ["Kitchen","Dining_room"]}],"sleepingArrangements": [{"name": "Bedroom 1","bedDescriptions": ["1 king bed"]},{"name": "Bedroom 2","bedDescriptions": ["1 double bed"]}],"locationDetails": {"displayName": "Example City, Example Region, Example Country","neighborhood": "Example neighborhood","description": "A residential area with cafés and public transport.","latitude": 48.85,"longitude": 2.35,"isExactLocation": false,"details": [{"title": "From the host","text": "The local station is a five-minute walk from the apartment."}]},"hostDetails": {"about": "We welcome guests to our family-managed apartment.\nWe can recommend local cafés and walking routes.","profilePictureUrl": "https://a0.muscache.com/im/pictures/example-host.jpg","isVerified": true,"highlights": ["Speaks English and French","Lives in Example City"],"timeAsHost": {"years": 6,"months": 2}},"houseRules": [{"title": "Checking in and out","items": [{"title": "Check-in after 3:00 pm","description": "Self check-in with a keypad."}]},{"title": "During your stay","items": [{"title": "No parties or events","description": "Please respect the neighbors."}]}],"safetyAndProperty": [{"title": "Safety devices","items": [{"title": "Smoke alarm installed","description": "Located in the hallway."}]}],"reviewTopics": [{"name": "Cleanliness","count": 20},{"name": "Location","count": 16}],"reviewPublishedAt": "2026-01-12T10:15:00Z","reviewOriginalText": "L’appartement était propre, confortable et proche des transports en commun.","reviewLanguage": "fr","hostResponseOriginalText": "Merci pour votre commentaire. Nous espérons vous accueillir à nouveau.","reviewHighlight": "A public highlight associated with this review.","highlightType": "POSITIVE","reviewPhotos": [{"url": "https://a0.muscache.com/im/pictures/review-example.jpg"}],"listingHighlights": [{"title": "Dedicated workspace","description": "A quiet space with wifi for working."}]}
Output fields
| Field | Type | Required? | Meaning |
|---|---|---|---|
| recordId | String | Required | Stable row identifier combining the listing ID with the source review ID, or a listing-bound content hash when Airbnb does not expose an ID. |
| listingId | String | Required | Numeric Airbnb listing identifier. |
| listingUrl | String | Required | Canonical Airbnb URL for the listing. |
| listingTitle | String | Optional | Listing title. |
| overallRating | Number | Optional | Overall listing rating on Airbnb. |
| totalReviewCount | Integer | Optional | Total review count reported for the listing. |
| starDistribution | Object | Optional | Review percentages by 5_star, 4_star, 3_star, 2_star, and 1_star. |
| categoryRatings | Object | Optional | Ratings for cleanliness, accuracy, checkIn, communication, location, and value. |
| listingType | String | Optional | Accommodation type. |
| location | String | Optional | Listing location text. |
| guestCapacity | Integer | Optional | Number of guests the listing accommodates. |
| bedroomCount | Integer | Optional | Number of bedrooms. |
| bedCount | Integer | Optional | Number of beds. |
| bathroomCount | Number | Optional | Number of bathrooms. |
| hostName | String | Optional | Host display name. |
| hostProfileUrl | String | Optional | Host's public Airbnb profile URL. |
| hostIsSuperhost | Boolean | Optional | Whether Airbnb labels the host a Superhost. |
| hostReviewCount | Integer | Optional | Host review count shown on the listing. |
| hostRating | Number | Optional | Host's average rating when shown. |
| hostYearsHosting | Integer | Optional | Hosting tenure in years. |
| hostResponseRate | String | Optional | Host response rate shown on the listing. |
| hostResponseTime | String | Optional | Host response time shown on the listing. |
| listingDescription | String | Optional | Complete listing description text, including the space, guest access and other published sections when available. |
| coverImageUrl | String | Optional | Listing cover image URL. |
| isGuestFavourite | Boolean | Optional | Whether the listing is labeled a Guest favourite. |
| amenityCount | Integer | Optional | Number of available amenities advertised by the listing; repeated entries are counted once. |
| reviewIndex | Integer | Required | One-based position of this review in the collected results for its listing. |
| reviewId | String | Optional | Source review identifier. Omitted when Airbnb does not expose one; the recordId still uses a listing-bound content hash. |
| authorName | String | Required | Reviewer's display name. |
| authorInfo | String | Optional | Additional reviewer line shown with the name. |
| reviewerLocation | String | Optional | Reviewer's displayed location. |
| reviewerYearsOnAirbnb | Integer | Optional | Reviewer tenure in years when displayed. |
| reviewerId | String | Optional | Numeric reviewer profile identifier when available. |
| reviewerUrl | String | Optional | Reviewer's public Airbnb profile URL. |
| authorAvatar | String | Optional | Public reviewer avatar URL. |
| reviewerIsSuperhost | Boolean | Optional | Whether the reviewer's public profile identifies them as a Superhost. Included with reviewer details when Airbnb exposes the status. |
| rating | Integer | Optional | Individual review rating on Airbnb’s 1-to-5-star scale; missing scores are omitted. |
| date | String | Optional | Date text shown with the review. |
| stayType | String | Optional | Stay duration text shown with the review. |
| reviewText | String | Required | Complete review text in the language displayed by Airbnb, when the public response supplies it; otherwise the rendered card text. |
| hasHostResponse | Boolean | Optional | Whether a host response was detected. |
| hostResponse | String | Optional | Host response text, when enabled and available. |
| hostResponseAuthor | String | Optional | Response author's display name. |
| hostResponseAuthorId | String | Optional | Numeric response author profile identifier. |
| hostResponseAuthorUrl | String | Optional | Response author's public Airbnb profile URL. |
| hostResponseAuthorAvatar | String | Optional | Public avatar URL for the response author when available. Included with host responses. |
| hostResponseDate | String | Optional | Date text shown with the host response. |
| listingDescriptionHtml | String | Optional | Complete public listing description HTML, including detailed sections. Enabled by includeListingMetadata. |
| amenityGroups | Array of objects | Optional | Named groups of amenities, including descriptions and explicit availability. Enabled by includeListingMetadata. |
| listingPhotos | Array of objects | Optional | All photos in the public gallery, deduplicated by URL, with native image IDs and available captions, dimensions, and room labels. Enabled by includeListingMetadata. |
| sleepingArrangements | Array of objects | Optional | Room names and every published bed description. Enabled by includeListingMetadata. |
| locationDetails | Object | Optional | Published location labels, neighborhood notes and map coordinates. No inferred address components. Enabled by includeListingMetadata. |
| hostDetails | Object | Optional | Full host biography, profile photo, verification flag and public highlights shown on the listing. Enabled by includeListingMetadata. |
| listingHighlights | Array of objects | Optional | Published listing feature headings and explanations. Enabled by includeListingMetadata. |
| houseRules | Array of objects | Optional | Grouped arrival, stay and departure rules, with complete descriptions. Enabled by includeListingMetadata. |
| safetyAndProperty | Array of objects | Optional | Grouped safety devices, hazards and property limitations. Enabled by includeListingMetadata. |
| reviewTopics | Array of objects | Optional | Airbnb’s listing-wide topic labels and counts; these describe the listing’s reviews collectively. Enabled by includeListingMetadata. |
| reviewPublishedAt | String | Optional | Exact source review publication timestamp, in ISO 8601 format, when the public review response exposes it. |
| reviewOriginalText | String | Optional | Complete original-language review text. Source HTML line breaks may be present. |
| reviewLanguage | String | Optional | Original review language code reported by Airbnb, such as fr or en. |
| hostResponseOriginalText | String | Optional | Full original-language host reply, including source HTML line breaks when present. Enabled by includeHostResponses. |
| reviewHighlight | String | Optional | Public highlight text associated with this review when Airbnb exposes one. |
| highlightType | String | Optional | Public category for the review highlight, such as POSITIVE. |
| reviewPhotos | Array of objects | Optional | Public photo URLs attached to this review when the review UI exposes them. |
Nested details
All these nested fields are optional unless marked required within their containing item. A parent object or array can be absent.
| Field | Type | Required? | Meaning |
|---|---|---|---|
| starDistribution.5_star, starDistribution.4_star, starDistribution.3_star, starDistribution.2_star, starDistribution.1_star | Integer | Optional | Counts of reviews at each star rating when Airbnb publishes a distribution. |
| categoryRatings.cleanliness, categoryRatings.accuracy, categoryRatings.checkIn, categoryRatings.communication, categoryRatings.location, categoryRatings.value | Number | Optional | Listing-level category ratings when Airbnb exposes them. |
| amenityGroups[].name | String | Required within group | Published amenity category. |
| amenityGroups[].amenities | Array of objects | Required within group | All published items in the category. |
| amenityGroups[].amenities[].name | String | Required within item | Amenity name. |
| amenityGroups[].amenities[].description | String | Optional | Full additional amenity information. |
| amenityGroups[].amenities[].available | Boolean | Optional | Explicit source availability; false means advertised as unavailable. |
| listingPhotos[].url | String | Required within item | Public photo URL. |
| listingPhotos[].id | String | Optional | Native image identifier. |
| listingPhotos[].caption | String | Optional | Published caption or alternative text. |
| listingPhotos[].width, listingPhotos[].height | Integer | Optional | Published original dimensions in pixels. |
| listingPhotos[].roomTags | Array of strings | Optional | Source room names or media tags associated with the photo. |
| sleepingArrangements[].name | String | Required within item | Room or sleeping space name. |
| sleepingArrangements[].bedDescriptions | Array of strings | Required within item | All bed descriptions for that space. |
| locationDetails.displayName | String | Optional | Complete source location label. |
| locationDetails.neighborhood | String | Optional | Published neighborhood name. |
| locationDetails.description | String | Optional | Neighborhood summary supplied by Airbnb. |
| locationDetails.latitude, locationDetails.longitude | Number | Optional | Public map coordinates, with latitude −90 to 90 and longitude −180 to 180. |
| locationDetails.isExactLocation | Boolean | Optional | Airbnb’s flag for whether its displayed map position is exact. This does not supply a street address. |
| locationDetails.details | Array of objects | Optional | Additional published location sections. |
| locationDetails.details[].title, locationDetails.details[].text | String | Required within item | Section heading and complete neighborhood or transport text. |
| hostDetails.about | String | Optional | Complete host biography shown on the listing. |
| hostDetails.profilePictureUrl | String | Optional | Public host photo URL. |
| hostDetails.isVerified | Boolean | Optional | Verification flag reported in the source host information. |
| hostDetails.highlights | Array of strings | Optional | Published profile facts, preserved as text. |
| hostDetails.timeAsHost | Object | Optional | Source hosting tenure with separate year and month components; this can differ from the rounded hostYearsHosting display. |
| hostDetails.timeAsHost.years, hostDetails.timeAsHost.months | Integer | Optional | Source years and remaining months of hosting, with months from 0 to 11. |
| listingHighlights[].title | String | Required within item | Feature heading. |
| listingHighlights[].description | String | Optional | Complete source explanation of that feature. |
| houseRules[].title, safetyAndProperty[].title | String | Required within group | Rule or safety category. |
| houseRules[].items, safetyAndProperty[].items | Array of objects | Required within group | Associated source rules or notices. |
| houseRules[].items[].title, safetyAndProperty[].items[].title | String | Required within item | Rule or notice heading. |
| houseRules[].items[].description, safetyAndProperty[].items[].description | String | Optional | Complete additional text. |
| reviewTopics[].name | String | Required within item | Topic label supplied by Airbnb. |
| reviewTopics[].count | Integer | Required within item | Number of listing reviews associated with that topic. |
| reviewPhotos[].url | String | Required within item | Public HTTPS image URL attached to the review. |
Optional fields may be absent when Airbnb does not expose them or when an include option is off. Listing and host details include available capacity, host statistics, response rate, and badge information. A missing badge value is omitted rather than reported as false, and a missing number is omitted rather than reported as zero. The review date and stay type preserve the text shown on the page. reviewPublishedAt preserves the source's exact publication timestamp separately. Full review and reply text are matched to rendered cards by review ID using public responses loaded by Airbnb; when no source review ID is exposed, recordId uses a listing-bound SHA-256 content identity. The Actor does not request unpublished dates, helpful-vote counts, verified-stay flags, or review media that a page does not expose.
The listing details retain all items in the exposed amenity groups, photo gallery, rules, and sleeping arrangements; review limits cap review rows rather than truncating these sections. amenityCount counts available amenities only, so it can be smaller than the number of entries in amenityGroups. Repeated photos are merged by URL. Description HTML and original review text retain source formatting; ordinary reviewText and listingDescription contain readable text. Public profile pages can be unavailable to logged-out visitors, so hostDetails uses information published on the listing and reviewer details use the review cards. It does not promise a separate profile-page biography. No missing value is replaced with an empty array, invented number, address, or verification claim.
If collection stops before a review or reply can be expanded, its actual visible excerpt may be preserved and the output summary marks the run partial.
Run status and output summary
A run is SUCCEEDED when at least one valid review record was saved. If collection stops or optional listing enrichment fails after saving some records, the run remains SUCCEEDED and the summary marks it partial. Saved reviews remain available. Reaching the requested total review limit is normal completion. A run with no saved review records is FAILED, including when a listing has no reviews, results are fully filtered, input is invalid, or Airbnb blocks access.
The separate Output summary link opens the OUTPUT_SUMMARY record in the run's default Key-value store. It contains only the final status, the number of saved review records, and whether collection was partial.
Illustrative summary:
{"status": "SUCCEEDED","itemsStored": 25,"isPartial": false}
| Field | Type | Required? | Meaning |
|---|---|---|---|
| status | String | Required | SUCCEEDED when one or more real reviews were saved; otherwise FAILED. |
| itemsStored | Nonnegative integer | Required | Number of validated review records whose dataset writes completed. |
| isPartial | Boolean | Required | True when collection or optional listing enrichment failed during a run that saved at least one review. |
How much will it cost to scrape Airbnb reviews?
The Actor uses Apify compute and the configured proxy. Cost depends on your Apify plan and proxy usage. Browser navigation, the number of listings, review scrolling, retries, and optional listing metadata affect runtime and resource use; large listing galleries also take longer to collect. Check current pricing in your Apify account. No fixed price is stated here.
Tips and advanced options
- Keep the defaults for a paced run. Lower
maxConcurrencyor raiserequestDelayMswhen you prefer slower, more sequential collection. - Use
maxReviewsPerListingandmaxTotalReviewsto cap the number of saved review rows. A value of0means no cap for that limit. - Search and sort options depend on controls Airbnb exposes on each listing. If the site changes those controls, a listing may fail rather than return results that do not match your request.
- Listing metadata is shared across review rows for that listing; disabling it reduces the repeated detail fields in the dataset.
FAQ, support, and responsible use
Why did a run return no review rows?
A listing may have no public reviews, a search phrase may match none, a page may not expose review content, or Airbnb may deny access. Runs with no valid review rows fail; see OUTPUT_SUMMARY for final status and count. A partial run keeps reviews already saved when later collection or optional listing enrichment fails.
Does the Actor return a full street address?
No. It includes public location labels, neighborhood text, and map coordinates when Airbnb exposes them. It does not infer an address or claim that an approximate map point is exact.
Where can I get help?
Use the Actor's Issues tab and include the run ID plus a short description. Programmatic access is available from the Actor's API tab.
Airbnb may change its pages or limit access, so results can be limited or unavailable. This Actor is not affiliated with Airbnb. It reads public listing and review pages, does not ask for an Airbnb password, and does not attempt to solve access challenges. Our Actors only collect information users have chosen to share publicly, but results may contain personal data. Use them only with a lawful basis, follow Airbnb's terms and robots guidance, respect rate limits, and comply with applicable privacy laws. Consult qualified legal counsel when unsure.