Airbnb Scraper - Most Comprehensive avatar

Airbnb Scraper - Most Comprehensive

Pricing

from $0.40 / 1,000 places

Go to Apify Store
Airbnb Scraper - Most Comprehensive

Airbnb Scraper - Most Comprehensive

🔥 ~$0.5/1K places 🔥 Scrape Airbnb listings by URL, listing ID, or location search. Returns full listing details including description, amenities, host info, location, photos, policies, and ratings. Optionally fetches reviews inline.

Pricing

from $0.40 / 1,000 places

Rating

5.0

(1)

Developer

Kai

Kai

Maintained by Community

Actor stats

2

Bookmarked

68

Total users

18

Monthly active users

3.2 hours

Issues response

12 days ago

Last modified

Share

Airbnb Listing Scraper

Collect Airbnb listing details by listing URL, listing ID, place name, or coordinates. Each Dataset item can include property details, amenities, photos, host information, ratings, policies, and reviews.

What each listing can contain

AreaData in a listing item
PropertyListing identity, property type, capacity, rooms, beds, bathrooms, amenities, photos, and house rules
HostHost profile, hosting history, Superhost status, ratings, and co-host data when available
LocationCoordinates, location text, map data, and location-resolution details
ReviewsReview text, ratings, reviewer and host-response fields, dates, and optional media when review collection is enabled

For coordinate searches, the Actor checks returned coordinates against the target. It does the same for a place search when you set maxLocationDeviation. It rejects results beyond that distance. If several complete pages contain only rejected results, the Actor stops that search because Airbnb probably resolved the target to the wrong region.

Choose how to collect listings

Use the target that matches the information that you have:

You haveUseResult
One or more listing URLs or IDslistingsOne item for each unique listing ID
A city, address, or regionlocationListings from an Airbnb place search
Exact latitude and longitudelatitude and longitudeListings around those coordinates

You can combine known listings with one search.

Collect known listings

Collect one listing:

{
"listings": ["https://www.airbnb.com/rooms/36276450"]
}

Collect several listings in one run:

{
"listings": [
"36276450",
"https://www.airbnb.co.uk/rooms/12345678?check_in=2026-06-01"
]
}

Repeated listing IDs produce one item.

Search a place

Search a place and limit the number of results:

{
"location": "San Francisco, CA",
"maxListings": 10
}

Search exact coordinates

Use coordinates when you need to bypass place-name resolution:

{
"latitude": 20.9674,
"longitude": -89.6237,
"maxLocationDeviation": 50,
"maxListings": 10
}

The Actor collects the direct listing and up to five search results:

{
"location": "Austin, TX",
"listings": ["36276450"],
"maxListings": 5,
"includeReviews": true,
"maxReviewsPerListing": 30
}

Add stay filters and reviews

Add stay and property filters to a place or coordinate search:

{
"location": "Miami, FL",
"checkIn": "2026-07-01",
"checkOut": "2026-07-07",
"adults": 2,
"minPrice": 100,
"maxPrice": 500,
"propertyType": ["entire_home"],
"minBedrooms": 2,
"superhostOnly": true,
"instantBook": true,
"maxListings": 20,
"maxSearchPages": 3
}

Add reviews to direct or searched listings:

{
"listings": ["36276450"],
"includeReviews": true,
"maxReviewsPerListing": 50,
"reviewsSortBy": "MOST_RECENT"
}

Input reference

Use one of these target modes:

  • Set listings for a direct listing lookup.
  • Set location for a location search.
  • Set both latitude and longitude for a coordinate search.

You can combine listings with one search mode. Repeated listing IDs produce one record. If location and a complete coordinate pair are both present, the coordinates control the search area. The examples show the settings that apply to each mode.

New runs in Apify Console start with the listing URL from the first direct listing example. API calls do not add a target.

Each block shows settings useful for that target. The field table below is the complete input reference.

Complete direct-listing input

{
"listings": [
"https://www.airbnb.com/rooms/36276450"
],
"checkIn": "2026-10-10",
"checkOut": "2026-10-17",
"adults": 1,
"children": 0,
"infants": 0,
"pets": 0,
"includeReviews": true,
"maxReviewsPerListing": 20,
"reviewsSortBy": "MOST_RECENT"
}

Complete place-search input

{
"location": "Paris, France",
"checkIn": "2026-09-15",
"checkOut": "2026-09-17",
"adults": 2,
"children": 1,
"infants": 1,
"pets": 1,
"minPrice": 1,
"maxPrice": 10000,
"propertyType": [
"entire_home"
],
"minBedrooms": 0,
"minBathrooms": 0,
"minBeds": 0,
"superhostOnly": true,
"instantBook": false,
"maxLocationDeviation": 50,
"maxListings": 1,
"maxSearchPages": 1,
"includeReviews": false,
"maxReviewsPerListing": 20,
"reviewsSortBy": "MOST_RECENT"
}

Complete coordinate-search input

