Airbnb Scraper - Search & Listing Details avatar

Airbnb Scraper - Search & Listing Details

Pricing

from $2.20 / 1,000 listings

Go to Apify Store
Airbnb Scraper - Search & Listing Details

Airbnb Scraper - Search & Listing Details

Search Airbnb by location and extract listing details, host info, reviews, photos, and optional availability calendars.

Pricing

from $2.20 / 1,000 listings

Rating

0.0

(0)

Developer

Farhan Ali

Farhan Ali

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Airbnb Scraper - Search & Listing Details creates a structured dataset of short-term rental listings collected from Airbnb. Each dataset item represents one listing and can include pricing, amenities, host information, ratings and reviews, images, bedroom and bathroom details, and location data. Query the source using one or more location search terms, optionally enable listing details, host info, calendar, and reviews, control the result limit with maxItems, and retrieve records through the Apify Dataset API or export them as JSON, CSV, Excel, XML, or HTML.

Dataset at a glance

PropertyValue
Sourceairbnb.com (public listing pages)
Record unitOne short-term rental listing
Input methodsLocation search queries (searchQueries)
Main identifiersidentifier (Airbnb listing ID), url
DeliveryApify Dataset and API
Export formatsJSON, CSV, Excel, XML, HTML
Update modelFresh records per Actor run
Pricing$5 per 1,000 listings (plus optional enrichments)

Coverage and available records

The Actor discovers listings by location search query and collects a record for each listing it finds.

  • Search-based discovery: Pass one or more location queries such as newyork, paris, or tokyo apartment. Each query is resolved into matching listings automatically; no manual URL collection is needed.
  • Result limits: maxItems caps the total number of listings collected (0 = unlimited). maxPages caps how many search result pages are scanned (0 = unlimited).
  • Optional enrichments (each enabled independently):
    • listingDetails — full listing details (name, description, photos, amenities, location, ratings).
    • hostInfo — host profile (name, photo, superhost status, stats).
    • listingCalendar — a 12-month availability calendar.
    • listingReviews — guest reviews, capped per listing by maxReviews (default 10).
  • Record types: The base record carries listing identifiers, headline, description, images, location, and the supplement (policy) fields. Detail, host, calendar, and review fields appear only when their toggle is enabled.

Known exclusions: content Airbnb shows only behind login is not collected; each run captures page state at run time (no historical snapshots); exact addresses are only returned when the listing exposes them.

Data dictionary

Field names below match dataset record JSON properties exactly.

FieldTypeNullableDescriptionExample
identifierstringNoAirbnb listing ID; best stable deduplication key1234567890123456789
urlstringNoCanonical listing URLhttps://www.airbnb.com/rooms/1234567890123456789
activebooleanYesWhether the listing is currently activetrue
namestringYesListing titleCozy Studio in Midtown East
headlinestringYesListing headlineStunning Manhattan studio with skyline views
descriptionstringYesFull property descriptionLong-form listing copy
storystringYesHost-provided story textLong-form host copy
unitobjectYesProperty type info: {name, category, active}See example record
imagesarrayYesPhoto objects: {identifier, url, title}See example record
locationobjectYes{address, coordinates, show_exact}See example record
hostobjectYes{host, superhost, verified, stats} (conditional — hostInfo)See example record
ratingobjectYes{total_reviews, overall_rating, ratings}See example record
featuresarrayYesAmenity objects: {name, description}[{ "name": "Wifi" }]
safety_featuresarrayYesSafety equipment objects: {name, note}[{ "name": "Smoke alarm" }]
bathroomsarrayYesBathroom objects: {name, category, amenities}See example record
bedroomsarrayYesBedroom objects: {name, category, amenities}See example record
supplementobjectYes{max_guests, allows_children, allows_pets, allows_events, cancellation_policy}See example record
calendararrayYes12-month availability (conditional — listingCalendar)See example record
reviewsarrayYesGuest reviews (conditional — listingReviews)See example record
sourceQuerystringYesSearch query that produced the listingnewyork

