Airbnb Scraper avatar

Airbnb Scraper

Pricing

from $2.00 / 1,000 results

Go to Apify Store
Airbnb Scraper

Airbnb Scraper

Scrape Airbnb listings by destination. Get titles, descriptions, full photo galleries, ratings, prices per night, amenities, room layout, and deep links - ready for travel research, market analysis, and price tracking.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

Xtractoo

Xtractoo

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

8 days ago

Last modified

Share

Scrape Airbnb listings for any destination and get back the full picture of each property — descriptions, photo galleries, ratings, amenities, room layout, prices, locations, and deep links — all in clean structured JSON.

Whether you are a travel analyst tracking the short-term-rental market, an investor sizing up a destination, a vacation-rental host benchmarking competition, or a developer building a property-search experience, this actor gives you the data you need without the bother of building and maintaining a scraper yourself.


What you can do with it

  • Market & investment research — pull all listings for a city and analyze price distributions, occupancy signals, property types, and amenity prevalence.
  • Competitive benchmarking — see exactly how comparable properties present themselves: title, photos, amenities, and pricing.
  • Lead generation — build property-owner / property-manager lists for outreach.
  • Price tracking — schedule the actor to run on a fixed cadence and feed the dataset into your BI stack.
  • Travel content & comparison sites — power your own search UI with fresh listings, photos, and ratings.
  • Data products — feed a dataset into AI / LLM pipelines that need real-world travel inventory.

Why use this actor

  • No Airbnb account required — runs entirely on public data; nothing to sign in to, nothing to keep alive.
  • No CAPTCHAs to solve — you give it a destination, it gives you data.
  • Rich detail per listing — 30+ structured fields, including the full photo gallery (often 60+ photos) and the full amenities list grouped by category.
  • Stable JSON output — fixed schema, ready to feed straight into your warehouse, spreadsheet, or notebook.
  • Pay only for results — straightforward per-record pricing on the Apify platform.

How it works

  1. You give the actor a destination ("Bali, Indonesia"), optional check-in / check-out dates, guests, currency, and how many results you want.
  2. The actor searches Airbnb for that destination and collects every listing on the result pages.
  3. For each listing, it visits the listing's detail page and merges in the deeper data — descriptions, photos, amenities, room breakdown, and exact ratings.
  4. Records are written to the run's dataset one by one and available immediately in the Apify console (JSON, CSV, Excel, XML).

The actor handles pagination, retries, and proxy rotation automatically — you do not need to configure anything beyond your destination.


Input

The minimum input is a destination — everything else has sensible defaults.

{
"mode": "search",
"location": "Bali, Indonesia",
"adults": 2,
"currency": "USD",
"max_results": 100,
"enrich_from_pdp": true,
"proxy": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}
FieldTypeRequiredDescription
modestringyessearch to scrape a destination, listings to fetch a specific list of room IDs
locationstringfor searchThe destination as you would type it in the Airbnb search box
check_in / check_outstringnoISO YYYY-MM-DD dates — adds availability + accurate pricing
adultsintegernoNumber of adult guests (default 2)
currencystringnoISO 4217 currency for prices (default USD)
max_resultsintegernoHard cap on records pushed (default 100)
listing_idsarrayfor listingsAirbnb numeric room IDs to fetch directly
enrich_from_pdpbooleannoIf true (default), each result is enriched with the full detail page
proxyobjectnoApify proxy configuration; residential recommended

Sample output

One record per listing. Real data from a Bali search run:

{
"id": "1641776406624726380",
"url": "https://www.airbnb.com/rooms/1641776406624726380",
"title": "SIGMA Treehouse — Private Sauna & Sunset Views",
"property_type": "Treehouse",
"description_short": "Private jungle treehouse in Munduk, North Bali, with sunset views at cloud level. Slow down with a private sauna, bathtub for two, outdoor fire pit, and cozy movie nights with a projector. Just a 15-minute walk to the nearest waterfall, with many more nearby. Designed for couples or solo travelers seeking peace, nature, and privacy.",
"person_capacity": 2,
"bedrooms": 1,
"beds": 1,
"bathrooms": 1,
"bathroom_type": "private",
"rating": 5,
"rating_count": 2,
"is_new_listing": false,
"primary_image_url": "https://a0.muscache.com/im/pictures/hosting/Hosting-1641776406624726380/original/af6ae7ab-3625-423c-ac5f-704db237f3ac.jpeg",
"photo_count": 62,
"photo_urls": [
"https://a0.muscache.com/im/pictures/hosting/Hosting-1641776406624726380/original/af6ae7ab-3625-423c-ac5f-704db237f3ac.jpeg",
"https://a0.muscache.com/im/pictures/hosting/Hosting-1641776406624726380/original/3cf6f5db-4a6d-437e-8866-40628b4212b1.jpeg",
"https://a0.muscache.com/im/pictures/hosting/Hosting-1641776406624726380/original/193839fe-c76b-498f-b9f8-f052ca5810b9.jpeg",
"...59 more"
],
"amenity_count": 54,
"amenities": [
"Mountain view",
"Valley view",
"Bathtub",
"Hair dryer",
"Outdoor shower",
"Hot water",
"...48 more"
],
"amenities_grouped": [
{
"group": "Scenic views",
"items": [
{ "title": "Mountain view", "available": true, "icon": "SYSTEM_VIEW_MOUNTAIN" },
{ "title": "Valley view", "available": true, "icon": "SYSTEM_VIEW_MOUNTAIN" }
]
},
{
"group": "Bathroom",
"items": [
{ "title": "Bathtub", "available": true, "icon": "SYSTEM_BATHTUB" },
{ "title": "Bidet", "available": true, "icon": "SYSTEM_TOILET_BIDET" },
{ "title": "Hot water", "available": true, "icon": "SYSTEM_HOT_WATER" }
]
}
],
"price_per_night": 5029,
"price_qualifier": "for 5 nights",
"currency": "USD",
"lat": -8.2593,
"lng": 115.0704,
"android_deeplink": "airbnb://rooms/1641776406624726380",
"ios_deeplink": "airbnb://rooms/1641776406624726380"
}

Output schema

Every result has the same fields. Unset fields are null.

FieldTypeDescription
idstringAirbnb numeric room ID
urlstringCanonical listing URL
titlestringListing title as shown on Airbnb
property_typestring"Entire cabin", "Treehouse", "Private room", etc.
description_shortstringHero description
description_longstringFull description (when available)
meta_descriptionstringSEO description shown on Google
person_capacityintegerMaximum guests
bedrooms / beds / bathroomsnumbersRoom breakdown
bathroom_typestringprivate / shared / half / standard
ratingnumberOverall guest rating (0–5)
rating_countintegerNumber of reviews
is_new_listingbooleanTrue if Airbnb classifies it as new
primary_image_urlstringHero photo URL
photo_urlsstring[]Every photo URL from the listing gallery
photo_countintegerLength of photo_urls
amenitiesstring[]Flat list of available amenities
amenities_groupedobject[]Same amenities organised by Airbnb's groups, with icon names
amenity_countintegerLength of amenities
price_per_nightnumberPrice as shown for the searched stay
price_qualifierstringThe label Airbnb shows (e.g. "for 5 nights")
currencystringISO 4217
lat / lngnumbersListing coordinates
subtitlestringSearch-card subtitle
android_deeplink / ios_deeplinkstringsOpen-in-app links

Tips

  • Start with a small max_results (3–10) to validate inputs, then scale up.
  • Set enrich_from_pdp: false if you only need basic search-card fields and want a faster, cheaper run.
  • Combine with the Apify Schedule feature to run nightly price snapshots for a destination.