{
"latitude": 48.8566,
"longitude": 2.3522,
"maxLocationDeviation": 20,
"adults": 1,
"children": 0,
"infants": 0,
"pets": 0,
"superhostOnly": false,
"instantBook": false,
"maxListings": 1,
"maxSearchPages": 1,
"includeReviews": false,
"maxReviewsPerListing": 20,
"reviewsSortBy": "MOST_RECENT",
"proxyConfiguration": {
"useApifyProxy": true
}
}

Input fields

FieldTypeDefaultDescription
listingsstring[][]Airbnb listing URLs or numeric listing IDs.
locationstringCity, address, or region to search.
latitudenumberSearch latitude from -90 to 90. Set it with longitude.
longitudenumberSearch longitude from -180 to 180. Set it with latitude.
maxLocationDeviationnumber200Maximum distance in km between the target and accepted results. It applies automatically to coordinate searches and applies to location searches only when you set it. Set 0 to disable this check.
checkInstringCheck-in date in YYYY-MM-DD format.
checkOutstringCheck-out date in YYYY-MM-DD format.
adultsinteger1Number of adults. Minimum value: 1.
childreninteger0Number of children.
infantsinteger0Number of infants.
petsinteger0Number of pets.
minPriceintegerMinimum nightly price.
maxPriceintegerMaximum nightly price.
propertyTypestring[]One or more of entire_home, private_room, shared_room, or hotel_room.
minBedroomsintegerMinimum number of bedrooms.
minBathroomsintegerMinimum number of bathrooms.
minBedsintegerMinimum number of beds.
superhostOnlybooleanfalseReturn listings from Superhosts only.
instantBookbooleanfalseReturn listings with Instant Book only.
maxListingsinteger20Maximum listings to collect from a search. This limit does not remove direct targets.
maxSearchPagesinteger5Maximum search result pages to request.
includeReviewsbooleanfalseFetch reviews and add them to each listing item.
maxReviewsPerListinginteger20Maximum reviews for each listing. Set 0 for no limit.
reviewsSortBystringMOST_RECENTReview order: MOST_RECENT, RATING_DESC, or RATING_ASC.
proxyConfigurationobject{"useApifyProxy":true}Optional connection settings for the run.

Listing record reference

The Actor writes one Dataset item for each returned listing. The examples below use values from collected listings.

The first block is a point-in-time field-shape projection. Long arrays keep one item so the shape remains readable. It is not a complete Dataset item.

Listing item example

Host-response example

This block shows the non-null responder fields.

{
"id": "1462486607453045000",
"reviews": [
{
"id": "1694326420305241919",
"response": "Thank you Dheeraj, glad you enjoyed the home and found everything clean. Regarding the driveway situation, we wish you had reached out to us during your stay as we would have had it resolved immediately. We hope to host you again in the future.",
"localizedRespondedDate": "May 2026",
"responder": {
"firstName": "Crew Collective",
"id": "586739342"
}
}
]
}

Location search example

{
"id": "7253149",
"locationResolution": {
"inputLocation": "Paris, France",
"inputCoordinates": null,
"resolvedLocation": "Paris, France",
"resolvedCenter": {
"latitude": 48.8588549,
"longitude": 2.3470341
},
"resultCentroid": {
"latitude": 48.87064,
"longitude": 2.3745399999999997
},
"deviationKm": 2.4,
"withinThreshold": true
}
}

Coordinate search example

{
"id": "1671993776446695850",
"locationResolution": {
"inputLocation": null,
"inputCoordinates": {
"latitude": 48.8566,
"longitude": 2.3522
},
"resolvedLocation": null,
"resolvedCenter": {
"latitude": 48.8566,
"longitude": 2.3522
},
"resultCentroid": {
"latitude": 48.7957,
"longitude": 2.4257
},
"deviationKm": 8.6,
"withinThreshold": true
}
}

Output variants

CasereviewslocationResolution
Direct listing, reviews disablednullnull
Direct listing, reviews returnedReview arraynull
Reviews requested, no reviews returned[]Depends on the listing origin
Review request failednullDepends on the listing origin
Location search resultnull, [], or a review arrayObject with inputLocation; inputCoordinates is null
Coordinate search resultnull, [], or a review arrayObject with inputCoordinates; inputLocation is null

Field reference

All listing fields are present. Arrays can be empty. The two final fields can be null, as described in the output-variants table.

GroupJSON field contract
Identityid, url, canonicalUrl, and pdpType: string; shareUrl: string or null; isElvisListing: boolean
Title and capacityname, sharingTitle, and propertyType: string; personCapacity: number; embedData: object
Description and mediahtmlDescription: string; descriptionSections, heroImages, photoTourImages, rooms, and sleepingArrangements: object arrays
Amenities and highlightsamenitiesPreview, amenitiesGrouped, and highlights: object arrays
RatingsoverallRating and overallReviewCount: number; isGuestFavorite: boolean; qualityScorePercentile and brandDescription: string or null; categoryRatings, ratingDistribution, reviewTags, and reviewSortOptions: object arrays
Property detailslocation and host: objects; houseRules, houseRulesSections, safetyAndProperty, and safetyAndPropertySections: object arrays
Booking and calendarcancellationPolicyId and maxPlusValue: number or null; cancellationPolicyName: string or null; maxGuestCapacity: number; petsAllowed and canInstantBook: boolean or null; calendarDescriptionItems: string array
Metadata and optional dataseo: object; scrapedAt: string; reviews: review-object array or null; locationResolution: object or null