Example dataset record

A representative record produced by a search for newyork with listingDetails, hostInfo, listingCalendar, and listingReviews enabled:

{
"identifier": "1234567890123456789",
"url": "https://www.airbnb.com/rooms/1234567890123456789",
"active": true,
"name": "Cozy Studio in Midtown East",
"headline": "Stunning Manhattan studio with skyline views",
"description": "Modern studio apartment in the heart of Manhattan...",
"unit": {
"name": "Cozy Studio in Midtown East",
"category": "PROPERTY_TYPE_APARTMENT",
"active": true
},
"images": [
{ "identifier": "123...", "url": "https://a0.muscache.com/...", "title": "" }
],
"location": {
"address": { "city": "New York", "subdivision": "NY", "country": "United States" },
"coordinates": { "lat": "40.7531", "lng": "-73.9822" },
"show_exact": true
},
"host": {
"host": { "name": "Jane", "profilePictureUrl": "https://..." },
"superhost": true,
"verified": true,
"stats": [
{ "label": "Response rate", "value": "100%", "type": "percentage" }
]
},
"rating": {
"total_reviews": 142,
"overall_rating": 4.85,
"ratings": [
{ "categoryType": "cleanliness", "label": "Cleanliness", "percentage": 95 }
]
},
"supplement": {
"max_guests": 3,
"allows_children": false,
"allows_pets": false,
"allows_events": true,
"cancellation_policy": "MODERATE"
},
"features": [ { "name": "Wifi", "description": "" }, { "name": "Kitchen", "description": "" } ],
"safety_features": [ { "name": "Smoke alarm", "note": "" } ],
"bathrooms": [ { "name": "Bathroom 1", "category": "FULL_BATH", "amenities": [] } ],
"bedrooms": [ { "name": "Bedroom 1", "category": "BEDROOM", "amenities": [] } ],
"sourceQuery": "newyork"
}

The record above was produced with input {"searchQueries": ["newyork"], "maxItems": 2} plus the enrichment toggles enabled.

Query and input reference

InputTypeRequiredDefaultAccepted valuesDescription
searchQueriesarray[string]YesFree text (e.g. newyork, paris)Location or search queries used to discover listings
maxItemsintegerNo00 or a positive integerMaximum listings to collect; 0 = unlimited. Takes precedence over maxListings
maxListingsintegerNo00 or a positive integerLegacy alias for maxItems, used only when maxItems is omitted
maxPagesintegerNo00 or a positive integerMaximum search result pages per query; 0 = unlimited
listingDetailsbooleanNofalsetrue / falseExtract full listing details (charged as listing-details)
hostInfobooleanNofalsetrue / falseExtract host profile (charged as host-info)
listingCalendarbooleanNofalsetrue / falseExtract 12-month availability (charged as listing-calendar)
listingReviewsbooleanNofalsetrue / falseExtract guest reviews (charged as listing-reviews)
maxReviewsintegerNo100 or a positive integerMaximum reviews per listing when listingReviews is enabled; 0 = unlimited
scrapeCalendarbooleanNofalsetrue / falseLegacy alias for listingCalendar
proxyConfigurationobjectNoApify residential proxyApify proxy groups or custom proxiesResidential proxies are recommended

Minimal request:

{ "searchQueries": ["newyork"] }

Enriched request:

{
"searchQueries": ["newyork", "paris"],
"maxItems": 100,
"maxPages": 5,
"listingDetails": true,
"hostInfo": true,
"listingCalendar": true,
"listingReviews": true,
"maxReviews": 10,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}

Retrieve the data through the API

  1. Start the Actor with a JSON input (console or API).
  2. Wait for the run to finish, or use a synchronous endpoint for an inline response.
  3. Retrieve items from the run's default dataset.
  4. Paginate or export the dataset.

Python example:

