Airbnb Scraper avatar
Airbnb Scraper

Pricing

Pay per event

Go to Apify Store
Airbnb Scraper

Airbnb Scraper

Extract Airbnb listing data: prices, ratings, reviews, amenities, host info, photos, GPS coordinates, and availability. Scrape any location worldwide. Export to JSON, CSV, or Excel.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

0

Monthly active users

10 hours ago

Last modified

Share

What does Airbnb Scraper do?

Airbnb Scraper extracts all available Airbnb listings for any location worldwide — complete with prices, descriptions, ratings, amenities, host info, GPS coordinates, house rules, and photos. Enter a city name, click Start, and get structured rental data in JSON, CSV, or Excel.

It works in two modes:

  • Full mode (default) — extracts rich data per listing: price, description, amenities, host info, 30+ photos, house rules, cancellation policies
  • Search-only mode (skipDetailPages: true) — basic data from search results only, significantly faster and cheaper

The scraper uses price-range binary splitting to discover all listings regardless of Airbnb's pagination limits. This ensures 100% coverage of listings in your target area.

Why use Airbnb Scraper?

  • 100% listing coverage — price-range splitting bypasses Airbnb's pagination limits, finding every listing in your target area
  • 100% price coverage — every listing includes pricing data, extracted directly from search results
  • No browser needed — runs on a lightweight HTTP crawler, keeping costs low and speed high
  • Flexible output — JSON, CSV, Excel, XML, or HTML table. Integrate via API, webhooks, or 100+ Apify integrations
  • Two modes — get a fast market overview (search-only) or rich per-listing data (full mode)

What data can you extract from Airbnb?

Full mode (default: skipDetailPages: false)

Data pointExample
Listing ID & URL788405891732745420, web URL + Android/iOS deep links
Title & descriptionFull listing name and HTML description
Price per nightNightly rate in your chosen currency, with price breakdown
CoordinatesPrecise GPS latitude/longitude (e.g., 38.546, -8.843)
Property & room type"Entire rental unit", "Private room in villa"
RatingOverall score + breakdown (cleanliness, accuracy, check-in, communication, location, value) + review count
Host infoName, photo, Superhost status, highlights, about, co-hosts
AmenitiesFull categorized list (13+ groups: kitchen, bathroom, entertainment, safety)
House rulesCheck-in/out times, guest limits, pet and smoking policies
ImagesAll listing photos with captions (typically 15-40 per listing)
Location descriptionsNeighborhood highlights, transit info, area tips
HighlightsFeatured badges (Self check-in, Great location)
Person capacityMaximum number of guests
Cancellation policiesPolicy name and terms
Superhost statusWhether the host is an Airbnb Superhost

Search-only mode (skipDetailPages: true)

A faster, lighter output with fields available from search results:

Data pointIncluded
Listing ID, URL, deep linksYes
TitleYes
Price per nightYes
Coordinates (approximate)Yes
Room typeYes
Star rating + review countYes
Thumbnail imageYes
Superhost statusYes
Description, amenities, host info, images, house rulesNo — requires detail pages

How much does it cost to scrape Airbnb?

This Actor uses pay-per-event pricing — you pay only for what you scrape. No monthly subscription required. All platform costs (compute, proxy, storage) are included in the price.

Free planStarter ($49/mo)Scale ($499/mo)
Per listing$0.003$0.0025$0.002
1,000 listings$3.00$2.50$2.00
10,000 listings$30.00$25.00$20.00

Higher-tier Apify plans (Gold, Platinum, Diamond) get additional volume discounts down to $0.00075 per listing.

Real-world cost examples:

LocationListings foundModeDurationCost (Free tier)
Setúbal, Portugal946Search-only~70 sec~$2.84
Setúbal, Portugal943Full detail~4 min~$2.83
London, UK12,037Full detail~7 min~$36.11
Tokyo, Japan14,007Full detail~7 min~$42.02
Brooklyn, NYC3,117Full detail~4 min~$9.35
Cape Town, SA7,407Full detail~6 min~$22.22

Costs shown at Free tier ($0.003/listing). Starter and Scale tiers are 17-33% cheaper.

Summary:

  • Cost scales linearly with listing count — $3 per 1,000 listings on the Free plan
  • Search-only and full detail modes cost the same per listing (you pay per result, not per request)
  • All platform costs (compute, proxy, storage) are included — no surprise charges

With the Apify Free plan, you get $5 of free usage per month — enough to scrape ~1,600 listings for free.