Nested listing objects

PathChild field contract
embedDataid, name, pictureUrl, and propertyType: string; personCapacity, reviewCount, and starRating: number
descriptionSections[]title: string or null; htmlText: string
heroImages[]id and baseUrl: string; accessibilityLabel: string or null
photoTourImages[]id, baseUrl, and orientation: string; accessibilityLabel, caption, and localizedCaption: string or null; aspectRatio: number; isProfessional: boolean; isVerified: boolean or null
rooms[]title: string; imageIds and highlights: string arrays
sleepingArrangements[]title and subtitle: string; images: object array
sleepingArrangements[].images[]id, baseUrl, and orientation: string; accessibilityLabel: string or null; aspectRatio: number
amenitiesPreview[]title and icon: string; available: boolean
amenitiesGrouped[]groupTitle: string; amenities: object array
amenitiesGrouped[].amenities[]id, title, subtitle, and icon: string; available: boolean
highlights[]title, subtitle, icon, and type: string; highlightValue: string or null
categoryRatings[]categoryType, label, and localizedRating: string; percentage: number
ratingDistribution[]label, localizedRating, and accessibilityLabel: string; percentage: number
reviewTags[]name and localizedName: string; count: number; iconUrl: string or null
reviewSortOptions[]type and title: string
locationlat, lng, defaultZoomLevel, and mapMarkerRadiusInMeters: number; subtitle and mapMarkerType: string; isLocationVerified: boolean; neighborhoodHighlights and gettingAround: string or null; locationDetails: object array
location.locationDetails[]id, displayType, and title: string; htmlText: string or null
hostuserId, contextualUserId, name, titleText, profilePictureUrl, about, and contactHostCopy: string; isSuperhost and isVerified: boolean; yearsHosting, monthsHosting, ratingCount, and ratingAverage: number; stats, hostHighlights, and cohosts: object arrays; hostDetails: string array
host.stats[]label, value, and type: string
host.hostHighlights[]icon and title: string
host.cohosts[]name: string; profilePictureUrl: string or null
houseRules[], safetyAndProperty[]title: string; icon: string or null
houseRulesSections[]title: string; items: object array
houseRulesSections[].items[]title: string; subtitle, icon, and html: string or null
safetyAndPropertySections[]title: string; items: object array
safetyAndPropertySections[].items[]title: string; subtitle and icon: string or null
seotitle and canonicalUrl: string; metaDescription, ogDescription, ogImage, ogTitle, ogType, ogUrl, androidDeeplink, and iphoneDeeplink: string or null; indexInSearchEngines: boolean

Review objects

All fields in a review item are present.

GroupJSON field contract
Review dataid, comments, commentV2, language, createdAt, localizedDate, and ratingAccessibilityLabel: string; rating: number
Peoplereviewer and reviewee: user objects; localizedReviewerLocation: string; responder: object or null
Highlights and responsereviewHighlight, highlightType, response, and localizedRespondedDate: string or null
Listing contextroomTypeListingTitle, roomTypeListingId, collectionTag, and channel: string or null
Media and highlightsreviewMediaItems: array of source-defined JSON values; reviewPhotoUrls and highlightedReviewSentence: string arrays; highlightReviewMentioned: string or null; isHostHighlightedReview: boolean or null
Localized contentlocalizedComments and localizedCommentsLanguage: string; needsTranslation: boolean; translationDisclaimer, localizedResponse, and responseDisclaimer: string or null
User objectid, contextualUserId, firstName, hostName, pictureUrl, and profilePath: string; deleted and isSuperhost: boolean
Non-null responderfirstName and id: string

Airbnb defines the child keys in reviewMediaItems; these keys can differ between items.

Location-resolution object

FieldJSON type and nullability
inputLocation, resolvedLocationstring or null
inputCoordinates, resolvedCenter, resultCentroidcoordinate object or null; each non-null object has number latitude and longitude
deviationKmnumber or null
withinThresholdboolean

Result behaviour

  • An empty input is valid and produces no Dataset items. An input with only latitude or only longitude and no other target has the same result. A valid search can also return no matching listings.
  • maxLocationDeviation compares results with an approximate resolved search centre, so it is not exact geofencing.
  • reviews: null means that reviews were disabled or could not be collected. An empty array means that review collection completed without review items.
  • petsAllowed and canInstantBook can be null. A host can still state the pet policy in houseRules. canInstantBook reports listing data; it does not control the instantBook input filter.
  • isGuestFavorite comes from Airbnb's Guest Favorite badge. It is independent of the highlights list.
  • Rating categories, distributions, and qualityScorePercentile are present only when Airbnb supplies them. qualityScorePercentile uses Airbnb's source bucket, such as TOP_5. Repeated listing IDs are returned once.
  • Airbnb can change or remove public values. Treat URLs, prices, availability, ratings, and review totals as a point-in-time result.