Airbnb Search Scraper
Under maintenancePricing
from $3.99 / 1,000 results
Airbnb Search Scraper
Under maintenanceSearch public Airbnb stays or extract specific public room pages with bounded browsing and validated output.
Pricing
from $3.99 / 1,000 results
Rating
0.0
(0)
Developer
Coding Frontned
Maintained by CommunityActor stats
0
Bookmarked
24
Total users
6
Monthly active users
11 days ago
Last modified
Categories
Share
What this Actor does
This Actor collects public stay listings from Airbnb. Search by location, dates, guest count, price range, and property type, or provide room URLs to open specific listings. Use the results to compare stays, build travel research datasets, or enrich a short list of rooms with public details.
In search mode, choose between quick search cards and visiting each room page for more detail. Direct room URL mode always reads the room page. Only validated Airbnb listing records are added to the dataset.
Airbnb currently disallows location-search routes in its public robots rules. When those rules apply, search mode stops with no listing records and reports FAILED. Public room URLs are checked separately; room-page access does not establish that location search is available.
Room-page visits retain valid dates and guest settings from the source room URL, in both modes, so available room prices refer to that stay. Room details include complete descriptions, grouped amenities, room photo tours, host details and a public profile link when published on the room page, house and safety rules, and available calendar-day restrictions. Saved business links remain canonical room URLs without search parameters.
Run the Actor
- Open the Input tab and fill in the fields for a location search or URL mode. You can also paste one of the JSON examples below into the JSON editor.
- Select Start to run the Actor.
- Open Results to view the listings. Use the separate Output summary link for the run status and saved-record count.
Input
The input has conditional source requirements: search mode (the default) requires location, while productUrl mode requires at least one productUrls entry. The form may prefill Paris, France for location searches; this is only a form prefill, not a runtime default. A non-empty productUrls list in search mode is rejected so a run has one clear source. Unknown fields and unsupported aliases are rejected.
Search settings
| Field | Type | Required? | Default | What it does |
|---|---|---|---|---|
location | Text | Required in search mode; optional in productUrl mode | None (the form may prefill Paris, France) | Location to search, up to 200 characters. Leading and trailing spaces are trimmed. |
checkIn | Text (YYYY-MM-DD) | Optional in search mode; must be paired with checkOut | None | Search check-in date. Both dates must be valid calendar dates and today or later. |
checkOut | Text (YYYY-MM-DD) | Optional in search mode; must be paired with checkIn | None | Search check-out date, later than check-in. |
guests | Integer | Optional | 2 | Guest count for a location search; from 1 to 16. In productUrl mode, guest settings come from each URL. |
priceMin | Integer | Optional | None | Lower nightly-price filter in the currency Airbnb uses for the search location; from 0 to 1,000,000. |
priceMax | Integer | Optional | None | Upper nightly-price filter in the currency Airbnb uses for the search location; from 0 to 1,000,000. It cannot be lower than priceMin. |
propertyType | Text choice | Optional | any | Search filter: any, entire_home, private_room, or shared_room. |
These search filters are sent to Airbnb as search settings. The Actor does not sort results; it keeps the order Airbnb returns. Date, guest, price, location, and property type settings do not change the selected listing URLs in productUrl mode. For a direct room URL, supported date and guest settings are read from that URL.
Results and detail settings
| Field | Type | Required? | Default | What it does |
|---|---|---|---|---|
mode | Text choice | Optional | search | Choose search to search a location, or productUrl to open specific public room pages. |
productUrls | List of text | Required in productUrl mode; must be empty in search mode | Empty list | Up to 100 public room URLs, each at most 2,048 characters. URLs must use HTTPS and an approved Airbnb host (airbnb.com, www.airbnb.com, airbnb.co.in, or www.airbnb.co.in), have a /rooms/{numericId} path, and contain no credentials or non-default port. They are canonicalized to www.airbnb.com; duplicate listing IDs are removed. Valid check_in, check_out, adults, children, infants, and pets settings are retained for navigation; unrelated parameters are removed. The first occurrence of each listing ID supplies its stay settings. Only the first maxItems unique URLs are processed. |
maxItems | Integer | Optional | 10 | Maximum number of unique listing records to save, from 1 to 100. Applies to both modes. |
maxPages | Integer | Optional | 3 | Maximum search-result pages to inspect in search mode, from 1 to 20. It is ignored in productUrl mode. |
deepScrape | Boolean | Optional | false | In search mode, visit each selected room page and add available detail fields. If a room-page request fails, retain its validated search-card fields and mark the run as limited. When off, save search-card fields only. Direct URL mode always reads room pages. |
includeReviews | Boolean | Optional | true | Include up to ten publicly returned reviews, their complete text and available IDs, dates, and author details, plus category ratings, rating distribution, and review topics when reading a room page. In search mode this applies when deepScrape is on; in productUrl mode it controls reviews directly. |
The runtime enforces conditional requirements by mode: search requires location, and productUrl requires a non-empty productUrls list. A search input with non-empty direct URLs is rejected. In the Console form, clear the example location only if you want the direct URL input to be visually uncluttered; the value is ignored in productUrl mode.
Search results are deduplicated by Airbnb listing ID across pages. Reaching maxItems or maxPages is a normal completion. If Airbnb returns a denial, challenge, or a later page fails, the Actor preserves completed records and marks the run as limited when it has saved at least one record.
If the full reviews panel does not load, the available room record is kept and the run is marked as limited. Browser error pages are never saved as listings. A run that saves no real listings reports FAILED.
Advanced settings (Developer Options)
| Field | Type | Required? | Default | What it does |
|---|---|---|---|---|
maxConcurrency | Integer | Optional | 1 | Maximum pages processed at once; from 1 to 3. |
maxRequestRetries | Integer | Optional | 0 | Retry limit for a failed page request; from 0 to 2. Access denials remain failures. |
requestDelayMs | Integer (milliseconds) | Optional | 1000 | Minimum spacing between page navigations; from 0 to 10,000 milliseconds. |
navigationTimeoutSecs | Integer (seconds) | Optional | 60 | Maximum wait for a page navigation; from 15 to 120 seconds. |
requestHandlerTimeoutSecs | Integer (seconds) | Optional | 120 | Maximum processing time for one page; from 30 to 300 seconds. |
proxyConfiguration | Object | Optional | Disabled | Canonical Apify proxy editor configuration with useApifyProxy, optional apifyProxyGroups and apifyProxyCountry (uppercase country code such as IN), or custom proxyUrls. Apify groups/country require useApifyProxy: true; custom proxyUrls require useApifyProxy: false. Proxy routes cannot be mixed. Empty editor lists are accepted and ignored. If a requested proxy route is unavailable, the run fails instead of switching to direct access. Do not use proxies to bypass access controls. |
Example: small location search
{"location": "Paris, France","maxItems": 3,"maxPages": 1}
Example: search with dates and filters
{"location": "Kyoto, Japan","checkIn": "2027-05-10","checkOut": "2027-05-15","guests": 2,"priceMin": 80,"priceMax": 250,"propertyType": "entire_home","maxItems": 10,"maxPages": 3}
Example: search cards without room-page details or reviews
{"location": "Lisbon, Portugal","maxItems": 5,"deepScrape": false,"includeReviews": false}
Example: open specific room URLs
Replace the example URL with one or more public Airbnb room URLs you want to inspect.
{"mode": "productUrl","productUrls": ["https://www.airbnb.com/rooms/46461531?check_in=2027-05-10&check_out=2027-05-17&adults=2"],"maxItems": 1,"includeReviews": true}
Example: bounded developer options
{"location": "Singapore","maxItems": 5,"maxPages": 2,"maxConcurrency": 1,"maxRequestRetries": 0,"requestDelayMs": 1500,"navigationTimeoutSecs": 60,"requestHandlerTimeoutSecs": 120}
For an explicitly configured proxy route, use the Apify proxy editor shape. For example, {"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"],"apifyProxyCountry":"IN"} requests the selected Apify route. A custom proxyUrls list requires useApifyProxy: false. Empty editor lists remain valid. Proxy configuration is optional; the Actor does not enable a proxy or a region by default.
Dataset results
The dataset contains listing business fields only. Search-only records may omit fields that Airbnb did not show. Records from room pages can include the optional detailData object. Missing values, source nulls, and empty collections are left out rather than replaced with placeholder text or zeroes. Explicit source false values are retained. Descriptions, neighborhood directions, and review text are not shortened by the Actor. Source translations and original text are kept separately when available.
When a requested room-page visit fails, a search result can still be saved without detailData. Direct URL mode has no search-card fallback. Errors while reading requested description, amenity, policy, review, or room-page host details mark a run with saved records as limited, even if the listing count reaches maxItems. Information that is simply not available on the public page is omitted.
The following full example is illustrative. It documents the supported record shape; it is not a verified live Airbnb result.
{"listingId": "12345678","listingTitle": "Bright apartment near the river","listingDescription": "A quiet one-bedroom stay close to transit.","price": "€840","originalPrice": "€980","totalPrice": "€840","nights": 7,"freeCancellation": true,"rating": 4.92,"reviewCount": 84,"propertyType": "Entire home in Paris, France","bedrooms": 1,"beds": 1,"bathrooms": 1.5,"link": "https://www.airbnb.com/rooms/12345678","thumbnail": "https://a0.muscache.com/im/pictures/example-cover.jpg","thumbnails": ["https://a0.muscache.com/im/pictures/example-cover.jpg","https://a0.muscache.com/im/pictures/example-kitchen.jpg"],"superhost": true,"guestFavourite": true,"detailData": {"title": "Bright apartment near the river","description": "A quiet one-bedroom stay close to transit. The space A full kitchen and a sunny living room.","propertyType": "Entire serviced apartment","locationName": "Paris, France","shortDescription": "A quiet one-bedroom stay close to transit.","maxGuests": 2,"bedrooms": 1,"beds": 1,"bathrooms": 1.5,"hostName": "Camille","isSuperhost": true,"hostYearsHosting": 6,"isGuestFavourite": true,"rating": 4.92,"reviewCount": 84,"categoryRatings": {"cleanliness": 4.9,"accuracy": 4.9,"checkIn": 5,"communication": 5,"location": 4.8,"value": 4.9},"price": "€840","originalPrice": "€980","priceLabel": "€840 for 7 nights, originally €980","amenities": ["Kitchen","Wifi","Washer"],"highlights": ["Walkable neighborhood","Dedicated workspace"],"listingHighlights": [{"title": "Walkable neighborhood","description": "Cafes and public transit are nearby."}],"sleepingArrangement": "Bedroom: 1 queen bed","sleepingArrangements": [{"name": "Bedroom","beds": ["1 queen bed"]}],"cancellationPolicy": "Free cancellation before 9 May.","houseRules": "No smoking. No parties.","checkoutTime": "11:00 AM","coordinates": {"lat": 48.8566,"lng": 2.3522},"images": [{"url": "https://a0.muscache.com/im/pictures/example-cover.jpg","contentUrl": "https://a0.muscache.com/im/pictures/example-cover.jpg","caption": "Living room","width": 1600,"height": 1200,"id": "901","aspectRatio": 1.3333333333333333,"orientation": "LANDSCAPE"},"https://a0.muscache.com/im/pictures/example-kitchen.jpg"],"neighbourhoodDescription": "Cafes and public transit are nearby.","hostAbout": "I enjoy helping guests explore the city.","reviews": [{"author": "Jordan","authorLocation": "Toronto, Canada","rating": 5,"date": "May 2026","stayType": "Stayed for a week","text": "The apartment was clean, comfortable, and easy to reach.","hostResponse": "Thank you for staying with us.","originalHostResponse": "Merci d'avoir séjourné chez nous.","hostResponseDate": "May 2026","hostResponseAuthor": "Camille","id": "701","authorId": "801","authorProfileUrl": "https://www.airbnb.com/users/profile/802","avatarUrl": "https://a0.muscache.com/im/pictures/example-reviewer.jpg","createdAt": "2026-05-20T12:00:00Z","language": "en","originalText": "The apartment was clean, comfortable, and easy to reach."}],"descriptionTranslationApplied": true,"descriptionHtml": "A quiet one-bedroom stay close to transit.<br/><b>The space</b><br/>A full kitchen and a sunny living room.","originalDescription": "Un logement calme avec une chambre, une cuisine équipée et un salon lumineux.","originalDescriptionHtml": "Un logement calme avec une chambre, une cuisine équipée et un salon lumineux.","descriptionSections": [{"text": "A quiet one-bedroom stay close to transit."},{"title": "The space","text": "A full kitchen and a sunny living room."}],"amenityGroups": [{"title": "Kitchen and dining","amenities": [{"name": "Kitchen","available": true,"description": "Space where guests can cook their own meals"}]},{"title": "Internet","amenities": [{"name": "Wifi","available": true}]},{"title": "Laundry","amenities": [{"name": "Washer","available": true}]},{"title": "Not included","amenities": [{"name": "TV","available": false}]}],"rooms": [{"id": "12345678-living-room","name": "Living room","features": ["Sunny seating area"],"images": [{"url": "https://a0.muscache.com/im/pictures/example-cover.jpg","caption": "Living room","width": 1600,"height": 1200,"id": "901","aspectRatio": 1.3333333333333333,"orientation": "LANDSCAPE"}]}],"host": {"id": "501","name": "Camille","profileId": "502","profileUrl": "https://www.airbnb.com/users/profile/502","avatarUrl": "https://a0.muscache.com/im/pictures/example-host.jpg","isVerified": true,"rating": 4.92,"reviewCount": 84,"responseRate": "Response rate: 100%","responseTime": "Responds within an hour","highlights": ["Speaks English and French"],"about": "I enjoy helping guests explore the city.","isAirbnbManaged": false},"location": {"city": "Paris","title": "Paris, Île-de-France, France","neighbourhood": "Paris","description": "Cafes and public transit are nearby.","isExactLocation": false,"isVerified": true,"address": {"addressLocality": "Paris"},"details": [{"title": "Getting around","text": "The metro station is a short walk away."}]},"houseRuleGroups": [{"title": "Checking in and out","items": [{"title": "Check-in after 3:00 pm"},{"title": "Checkout before 11:00 am"}]},{"title": "During your stay","items": [{"title": "No smoking","description": "Smoking is not permitted indoors."},{"title": "No parties or events"}]}],"safetyGroups": [{"title": "Safety devices","items": [{"title": "Smoke alarm","description": "Installed in the apartment."}]}],"ratingDistribution": [{"stars": 5,"proportion": 0.9166666666666666},{"stars": 4,"proportion": 0.08333333333333333},{"stars": 3,"proportion": 0},{"stars": 2,"proportion": 0},{"stars": 1,"proportion": 0}],"reviewTopics": [{"name": "Clean apartment","count": 12}],"availability": [{"date": "2027-05-10","available": true,"availableForCheckin": true,"availableForCheckout": true,"bookable": true,"minNights": 2,"maxNights": 30}],"cancellationTerms": [{"refundType": "Full refund","refundTerm": "Get back 100% of what you paid.","deadline": "9 May 3:00 pm","deadlineRelation": "Before","description": "Full refund if you cancel before 3:00 pm on 9 May."}],"stay": {"checkIn": "2027-05-10","checkOut": "2027-05-17","guests": 2,"nights": 7,"currencySymbol": "€","available": true,"priceIncludesFees": true,"priceBreakdown": [{"label": "7 nights x €120","price": "€840"}]}}}
Listing fields
| Field | Type | Required? | Meaning |
|---|---|---|---|
listingId | Text | Required | Numeric Airbnb listing ID. |
listingTitle | Text | Required | Listing title from the search card or room page. |
link | URL | Required | Canonical Airbnb room URL for this listing. |
listingDescription | Text | Optional | Short description or subtitle shown on the search card. |
price | Text | Optional | Price text shown in the search card; Airbnb may display a total for the selected dates. |
originalPrice | Text | Optional | Original price when Airbnb displays a reduced price. |
totalPrice | Text | Optional | Total price for the shown stay when extracted. |
nights | Integer | Optional | Number of nights shown with the card price. |
freeCancellation | Boolean | Optional | Whether the visible price area indicates free cancellation. |
rating | Number | Optional | Public listing rating. |
reviewCount | Integer | Optional | Number of reviews shown for the listing. |
propertyType | Text | Optional | Property type or listing subtitle. |
bedrooms | Integer | Optional | Bedroom count shown in listing details. |
beds | Integer | Optional | Bed count shown in listing details. |
bathrooms | Number | Optional | Bathroom count shown in listing details, including fractional counts when Airbnb publishes them. |
thumbnail | URL | Optional | First available search-card image. |
thumbnails | List of URLs | Optional | Search-card image URLs. |
superhost | Boolean | Optional | Search-card Superhost badge signal. |
guestFavourite | Boolean | Optional | Search-card Guest favourite badge signal. |
detailData | Object | Optional | Additional information read from the room page; fields are listed below. |
detailData fields
detailData appears when a room page was successfully read. Its title is required when the object is present; other fields are optional.
| Field | Type | Required? | Meaning |
|---|---|---|---|
title | Text | Required in detailData | Title shown on the room page. |
description | Text | Optional | Complete publicly provided listing description, without HTML tags. |
shortDescription | Text | Optional | Public localized short description when available. |
propertyType | Text | Optional | Room type from the overview. |
locationName | Text | Optional | Location text from the overview. |
maxGuests | Integer | Optional | Guest capacity. |
bedrooms | Integer | Optional | Bedroom count from the overview. |
beds | Integer | Optional | Explicit bed count from the public overview, including labels such as 1 double bed; not inferred from photos. |
bathrooms | Number | Optional | Explicit bathroom count from the overview, including fractional values such as 1.5; unnumbered labels are omitted. |
hostName | Text | Optional | Host name shown on the page. |
isSuperhost | Boolean | Optional | Superhost signal from the host section. |
hostYearsHosting | Integer | Optional | Hosting duration in years, when stated in that form. |
isGuestFavourite | Boolean | Optional | Guest favourite badge signal. |
rating | Number | Optional | Public room rating. |
reviewCount | Integer | Optional | Public room review count. |
categoryRatings | Object of numbers | Optional | Available ratings for cleanliness, accuracy, checkIn, communication, location, and value. Read when includeReviews is on. |
price | Text | Optional | Price text from the room page. |
originalPrice | Text | Optional | Original room-page price when shown. |
priceLabel | Text | Optional | Price label from the room page, including the shown stay length when available. |
amenities | List of text | Optional | Offered amenities visible or expanded on the page. Items marked unavailable, category headings, and explanatory text are excluded from expanded amenity lists. |
highlights | List of text | Optional | Listing highlights. |
sleepingArrangement | Text | Optional | Sleeping arrangement description. |
cancellationPolicy | Text | Optional | Cancellation policy text when shown. Prompts to add dates are omitted. |
houseRules | Text | Optional | House-rule text. |
checkoutTime | Text | Optional | Checkout time when shown. |
coordinates | Object | Optional | lat and lng coordinates from structured listing data. |
images | List | Optional | All public room-tour images when available, otherwise structured image data. Objects can include native image ID, URL, caption, dimensions, aspect ratio, and orientation. |
neighbourhoodDescription | Text | Optional | Neighborhood description shown on the page. |
hostAbout | Text | Optional | Host introduction text shown on the page. |
reviews | List of objects | Optional | Up to ten publicly returned reviews with complete text, native IDs, publication dates, and public author details. Requires includeReviews: true. |
listingHighlights | List of objects | Optional | Public listing highlight titles and available descriptions. |
sleepingArrangements | List of objects | Optional | Published sleeping-space names and their source bed descriptions. |
descriptionHtml | Text | Optional | Complete description HTML, with unsafe markup and attributes removed. |
originalDescription | Text | Optional | Original-language description when different from the displayed version. |
originalDescriptionHtml | Text | Optional | Original source description HTML when its plain text differs from the displayed description. |
descriptionTranslationApplied | Boolean | Optional | Whether the selected public description is a translation of a distinct source description. Omitted when source text is unavailable. |
descriptionSections | List of objects | Optional | Description divided by source headings; each section has optional title and complete text. |
amenityGroups | List of objects | Optional | Source amenity categories with item names, availability, and explanatory notes, including explicitly unavailable amenities. |
rooms | List of objects | Optional | Source room photo tour, preserving each room's ID, name, features, and associated images. |
host | Object | Optional | Listing host identity and details published on the room page, with a public profile link when exposed there. |
location | Object | Optional | Published location label, locality, neighborhood description, and directions; no guessed address components. |
houseRuleGroups | List of objects | Optional | Complete rule categories, item titles, and available explanations. |
safetyGroups | List of objects | Optional | Published safety and property categories, including devices reported or not reported by the host. |
ratingDistribution | List of objects | Optional | Published star-rating proportions. Requires includeReviews: true. |
reviewTopics | List of objects | Optional | Published review-topic labels and counts. Requires includeReviews: true. |
availability | List of objects | Optional | Calendar days returned by the public page, commonly twelve months, with published availability and stay-length restrictions. |
cancellationTerms | List of objects | Optional | Stay-specific refund milestones returned by the page. Dates remain source text; no year is inferred. |
stay | Object | Optional | Dates and guest count actually displayed by the room page, with available price context and booking availability signals. |
Each review object can contain these optional fields:
| Field | Type | Required? | Meaning |
|---|---|---|---|
author | Text | Optional | Review author name. |
authorLocation | Text | Optional | Author location shown with the review. Omitted when Airbnb displays only the author's membership duration. |
rating | Integer | Optional | Review star rating, from 1 to 5. |
date | Text | Optional | Review date or relative date text. |
stayType | Text | Optional | Stay description shown with the review. |
text | Text | Optional | Complete displayed or translated review text. |
hostResponse | Text | Optional | Complete displayed host reply. |
originalHostResponse | Text | Optional | Complete source reply when Airbnb also supplies a distinct translated reply. |
id | Text | Optional | Native review ID. |
authorId | Text | Optional | Native reviewer user ID. |
authorProfileUrl | URL | Optional | Public reviewer profile link. |
avatarUrl | URL | Optional | Public reviewer image. |
createdAt | Text (date-time) | Optional | Source review publication timestamp, retaining its timezone. |
language | Text | Optional | Source language code. |
originalText | Text | Optional | Complete original-language review text. |
When present, coordinates contains lat and lng numbers. An image item is either a URL string or an object with available id, url, contentUrl, caption, width, height, aspectRatio, and orientation. contentUrl is supported by the existing structured-image fallback. Room-tour image objects use the same fields except contentUrl. Dimensions and aspect ratios are source values; missing dimensions are omitted.
Enriched nested fields
All fields below are optional. Lists preserve their source associations rather than mixing room photos, host data, or calendar days from different listings.
| Field | Type | Required? | Meaning |
|---|---|---|---|
amenityGroups[].title | Text | Optional | Amenity category heading. |
amenityGroups[].amenities[].name | Text | Optional | Amenity name. |
amenityGroups[].amenities[].available | Boolean | Optional | Explicit source availability; false does not mean an extraction failure. |
amenityGroups[].amenities[].description | Text | Optional | Explanatory amenity note. |
rooms[].id | Text | Optional | Native room-tour space ID. |
rooms[].name | Text | Optional | Room name. |
rooms[].features | List of text | Optional | Source descriptions of the room or sleeping space. |
rooms[].images | List of objects | Optional | Images belonging to this room, using the image fields described above. |
host.id | Text | Optional | Native Airbnb user ID, distinct from the public profile ID. |
host.name | Text | Optional | Published host name. |
host.profileId | Text | Optional | Native public profile ID. |
host.profileUrl | URL | Optional | Public host profile link exposed on the room page. |
host.isAirbnbManaged | Boolean | Optional | Public Airbnb-managed-host signal when present. |
host.avatarUrl | URL | Optional | Public host image. |
host.isVerified | Boolean | Optional | Source identity-verification signal. |
host.rating | Number | Optional | Public host rating from the room page. Requires includeReviews: true. |
host.reviewCount | Integer | Optional | Public host review count from the room page. Requires includeReviews: true. |
host.responseRate | Text | Optional | Displayed response-rate label. |
host.responseTime | Text | Optional | Displayed response-time label. |
host.highlights | List of text | Optional | Public listing-page host highlights. |
host.about | Text | Optional | Actual host introduction, when published. |
location.title | Text | Optional | Complete source location label. |
location.city | Text | Optional | City from Airbnb's localized location value. |
location.neighbourhood | Text | Optional | Published neighborhood name. |
location.description | Text | Optional | Public area description. |
location.isExactLocation | Boolean | Optional | Whether Airbnb labels the map location as exact. |
location.isVerified | Boolean | Optional | Source location-verification signal. |
location.address.addressLocality | Text | Optional | Locality explicitly provided in listing structured data. |
location.details | List of objects | Optional | Complete location sections with available title and text, including neighborhood highlights and getting around. |
houseRuleGroups[].title, safetyGroups[].title | Text | Optional | Source rule or safety category. |
houseRuleGroups[].items, safetyGroups[].items | List of objects | Optional | Complete items with available title and description. |
ratingDistribution[].stars | Integer | Optional | Star category, from 1 to 5. |
ratingDistribution[].proportion | Number | Optional | Source fraction, from 0 to 1; not an invented review count. |
reviewTopics[].name | Text | Optional | Published review-topic label. |
reviewTopics[].count | Integer | Optional | Source topic count. |
availability[].date | Text (date) | Optional | Calendar day in YYYY-MM-DD. |
availability[].available | Boolean | Optional | Source day availability. |
availability[].availableForCheckin | Boolean | Optional | Whether check-in is allowed on this day. |
availability[].availableForCheckout | Boolean | Optional | Whether checkout is allowed on this day. |
availability[].bookable | Boolean | Optional | Source bookability flag, omitted when unknown. |
availability[].minNights, availability[].maxNights | Integer | Optional | Published stay-length bounds for this day. |
cancellationTerms[].refundType | Text | Optional | Refund milestone label. |
cancellationTerms[].refundTerm | Text | Optional | Refund conditions. |
cancellationTerms[].deadline | Text | Optional | Source deadline date and time label. |
cancellationTerms[].deadlineRelation | Text | Optional | Source relation such as Before or After. |
cancellationTerms[].description | Text | Optional | Full published milestone explanation. |
stay.checkIn, stay.checkOut | Text (date) | Optional | Dates displayed for the tested stay. |
stay.guests | Integer | Optional | Displayed guest count. |
stay.nights | Integer | Optional | Nights shown with the price. |
stay.currencySymbol | Text | Optional | Actual displayed currency symbol; no ISO currency code is guessed. |
stay.available | Boolean | Optional | Whether the page offers Reserve or explicitly says those dates are unavailable. |
stay.priceBreakdown | List of objects | Optional | Public price-details line items, with source label and price text. Individual taxes or fees appear only if the popover publishes them. |
stay.priceIncludesFees | Boolean | Optional | Whether the page explicitly states that the displayed price includes all fees. |
listingHighlights[].title, listingHighlights[].description | Text | Optional | Source highlight heading and its available explanation. |
sleepingArrangements[].name | Text | Optional | Source sleeping-space name. |
sleepingArrangements[].beds | List of text | Optional | Published bed descriptions for that sleeping space. |
reviews[].hostResponse, reviews[].originalHostResponse, reviews[].hostResponseDate, reviews[].hostResponseAuthor | Text | Optional | Public host reply, its distinct source-language version when returned, date label, and author when returned with an opted-in review. |
Prices and cancellation conditions depend on the displayed stay and Airbnb's region/currency settings. A calendar or Reserve signal is a snapshot, not a booking guarantee. Price-breakdown rows keep the exact source labels and amounts, which may have more precision than a rounded booking-card total. Nightly prices, taxes, and individual fees are not inferred from a stay total. Exact street addresses, contact details, and private host information are not collected. Public host introductions and optional room features may be absent. Listing highlights may use Airbnb's displayed translation. When includeReviews is false, room-page reviews and review-derived detail ratings, topics, and distributions are omitted; search-card rating fields can still appear. The example shows the supported shape with illustrative values; real room tours and calendars retain items returned by the page, while reviews are limited to ten.
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
Run status
The Actor counts only validated listing records whose dataset writes completed.
| Run outcome | Status | What it means |
|---|---|---|
| One or more records saved and collection completed | SUCCEEDED | Run completed with the saved listings. |
| One or more records saved with a page, source, write, or requested room-page enrichment failure | SUCCEEDED with isPartial: true | Run completed with limited results; saved listings remain available. Failed enrichment can make a run limited even when the listing count reaches maxItems. |
| No real listing records saved | FAILED | Includes blocked, empty, or invalid results. No placeholder records are added. |
Output summary
The Output summary link opens the OUTPUT_SUMMARY record in the run's default Key-value store. It is separate from the listing dataset and contains only the three run-level fields below.
{"status": "SUCCEEDED","itemsStored": 3,"isPartial": false}
| Field | Type | Required? | Meaning |
|---|---|---|---|
status | Text | Required | SUCCEEDED when at least one real listing record was saved; otherwise FAILED. |
itemsStored | Nonnegative integer | Required | Count of validated listing records whose dataset writes completed. |
isPartial | Boolean | Required | true when collection or requested room-page enrichment failed and at least one real record was saved. |
An explicit empty search has no real records and therefore fails with itemsStored: 0. The summary write is attempted even after a caught collection failure. If saving the summary itself fails, the run status still follows the completed listing writes.
Tips and access limits
- Use
maxItemsandmaxPagesto keep searches bounded. For search-card results without room-page visits, leavedeepScrapeoff. - If you need richer host, amenity, policy, image, or review fields, enable
deepScrapein search mode. Details that Airbnb does not expose are omitted. - Airbnb may show different results by date, location, region, or account state. This Actor reads public pages and cannot guarantee that every listing or field will be available.
- If Airbnb blocks or challenges a request, the Actor stops that request and reports a failed or limited run. Do not use proxy settings to bypass access controls.
- For help, use the support option on the Actor's Apify Store page.
- Apify may charge for compute or proxy usage under your account plan. Check Apify's current pricing; this README does not quote a fixed price.