How to scrape Airbnb listings

  1. Go to the Airbnb Scraper on Apify Store
  2. Click Try for free to open the Actor in Apify Console
  3. Enter your target location (e.g., "London", "Tokyo, Japan", "Miami Beach, FL")
  4. Optionally set check-in/check-out dates, guest count, and filters
  5. Click Start and wait for the run to complete
  6. Download your data in JSON, CSV, Excel, XML, or HTML table format

The simplest input just requires a location:

{
"locationQueries": ["London"]
}

For targeted searches with dates and filters:

{
"locationQueries": ["Barcelona, Spain"],
"checkIn": "2026-06-15",
"checkOut": "2026-06-22",
"adults": 2,
"currency": "EUR",
"locale": "en-US"
}

Multiple locations in a single run:

{
"locationQueries": [
"Paris, France",
"Rome, Italy",
"Berlin, Germany"
]
}

Fast search-only mode (no detail pages):

{
"locationQueries": ["Tokyo, Japan"],
"skipDetailPages": true
}

Input parameters

ParameterTypeDefaultDescription
locationQueriesstring[]Locations to search (e.g., "London", "Paris, France")
startUrlsURL[]Pre-built Airbnb search URLs (alternative to locationQueries)
checkInstringCheck-in date in YYYY-MM-DD format
checkOutstringCheck-out date in YYYY-MM-DD format
adultsinteger1Number of adult guests
childreninteger0Number of children
infantsinteger0Number of infants
petsinteger0Number of pets
priceMinintegerMinimum price per night
priceMaxintegerMaximum price per night
minBedsintegerMinimum number of beds
minBedroomsintegerMinimum number of bedrooms
minBathroomsintegerMinimum number of bathrooms
localestringen-USLanguage/locale (en-US, de-DE, fr-FR, ja-JP, etc.)
currencystringUSDCurrency code (USD, EUR, GBP, JPY, etc.)
skipDetailPagesbooleanfalseSkip detail pages for faster, cheaper scraping (less data per listing)
maxListingsinteger0Stop after this many listings (0 = unlimited)
maxPricePerNightinteger10000Upper bound for price-range splitting. Increase if scraping luxury markets.
maxRequestsPerCrawlinteger0Limit total HTTP requests (0 = unlimited)

Output examples

Full listing output (with detail pages):

{
"id": "788405891732745420",
"title": "Recanto da Lima",
"url": "https://www.airbnb.com/rooms/788405891732745420?adults=1&locale=en-US&currency=USD",
"androidLink": "airbnb://rooms/788405891732745420",
"iosLink": "airbnb://rooms/788405891732745420",
"locale": "en-US",
"language": "en",
"price": {
"label": "$45",
"qualifier": "per night",
"price": "$45",
"originalPrice": null,
"discountedPrice": null,
"breakDown": {
"nightlyPrice": "$45",
"totalPrice": "$315",
"cleaningFee": "$30",
"serviceFee": "$50"
}
},
"coordinates": {
"latitude": 38.546,
"longitude": -8.84326
},
"description": "Accommodation in a calm and safe residential area...",
"seoTitle": "Recanto da Lima - Guest suites for Rent in Setúbal",
"metaDescription": "Private room in Setúbal, Portugal. Accommodation in a calm and safe residential area...",
"roomType": "Private room in home",
"isSuperHost": true,
"personCapacity": 3,
"rating": {
"guestSatisfaction": 4.98,
"reviewsCount": 129,
"cleanliness": 5,
"accuracy": 5,
"checking": 5,
"communication": 5,
"location": 4.8,
"value": 4.9
},
"host": {
"name": "Cláudia",
"isSuperHost": true,
"profileImage": "https://a0.muscache.com/im/pictures/user/...",
"highlights": ["Superhost", "128 reviews", "Identity verified"],
"about": ["Lives in Setúbal, Portugal", "Speaks English and Portuguese"]
},
"amenities": [
{
"title": "Bathroom",
"values": [
{ "title": "Bathtub", "available": true },
{ "title": "Hair dryer", "available": true }
]
}
],
"houseRules": {
"general": [
{
"title": "Checking in and out",
"values": [
{ "title": "Check-in after 3:00 PM" },
{ "title": "Checkout before 11:00 AM" }
]
}
]
},
"highlights": [
{ "title": "Great check-in experience", "subtitle": "100% of recent guests gave check-in a 5-star rating." }
],
"images": [
{
"caption": "Photo 1",
"imageUrl": "https://a0.muscache.com/im/pictures/hosting/.../original/4fc66ff6.jpeg"
}
],
"locationDescriptions": [
{ "title": "Setúbal, Portugal", "content": "A calm residential area..." }
],
"coHosts": [],
"isAvailable": true,
"thumbnail": "https://a0.muscache.com/im/pictures/hosting/.../original/4fc66ff6.jpeg",
"timestamp": "2026-01-30T17:10:00.000Z"
}