from apify_client import ApifyClient
client = ApifyClient("YOUR-APIFY-TOKEN")
run = client.actor("datascrapers/airbnb-scraper").call(run_input={
"searchQueries": ["newyork"],
"maxItems": 50,
"listingDetails": True,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["identifier"], item["name"])

Apify generates ready-to-run Python, JavaScript, and cURL examples on the Actor's API tab. Do not put a real API token in shared code or URLs.

Data quality and record handling

  • Conditional fields: Detail, host, calendar, and review fields are present only when their input toggle is enabled. Values a listing does not publish are returned as null or empty arrays rather than fabricated.
  • Source changes: Airbnb page structure and values can change; unreadable fields are returned as null.
  • Deduplication: Each run appends fresh records; the Actor does not deduplicate across runs. Use identifier as the stable key and filter repeated runs against previously stored IDs.
  • Rate limits: Airbnb rate-limits automated traffic. Residential proxies (enabled by default) are recommended for consistent coverage.
  • Normalization: Values are read from the listing and normalized to the field types in the data dictionary.

Export and pipeline examples

DestinationRecommended methodTypical use
PostgreSQL / SupabaseDataset API poll or webhook consumerStore listing snapshots alongside pricing research
Google SheetsApify Google Sheets integrationShare shortlists with analysts
S3 / cloud storageScheduled export via Apify schedulerArchival of market snapshots
BI toolsCSV / JSON exportSupply, demand, and pricing trend analysis

Pricing and cost examples

The Actor uses pay-per-event pricing. The primary charge event is the listing result:

EventTriggerRate
ListingEvery listing pushed to the dataset$5 per 1,000 listings

A one-time Actor start event of $0.00005 applies to each run (effectively $0). Enabling an enrichment adds a corresponding charge event — listing-details, host-info, listing-calendar, or listing-reviews — billed separately when its toggle is on. Check the Actor's pricing tab for the current per-event rates.

Listings (base record only)Estimated base cost
1,000$5.00
10,000$50.00
100,000$500.00

Compute units consumed by the run are billed by your Apify plan. Estimates depend on the verified pricing model and the options selected for the run.

Limitations and responsible data use

  • The Actor collects publicly accessible listing data from Airbnb only.
  • Field availability depends on what Airbnb renders at run time; some values can be null or missing, and site changes can alter fields.
  • The Actor does not provide historical snapshots unless you store them yourself.
  • Large runs require residential proxies; without them, coverage may degrade due to rate limiting.
  • You are responsible for compliance with Airbnb's terms of service, applicable privacy law, and any contractual obligations before using the data.

Dataset questions

What does one dataset item represent?

One Airbnb listing. All detail fields (images, host, rating, rooms, calendar, reviews) are nested inside that single listing record.

Which field should I use as a unique identifier?

identifier is the stable Airbnb listing ID and the recommended deduplication key. url is a reasonable secondary key.

Are fields nullable or conditional?

Yes. Detail, host, calendar, and review fields exist only when their toggle is enabled. Fields Airbnb does not publish for a given listing are returned as null or empty.

Can I retrieve the records as CSV or JSON?

Yes. The dataset can be exported as JSON, CSV, Excel, XML, or HTML from the Apify Console, and queried through the Dataset API.

Does the Actor return historical data?

No. Each run captures the state of the pages at run time. To track changes, schedule repeated runs and store the outputs yourself.

What counts as a billable result?

Each listing record is one billable result, charged at $5 per 1,000 listings. Optional enrichments add separate charge events when enabled. Use maxItems, maxPages, and maxReviews to control cost per run.

  • Apartments.com Scraper — Long-term rental listings that complement short-term rental data for housing-market analysis.
  • Redfin Scraper — For-sale residential listings with pricing and property details for market research.
  • Rightmove Scraper — UK property listings for cross-market comparison.
  • Zoopla Scraper — Additional UK property listings for price and availability tracking.

Data Scrapers support

Need an additional field, record type, or export workflow? Contact Data Scrapers at stardustspotlight@gmail.com. Include a sample source URL, required fields, expected record volume, and preferred delivery format.