Airbnb Listing Price & Location Finder
Search Airbnb by location and stay dates for listing price, rating, Superhost and verification status, GPS coordinates, and photos per property.
Input schema
Input fields, types, required flags, descriptions, defaults, and prefills come from the published definition. Prefill examples are distinct from defaults.
| Field | Type | Required | Description |
|---|---|---|---|
mode | string | optional | Search discovers listings by location or map area. Details loads the listing URLs or IDs you provide. |
location | string | optional | City, region, country or neighborhood, e.g. New York, Paris, SoHo. Airbnb's own location lookup validates the name before searching (mode=search). |
placeId | string | optional | Optional Google/Airbnb place ID (e.g. ChIJOwg_06VPwokRYv534QaPC8g). Takes precedence over the resolved location and skips text matching (mode=search). |
Show all input fields
| Field | Type | Required | Description |
|---|---|---|---|
mode | string | optional | Search discovers listings by location or map area. Details loads the listing URLs or IDs you provide. |
location | string | optional | City, region, country or neighborhood, e.g. New York, Paris, SoHo. Airbnb's own location lookup validates the name before searching (mode=search). |
placeId | string | optional | Optional Google/Airbnb place ID (e.g. ChIJOwg_06VPwokRYv534QaPC8g). Takes precedence over the resolved location and skips text matching (mode=search). |
neighborhood | string | optional | Optional neighborhood to combine with Location, e.g. SoHo + New York (mode=search). |
bbox | object | optional | Search inside a map rectangle instead of a named location. Use decimal degrees: swLat, swLng (south-west corner) and neLat, neLng (north-east corner), plus an optional zoom (1-22). Example: {"swLat": 40.7075, "swLng": -74.0135, "neLat": 40.7904, "neLng": -73.9591, "zoom": 13} (mode=search). |
listingUrls | array | optional | Airbnb room URLs, e.g. https://www.airbnb.com/rooms/23222680 (mode=details). |
listingIds | array | optional | Numeric Airbnb listing IDs, e.g. 23222680. You can mix these with listing URLs (mode=details). |
checkIn | string | optional | Stay start date in YYYY-MM-DD format. Leave both dates empty to use Airbnb's displayed quote (search) or to skip the price quote (details). |
checkOut | string | optional | Stay end date in YYYY-MM-DD format. Must be after the check-in date. |
adults | integer | optional | Number of adult guests (1-16). |
children | integer | optional | Number of children aged 2-12 (0-15). |
infants | integer | optional | Number of infants under 2 (0-5). |
pets | integer | optional | Number of pets (0-5). |
minPrice | integer | optional | Lowest nightly price to include, in the selected currency. 0 means no minimum. |
maxPrice | integer | optional | Highest nightly price to include, in the selected currency. 0 means no maximum. |
roomType | string | optional | Restrict results to one Airbnb room type. |
propertyType | string | optional | Restrict results to one Airbnb property type. |
minBedrooms | integer | optional | Minimum number of bedrooms. 0 means no minimum. |
minBeds | integer | optional | Minimum number of beds. 0 means no minimum. |
minBathrooms | integer | optional | Minimum number of bathrooms. 0 means no minimum. |
maxListings | integer | optional | Hard cap on records (1-300). Airbnb pages hold 40 results each; duplicate cards are removed automatically. |
includeDetails | boolean | optional | Adds the listing page and an exact stay quote: host, amenities, photos, description, fees and availability. Costs extra requests per listing. |
includeReviews | boolean | optional | Fetch recent guest reviews for each listing (up to maxReviews). |
maxReviews | integer | optional | Reviews returned per listing (1-24). |
includeCalendar | boolean | optional | Fetch the day-by-day availability calendar for each listing. |
calendarMonths | integer | optional | Number of months to return, starting with the current month (1-12). |
currency | string | optional | Currency for prices. Airbnb returns quotes in this currency. |
locale | string | optional | Language/region used for Airbnb labels, dates and localized text. |
proxyConfiguration | object | optional | Optional. Leave empty and the actor connects directly, then switches to an automatic Apify proxy only if Airbnb blocks a request. |
Download the published input schema
View complete JSON
{
"description": "Search Airbnb stays by city, neighborhood, place ID or map area, or load specific listing URLs. Get nightly and stay-total prices, fees, host details, amenities, reviews and a 12-month availability calendar.",
"properties": {
"adults": {
"default": 1,
"description": "Number of adult guests (1-16).",
"maximum": 16,
"minimum": 1,
"title": "Adults",
"type": "integer"
},
"bbox": {
"description": "Search inside a map rectangle instead of a named location. Use decimal degrees: swLat, swLng (south-west corner) and neLat, neLng (north-east corner), plus an optional zoom (1-22). Example: {\"swLat\": 40.7075, \"swLng\": -74.0135, \"neLat\": 40.7904, \"neLng\": -73.9591, \"zoom\": 13} (mode=search).",
"editor": "json",
"title": "Map bounding box",
"type": "object"
},
"calendarMonths": {
"default": 12,
"description": "Number of months to return, starting with the current month (1-12).",
"maximum": 12,
"minimum": 1,
"title": "Calendar months",
"type": "integer"
},
"checkIn": {
"description": "Stay start date in YYYY-MM-DD format. Leave both dates empty to use Airbnb's displayed quote (search) or to skip the price quote (details).",
"editor": "textfield",
"nullable": true,
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"sectionCaption": "Stay dates and guests",
"title": "Check-in date",
"type": "string"
},
"checkOut": {
"description": "Stay end date in YYYY-MM-DD format. Must be after the check-in date.",
"editor": "textfield",
"nullable": true,
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"title": "Check-out date",
"type": "string"
},
"children": {
"default": 0,
"description": "Number of children aged 2-12 (0-15).",
"maximum": 15,
"minimum": 0,
"title": "Children",
"type": "integer"
},
"currency": {
"default": "USD",
"description": "Currency for prices. Airbnb returns quotes in this currency.",
"editor": "select",
"enum": [
"USD",
"EUR",
"GBP",
"JPY",
"CAD",
"AUD",
"NZD",
"CHF",
"SEK",
"NOK",
"DKK",
"PLN",
"CZK",
"HUF",
"RON",
"BGN",
"TRY",
"RUB",
"UAH",
"ILS",
"AED",
"SAR",
"QAR",
"KWD",
"BHD",
"OMR",
"EGP",
"ZAR",
"NGN",
"KES",
"GHS",
"MAD",
"INR",
"PKR",
"BDT",
"LKR",
"NPR",
"CNY",
"HKD",
"TWD",
"SGD",
"MYR",
"THB",
"IDR",
"PHP",
"VND",
"KRW",
"MXN",
"BRL",
"ARS",
"CLP",
"COP",
"PEN",
"UYU",
"CRC",
"DOP"
],
"enumTitles": [
"US dollar",
"Euro",
"British pound",
"Japanese yen",
"Canadian dollar",
"Australian dollar",
"New Zealand dollar",
"Swiss franc",
"Swedish krona",
"Norwegian krone",
"Danish krone",
"Polish zloty",
"Czech koruna",
"Hungarian forint",
"Romanian leu",
"Bulgarian lev",
"Turkish lira",
"Russian ruble",
"Ukrainian hryvnia",
"Israeli shekel",
"UAE dirham",
"Saudi riyal",
"Qatari riyal",
"Kuwaiti dinar",
"Bahraini dinar",
"Omani rial",
"Egyptian pound",
"South African rand",
"Nigerian naira",
"Kenyan shilling",
"Ghanaian cedi",
"Moroccan dirham",
"Indian rupee",
"Pakistani rupee",
"Bangladeshi taka",
"Sri Lankan rupee",
"Nepalese rupee",
"Chinese yuan",
"Hong Kong dollar",
"Taiwan dollar",
"Singapore dollar",
"Malaysian ringgit",
"Thai baht",
"Indonesian rupiah",
"Philippine peso",
"Vietnamese dong",
"South Korean won",
"Mexican peso",
"Brazilian real",
"Argentine peso",
"Chilean peso",
"Colombian peso",
"Peruvian sol",
"Uruguayan peso",
"Costa Rican colon",
"Dominican peso"
],
"sectionCaption": "Language and network",
"title": "Currency",
"type": "string"
},
"includeCalendar": {
"default": false,
"description": "Fetch the day-by-day availability calendar for each listing.",
"prefill": false,
"title": "Include availability calendar",
"type": "boolean"
},
"includeDetails": {
"default": false,
"description": "Adds the listing page and an exact stay quote: host, amenities, photos, description, fees and availability. Costs extra requests per listing.",
"prefill": false,
"sectionCaption": "Detail enrichment",
"title": "Include full listing details",
"type": "boolean"
},
"includeReviews": {
"default": false,
"description": "Fetch recent guest reviews for each listing (up to maxReviews).",
"prefill": false,
"title": "Include reviews",
"type": "boolean"
},
"infants": {
"default": 0,
"description": "Number of infants under 2 (0-5).",
"maximum": 5,
"minimum": 0,
"title": "Infants",
"type": "integer"
},
"listingIds": {
"description": "Numeric Airbnb listing IDs, e.g. 23222680. You can mix these with listing URLs (mode=details).",
"editor": "stringList",
"title": "Listing IDs",
"type": "array"
},
"listingUrls": {
"description": "Airbnb room URLs, e.g. https://www.airbnb.com/rooms/23222680 (mode=details).",
"editor": "stringList",
"sectionCaption": "Specific listings",
"title": "Listing URLs",
"type": "array"
},
"locale": {
"default": "en",
"description": "Language/region used for Airbnb labels, dates and localized text.",
"editor": "select",
"enum": [
"en",
"en-US",
"en-GB",
"en-CA",
"en-AU",
"de-DE",
"fr-FR",
"es-ES",
"es-MX",
"it-IT",
"pt-BR",
"pt-PT",
"nl-NL",
"sv-SE",
"da-DK",
"nb-NO",
"fi-FI",
"pl-PL",
"cs-CZ",
"hu-HU",
"ro-RO",
"el-GR",
"tr-TR",
"ru-RU",
"uk-UA",
"he-IL",
"ar",
"hi-IN",
"id-ID",
"th-TH",
"vi-VN",
"ja-JP",
"ko-KR",
"zh-CN",
"zh-TW"
],
"enumTitles": [
"English",
"English (United States)",
"English (United Kingdom)",
"English (Canada)",
"English (Australia)",
"German",
"French",
"Spanish (Spain)",
"Spanish (Mexico)",
"Italian",
"Portuguese (Brazil)",
"Portuguese (Portugal)",
"Dutch",
"Swedish",
"Danish",
"Norwegian",
"Finnish",
"Polish",
"Czech",
"Hungarian",
"Romanian",
"Greek",
"Turkish",
"Russian",
"Ukrainian",
"Hebrew",
"Arabic",
"Hindi",
"Indonesian",
"Thai",
"Vietnamese",
"Japanese",
"Korean",
"Chinese (Simplified)",
"Chinese (Traditional)"
],
"title": "Locale",
"type": "string"
},
"location": {
"description": "City, region, country or neighborhood, e.g. New York, Paris, SoHo. Airbnb's own location lookup validates the name before searching (mode=search).",
"editor": "textfield",
"prefill": "New York",
"title": "Location",
"type": "string"
},
"maxListings": {
"default": 20,
"description": "Hard cap on records (1-300). Airbnb pages hold 40 results each; duplicate cards are removed automatically.",
"maximum": 300,
"minimum": 1,
"prefill": 3,
"sectionCaption": "Output",
"title": "Maximum listings",
"type": "integer"
},
"maxPrice": {
"default": 0,
"description": "Highest nightly price to include, in the selected currency. 0 means no maximum.",
"maximum": 100000,
"minimum": 0,
"title": "Maximum nightly price",
"type": "integer"
},
"maxReviews": {
"default": 12,
"description": "Reviews returned per listing (1-24).",
"maximum": 24,
"minimum": 1,
"title": "Maximum reviews per listing",
"type": "integer"
},
"minBathrooms": {
"default": 0,
"description": "Minimum number of bathrooms. 0 means no minimum.",
"maximum": 20,
"minimum": 0,
"title": "Minimum bathrooms",
"type": "integer"
},
"minBedrooms": {
"default": 0,
"description": "Minimum number of bedrooms. 0 means no minimum.",
"maximum": 20,
"minimum": 0,
"title": "Minimum bedrooms",
"type": "integer"
},
"minBeds": {
"default": 0,
"description": "Minimum number of beds. 0 means no minimum.",
"maximum": 30,
"minimum": 0,
"title": "Minimum beds",
"type": "integer"
},
"minPrice": {
"default": 0,
"description": "Lowest nightly price to include, in the selected currency. 0 means no minimum.",
"maximum": 100000,
"minimum": 0,
"sectionCaption": "Filters",
"title": "Minimum nightly price",
"type": "integer"
},
"mode": {
"default": "search",
"description": "Search discovers listings by location or map area. Details loads the listing URLs or IDs you provide.",
"editor": "select",
"enum": [
"search",
"details"
],
"enumTitles": [
"Search by location or map area",
"Load specific listing URLs or IDs"
],
"prefill": "search",
"sectionCaption": "Search",
"title": "Mode",
"type": "string"
},
"neighborhood": {
"description": "Optional neighborhood to combine with Location, e.g. SoHo + New York (mode=search).",
"editor": "textfield",
"title": "Neighborhood",
"type": "string"
},
"pets": {
"default": 0,
"description": "Number of pets (0-5).",
"maximum": 5,
"minimum": 0,
"title": "Pets",
"type": "integer"
},
"placeId": {
"description": "Optional Google/Airbnb place ID (e.g. ChIJOwg_06VPwokRYv534QaPC8g). Takes precedence over the resolved location and skips text matching (mode=search).",
"editor": "textfield",
"title": "Airbnb place ID",
"type": "string"
},
"propertyType": {
"default": "Any",
"description": "Restrict results to one Airbnb property type.",
"editor": "select",
"enum": [
"Any",
"Apartment",
"House",
"Villa",
"Condominium",
"Loft",
"Guest suite",
"Guesthouse",
"Hotel",
"Resort",
"Cottage",
"Cabin",
"Bungalow",
"Townhouse",
"Tiny home",
"Boat",
"Barn",
"Camper/RV",
"Farm stay",
"Castle",
"Cave",
"Dome",
"Container",
"Treehouse",
"Yurt",
"Serviced apartment"
],
"enumTitles": [
"Any property type",
"Apartment",
"House",
"Villa",
"Condominium",
"Loft",
"Guest suite",
"Guesthouse",
"Hotel",
"Resort",
"Cottage",
"Cabin",
"Bungalow",
"Townhouse",
"Tiny home",
"Boat",
"Barn",
"Camper/RV",
"Farm stay",
"Castle",
"Cave",
"Dome",
"Container",
"Treehouse",
"Yurt",
"Serviced apartment"
],
"title": "Property type",
"type": "string"
},
"proxyConfiguration": {
"description": "Optional. Leave empty and the actor connects directly, then switches to an automatic Apify proxy only if Airbnb blocks a request.",
"editor": "proxy",
"title": "Proxy configuration",
"type": "object"
},
"roomType": {
"default": "Any",
"description": "Restrict results to one Airbnb room type.",
"editor": "select",
"enum": [
"Any",
"Entire home/apt",
"Private room",
"Shared room",
"Hotel room"
],
"enumTitles": [
"Any room type",
"Entire home or apartment",
"Private room",
"Shared room",
"Hotel room"
],
"title": "Room type",
"type": "string"
}
},
"schemaVersion": 1,
"title": "Airbnb Stay Finder: Nightly Rates, Fees & Availability",
"type": "object"
}
Output schema
Published result links and storage locations. This schema is not an exhaustive contract for every field in a dataset record.
| Field | Type | Required | Description |
|---|---|---|---|
listings | string | optional | Dataset containing every scraped Airbnb listing. Search-only rows carry prices from the search card; detail-enriched rows add host, amenities, description, exact quote, availability, reviews and calendar. |
Download the published output schema
View complete JSON
{
"actorOutputSchemaVersion": 1,
"description": "Airbnb listings with nightly and stay-total prices, currency, fees, coordinates, room and property type, host details, amenities, photos, description, availability, optional reviews and an optional 12-month calendar.",
"properties": {
"listings": {
"description": "Dataset containing every scraped Airbnb listing. Search-only rows carry prices from the search card; detail-enriched rows add host, amenities, description, exact quote, availability, reviews and calendar.",
"template": "{{links.apiDefaultDatasetUrl}}/items",
"title": "Airbnb listings",
"type": "string"
}
},
"title": "Airbnb Stay Finder: Nightly Rates, Fees & Availability Output"
}
Dataset schema
Published dataset views and any declared field definitions. A view can select only a subset of the returned record fields.
Download the published dataset schema
View complete JSON
{
"actorSpecification": 1,
"views": {
"detailed": {
"display": {
"component": "table",
"properties": {
"amenities": {
"format": "array",
"label": "Amenities"
},
"availability": {
"format": "text",
"label": "Availability"
},
"badges": {
"format": "array",
"label": "Badges"
},
"calendar": {
"format": "array",
"label": "Calendar"
},
"currency": {
"format": "text",
"label": "Currency"
},
"description": {
"format": "text",
"label": "Description"
},
"host": {
"format": "text",
"label": "Host"
},
"hostId": {
"format": "text",
"label": "Host ID"
},
"id": {
"format": "text",
"label": "Listing ID"
},
"images": {
"format": "array",
"label": "Images"
},
"isSuperhost": {
"format": "boolean",
"label": "Superhost"
},
"isVerified": {
"format": "boolean",
"label": "Verified"
},
"lat": {
"format": "number",
"label": "Latitude"
},
"lng": {
"format": "number",
"label": "Longitude"
},
"location": {
"format": "text",
"label": "Location"
},
"name": {
"format": "text",
"label": "Name"
},
"nightlyPrice": {
"format": "number",
"label": "Nightly price"
},
"nights": {
"format": "number",
"label": "Nights"
},
"priceIncludesFees": {
"format": "boolean",
"label": "Fees included"
},
"priceQualifier": {
"format": "text",
"label": "Price qualifier"
},
"propertyType": {
"format": "text",
"label": "Property type"
},
"rating": {
"format": "number",
"label": "Rating"
},
"reviewCount": {
"format": "number",
"label": "Reviews"
},
"reviews": {
"format": "array",
"label": "Reviews"
},
"roomType": {
"format": "text",
"label": "Room type"
},
"scrapedAt": {
"format": "text",
"label": "Scraped at"
},
"sourceUrl": {
"format": "link",
"label": "Source URL"
},
"totalPrice": {
"format": "number",
"label": "Stay total"
},
"type": {
"format": "text",
"label": "Type"
},
"url": {
"format": "link",
"label": "URL"
}
}
},
"title": "Detailed",
"transformation": {
"fields": [
"id",
"url",
"name",
"type",
"roomType",
"propertyType",
"location",
"lat",
"lng",
"nightlyPrice",
"totalPrice",
"currency",
"nights",
"priceQualifier",
"priceIncludesFees",
"rating",
"reviewCount",
"host",
"hostId",
"isSuperhost",
"isVerified",
"badges",
"amenities",
"description",
"images",
"availability",
"reviews",
"calendar",
"sourceUrl",
"scrapedAt"
]
}
},
"overview": {
"display": {
"component": "table",
"properties": {
"currency": {
"format": "text",
"label": "Currency"
},
"location": {
"format": "text",
"label": "Location"
},
"name": {
"format": "text",
"label": "Name"
},
"nightlyPrice": {
"format": "number",
"label": "Nightly price"
},
"rating": {
"format": "number",
"label": "Rating"
},
"reviewCount": {
"format": "number",
"label": "Reviews"
},
"roomType": {
"format": "text",
"label": "Room type"
},
"totalPrice": {
"format": "number",
"label": "Stay total"
},
"url": {
"format": "link",
"label": "URL"
}
}
},
"title": "Listings",
"transformation": {
"fields": [
"name",
"nightlyPrice",
"totalPrice",
"currency",
"rating",
"reviewCount",
"location",
"roomType",
"url"
]
}
}
}
}
Key-value schema
Published key-value store definitions, when provided by this build.
This definition is not present in the default published build. See the published README for available documentation.
Published README
Read the full published documentation
Airbnb Stay Finder: Nightly Rates, Fees & Availability
Collect Airbnb stays with the numbers that matter: the nightly rate, the stay total for your dates, the fee lines Airbnb shows, the host, amenities, coordinates, availability and optional guest reviews — for a whole city or for one listing you already have the link to.
Unlike search-card-only scrapers, this actor can follow every listing into its detail page, request the exact stay quote for your dates and guests, and return a 12-month day-by-day availability calendar. No Airbnb account, login or cookie is needed.
What this actor does
- Two modes:
searchfor a location, place ID or map rectangle;detailsfor listing URLs and IDs you supply - Real price model: separate
nightlyPrice,totalPrice,nights,currency,priceQualifier, fee lines and whether Airbnb says fees are included - Cursor pagination: 40 Airbnb cards per page, de-duplicated by listing ID, up to 300 records
- Filters: dates, guests, nightly price range, room type, property type, bedrooms, beds and bathrooms
- Optional enrichment: full detail page (host, amenities, photos, description), stay quote, reviews and a 12-month calendar
- Global pricing: 56 currencies and 35 locales, so prices are not forced into USD or GBP
- Empty fields are omitted — records never contain
null, empty strings or empty arrays
Output per listing
id— numeric Airbnb listing IDurl— direct listing page URLname— listing or room nametype— the category line Airbnb shows, e.g.Apartment in North BergenroomType—Entire home/apt,Private room,Shared roomorHotel roompropertyType— apartment, house, hotel, villa, etc. (detail mode)location— city or neighborhoodlat,lng— public, approximate coordinates (never the exact address)nightlyPrice,totalPrice,currency,nights— nightly rate and stay total for the selected datespriceQualifier— what the displayed quote covers, e.g.for 5 nightspriceBreakdown— the price lines Airbnb exposes (nightly line, cleaning/resort fees, discounts)priceIncludesFees—truewhen Airbnb marks the quote as including all feestotalBeforeTaxes— when Airbnb exposes a “total before taxes” lineoriginalPrice,discount— pre-discount quote and saving, when Airbnb shows onerating,reviewCount— overall guest rating and number of reviewsimages,thumbnail— listing photo URLshost,hostId,hostPhoto,hostRating,hostReviewCount— host details (detail mode)isSuperhost,isVerified— host statusbadges,isGuestFavorite— Airbnb badges shown on the search cardamenities,amenitiesUnavailable— included and explicitly unavailable amenities (detail mode)description— listing description with HTML removed (detail mode)personCapacity— maximum guestsavailability—isAvailable,canInstantBookand any unavailability reason for the requested datesminNights,maxNights— available inside each calendar dayreviews— optional recent reviews with rating, text, date, reviewer and host responsecalendar— optional day-by-day availability for up to 12 monthscheckIn,checkOut— the stay dates used for the quotesourceUrl— the search page or listing page that produced the recordscrapedAt,recordType: "listing"
Compatibility aliases are also kept for older integrations: price, photos, latitude, longitude and searchUrl.
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode |
string | search |
search or details |
location |
string | New York |
City, region, country or neighborhood (mode=search) |
placeId |
string | – | Airbnb/Google place ID; skips text matching (mode=search) |
neighborhood |
string | – | Optional neighborhood combined with location (mode=search) |
bbox |
object | – | Map rectangle: swLat, swLng, neLat, neLng, optional zoom (mode=search) |
listingUrls |
array | – | Airbnb room URLs (mode=details) |
listingIds |
array | – | Numeric listing IDs (mode=details) |
checkIn, checkOut |
string | – | Stay dates in YYYY-MM-DD; both or neither |
adults |
integer | 1 |
Adults, 1–16 |
children |
integer | 0 |
Children, 0–15 |
infants |
integer | 0 |
Infants, 0–5 |
pets |
integer | 0 |
Pets, 0–5 |
minPrice, maxPrice |
integer | 0 |
Nightly price range; 0 means no limit |
roomType |
string | Any |
Any, Entire home/apt, Private room, Shared room, Hotel room |
propertyType |
string | Any |
Airbnb property type, e.g. Apartment, House, Hotel |
minBedrooms, minBeds, minBathrooms |
integer | 0 |
Minimum counts; 0 means no minimum |
maxListings |
integer | 20 |
Hard cap, 1–300 (prefill: 5) |
includeDetails |
boolean | false |
Fetch each listing page and exact stay quote |
includeReviews |
boolean | false |
Add recent guest reviews |
maxReviews |
integer | 12 |
Reviews per listing, 1–24 |
includeCalendar |
boolean | false |
Add the availability calendar |
calendarMonths |
integer | 12 |
Calendar length, 1–12 months |
currency |
string | USD |
One of 56 supported currencies |
locale |
string | en |
Language/region for labels and dates |
proxyConfiguration |
object | – | Optional; normally leave empty |
Example: cheapest useful run
{
"location": "New York",
"maxListings": 5
}
Example: a full city scan with filters
{
"location": "Lisbon, Portugal",
"checkIn": "2027-05-10",
"checkOut": "2027-05-17",
"adults": 2,
"minPrice": 80,
"maxPrice": 250,
"roomType": "Entire home/apt",
"minBedrooms": 1,
"maxListings": 120,
"currency": "EUR",
"locale": "pt-PT"
}
Example: exact detail, quote, reviews and calendar
{
"mode": "details",
"listingUrls": ["https://www.airbnb.com/rooms/23222680"],
"checkIn": "2027-03-04",
"checkOut": "2027-03-09",
"adults": 2,
"includeReviews": true,
"maxReviews": 24,
"includeCalendar": true,
"calendarMonths": 6,
"currency": "USD"
}
Example: map rectangle instead of a city name
{
"bbox": {
"swLat": 40.7075,
"swLng": -74.0135,
"neLat": 40.7904,
"neLng": -73.9591,
"zoom": 13
},
"checkIn": "2027-04-01",
"checkOut": "2027-04-04",
"adults": 2,
"maxListings": 80,
"includeDetails": true
}
Use cases
- Short-term rental pricing — compare nightly rates and stay totals across a neighborhood before setting your own calendar
- Travel research — export a city's stays with ratings, room type and amenities into a spreadsheet or BI tool
- Market monitoring — re-run the same dates monthly to track rate and availability changes
- Host competitive analysis — benchmark your listing against nearby Superhosts with similar capacity
- Investment screening — map approximate coordinates to study short-term rental density by area
- Review mining — pull recent guest feedback for a shortlist of properties
FAQ
Is nightlyPrice the same as the number on the search card?
Usually not. Airbnb's search card shows the stay total for the selected dates. totalPrice is that quote; nightlyPrice is parsed from Airbnb's own nightly line (for example, 5 nights x $335.80). When you provide dates, both refer to those exact dates. Without dates, Airbnb still returns a five-night display quote, which the actor labels with nights: 5.
Are all fees included in totalPrice?
Airbnb's quote can include cleaning, service and resort fees, and sometimes a “Prices include all fees” notice. The actor exposes priceBreakdown and priceIncludesFees so you can see what Airbnb included. Taxes and local charges can still vary by destination and are not always part of the displayed quote; treat totalPrice as Airbnb's quoted stay price, not a guaranteed checkout total.
Why is the price missing on some records?
In details mode without dates, Airbnb does not show a stay price. Those records still include the listing data. Add checkIn and checkOut to get a quote. In search mode, a small number of cards legitimately omit the primary price line; the actor falls back to Airbnb's nightly explanation when available.
How many listings can I get?
maxListings is capped at 300. Airbnb returns 40 cards per page and de-duplicates/reorders between pages, so a deep search typically yields around 230–240 unique listings per query. Use different neighborhoods, map rectangles or price ranges to cover more of a market. The actor never claims “all listings”.
Why did my location fail?
Airbnb returns a generic feed for gibberish queries instead of zero results. The actor validates the location through Airbnb's own autocomplete and fails with a clear message when nothing matches, so you never receive unrelated rows. Neighborhoods, cities, regions and countries all work; you can also supply a placeId or a bbox.
Do I need a proxy or an Airbnb account?
No. The actor reads Airbnb's public pages and GraphQL responses without cookies or login. It connects directly first; if Airbnb blocks a request, it automatically retries through an Apify proxy and then a browser. Nothing needs to be configured.
Why are coordinates approximate?
Airbnb publishes approximate map coordinates before booking to protect host privacy. Use them for area analysis, not for deriving a street address.
Can I get per-day prices in the calendar?
The availability calendar reports whether each date is available, check-in/check-out eligibility and min/max nights. Airbnb does not expose a per-day price in that endpoint. For a price on specific dates, set checkIn/checkOut and use the stay quote.
Is this affiliated with Airbnb?
No. This is an independent, third-party actor that reads publicly accessible Airbnb pages and responses. It is not affiliated with or endorsed by Airbnb.
Python quickstart
Use a schema-derived input and the Python standard library to start a run. An Apify account and token are required for execution.
Source build zfEcct44bLImtWJsa. Documentation is regenerated from the default published build; private drafts are not included.