Search-only output (skipDetailPages: true):

{
"id": "788405891732745420",
"title": "Recanto da Lima",
"url": "https://www.airbnb.com/rooms/788405891732745420",
"androidLink": "airbnb://rooms/788405891732745420",
"iosLink": "airbnb://rooms/788405891732745420",
"locale": "en",
"language": "en",
"price": {
"label": "$45",
"qualifier": "per night",
"price": "$45",
"originalPrice": null,
"discountedPrice": null
},
"coordinates": {
"latitude": 38.546,
"longitude": -8.843
},
"roomType": "Entire home/apt",
"rating": {
"guestSatisfaction": 4.98,
"reviewsCount": 129
},
"thumbnail": "https://a0.muscache.com/im/pictures/hosting/.../original/4fc66ff6.jpeg",
"coHosts": [],
"images": [],
"isAvailable": true,
"timestamp": "2026-01-30T17:00:00.000Z"
}

Tips for best results

  • Use skipDetailPages: true for fast market overviews when you only need listing counts, prices, locations, and ratings
  • Set maxListings to a small number (e.g., 10) for testing before running a full scrape
  • Run multiple locations in one run using the locationQueries array
  • Increase maxPricePerNight above 10000 if you're scraping luxury markets where listings exceed $10,000/night
  • Add check-in/check-out dates to get availability-specific pricing breakdowns and cancellation policies on detail pages
  • Use startUrls to apply Airbnb filters not available as input fields — set up your search on airbnb.com, copy the URL, and paste it into startUrls

Integrations

Airbnb Scraper connects with virtually any cloud service or web app through integrations on the Apify platform. You can integrate with Make, Zapier, Slack, Airbyte, GitHub, Google Sheets, Google Drive, and more. Use webhooks to trigger actions whenever a scraping run completes.

Using the Apify API

The Apify API gives you programmatic access to run this Actor, retrieve datasets, and automate scraping workflows.

Node.js:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('automation-lab/airbnb-listing').call({
locationQueries: ['London'],
currency: 'GBP',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python:

from apify_client import ApifyClient
client = ApifyClient('YOUR_API_TOKEN')
run = client.actor('automation-lab/airbnb-listing').call(run_input={
'locationQueries': ['London'],
'currency': 'GBP',
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

Check out the Apify API reference for full documentation.

FAQ

What's the difference between full mode and search-only mode?

Full mode (skipDetailPages: false, the default) extracts rich data for each listing: full description, all amenities, host profile, 30+ photos, house rules, and cancellation policies. It takes longer because it visits each listing page individually.

Search-only mode (skipDetailPages: true) extracts data from search results only. You get: ID, title, URL, price, coordinates, room type, star rating, review count, and a thumbnail. It's roughly 5x faster — ideal for market sizing, location mapping, or when you just need listing counts with prices. Both modes cost the same per listing.

How much does it cost?

You pay $3 per 1,000 listings on the Apify Free plan. Higher Apify subscription tiers get volume discounts (down to $0.75 per 1,000 on Diamond). All platform costs are included — no surprise compute or proxy charges. With the Free plan's $5 monthly credit, you can scrape ~1,600 listings at no cost.

How many listings can this scraper find?

The scraper uses price-range binary splitting to discover all listings in your target area, bypassing Airbnb's pagination limits. There is no hard cap — it finds every listing available for your location and filters. In our tests: London returned 12,000+ listings, Tokyo 14,000+, and Cape Town 7,400+.

Can I scrape multiple cities at once?

Yes. Add multiple locations to the locationQueries array and they'll all be scraped in a single run.

Why does every listing have a price?

The scraper extracts prices from search results where Airbnb always includes pricing data. This means 100% price coverage regardless of whether you use full mode or search-only mode.

Can I filter by property type, amenities, or other criteria?

You can filter by price range, number of bedrooms/beds/bathrooms, and guest count directly in the input. For property type and amenity filtering, use startUrls with a pre-filtered Airbnb search URL from your browser.

Is it legal to scrape Airbnb?

Web scraping is legal when you extract publicly available data. Airbnb listings, prices, and host profiles are all publicly visible on the website. However, you should:

  • Only scrape data for legitimate business purposes
  • Respect personal data regulations (GDPR, CCPA) when handling host information
  • Review Airbnb's Terms of Service for your specific use case

For more on the legality of web scraping, see Apify's guide to ethical scraping.

Other travel scrapers

Looking for data from other travel platforms? Try these Apify Actors:

Browse more in the Travel category on Apify Store.