Airbnb Scraper (Pay-Per-Event)
Pricing
Pay per usage
Airbnb Scraper (Pay-Per-Event)
Scrape Airbnb listings worldwide for prices, ratings, amenities, host info, photos, coordinates, house rules, and per-day calendar availability. Pay-per-event pricing — only pay for the listings you actually scrape.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Arnas
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
What does Airbnb Scraper do?
Airbnb Scraper extracts every available Airbnb listing for any location worldwide — complete with prices, descriptions, ratings, amenities, host info, GPS coordinates, house rules, photos, and (optionally) per-day calendar availability. Enter a city name, click Start, and get structured rental data in JSON, CSV, or Excel. No login, no API key, no browser.
Unlike most other Airbnb scrapers, this one uses price-range binary splitting to bypass Airbnb's pagination cap. Most scrapers are limited to ~300 results per query — this one finds every listing in your target area, no matter how big. London returns 12,000+ listings, Tokyo 14,000+, Cape Town 7,400+.
The scraper runs as a serverless Apify Actor, so you also get scheduled runs, integrations (Google Sheets, Make, Zapier, Slack, S3, BigQuery, …), residential proxy rotation, monitoring, and an API to drive it programmatically.
Why use Airbnb Scraper?
- 100% listing coverage — price-range splitting bypasses Airbnb's pagination cap.
- 100% price coverage — every listing has nightly price; with detail pages you also get cleaning fee, service fee, and total price.
- No browser, low cost — HTTP-only scraper running on a lightweight Crawlee crawler.
- Two modes — fast search-only for market sizing, full mode for rich per-listing data.
- 30+ currencies and 14 locales — get prices in EUR, GBP, JPY, or whatever currency Airbnb supports.
- Budget guard — set a Max Charge Per Run and the actor halts the moment the limit is reached.
- Auto-extending ceiling — if your target market has luxury listings above
maxPricePerNight, the actor automatically extends the ceiling so they aren't silently truncated. - Drop-in compatible with the popular
automation-lab/airbnb-listingactor at identical pricing: $0.005/run + $5/1,000 listings.
How to use Airbnb Scraper
- Open the actor in Apify Console and click Try for free.
- Type your target location in Location queries (e.g.
London,Tokyo, Japan,Miami Beach, FL). Multiple locations are scraped in a single run. - Optionally set check-in/check-out dates, guest counts, price range, or filters.
- Toggle Search-only mode for a faster, cheaper market overview.
- Click Start and download the results in JSON, CSV, Excel, XML, or HTML.
Input
Minimum input:
{"locationQueries": ["London"]}
Targeted search with dates and filters:
{"locationQueries": ["Barcelona, Spain"],"checkIn": "2026-06-15","checkOut": "2026-06-22","adults": 2,"currency": "EUR","locale": "en-US","minBedrooms": 2,"priceMin": 50,"priceMax": 250}
Fast market overview (no detail pages):
{"locationQueries": ["Tokyo, Japan"],"skipDetailPages": true,"maxListings": 500}
With per-day calendar availability for the next 6 months:
{"locationQueries": ["Setúbal, Portugal"],"calendarMonths": 6}
| Field | Type | Default | Description |
|---|---|---|---|
locationQueries | string[] | — | Locations to search. At least one is required (or use startUrls). |
startUrls | string[] / object[] | — | Pre-filtered Airbnb search URLs (paste from your browser). |
checkIn / checkOut | string (YYYY-MM-DD) | — | Date range filter. |
adults, children, infants, pets | integer | 1, 0, 0, 0 | Guest counts. |
priceMin, priceMax | integer | — | Hard price range filter. |
minBeds, minBedrooms, minBathrooms | integer | — | Property size filters. |
locale | enum | en-US | Listing language. 14 options. |
currency | enum | USD | Price currency. 20 options. |
skipDetailPages | boolean | false | Search-only mode (faster, fewer fields per listing — same per-listing price). |
calendarMonths | integer 0–12 | 0 | Per-listing calendar months to fetch. |
maxListings | integer | 0 | Stop after N listings (0 = unlimited). |
maxPricePerNight | integer | 10000 | Splitting ceiling (auto-extends for luxury markets). |
maxRequestsPerCrawl | integer | 0 | Cap total HTTP requests (0 = unlimited). |
proxyConfiguration | object | RESIDENTIAL | Apify proxy. Datacenter IPs are blocked by Airbnb. |
Output
One row per unique listing. Full mode example:
{"id": "788405891732745420","title": "Recanto da Lima","url": "https://www.airbnb.com/rooms/788405891732745420","androidLink": "airbnb://rooms/788405891732745420","iosLink": "airbnb://rooms/788405891732745420","thumbnail": "https://a0.muscache.com/im/pictures/...","coordinates": { "latitude": 38.546, "longitude": -8.84326 },"roomType": "Private room in home","propertyType": "Private room in home","personCapacity": 3,"neighborhood": "Praias do Sado","locationSubtitle": "Quiet riverside neighborhood","isSuperHost": true,"rating": {"guestSatisfaction": 4.98,"reviewsCount": 129,"cleanliness": 5,"accuracy": 5,"checking": 5,"communication": 5,"location": 4.8,"value": 4.9},"price": {"label": "$45 per night","qualifier": "per night","price": "$45","breakDown": {"nightlyPrice": "$45","totalPrice": "$315 total","cleaningFee": "$30","serviceFee": "$50"}},"host": {"name": "Cláudia","isSuperHost": true,"profileImage": "https://...","highlights": ["Superhost", "128 reviews"],"about": ["Lives in Setúbal, Portugal"]},"amenities": [{ "title": "Bathroom", "values": [{ "title": "Bathtub", "available": true }] }],"images": [{ "caption": "Living room", "imageUrl": "https://..." }],"houseRules": {"general": [{ "title": "Checking in and out", "values": [{ "title": "Check-in after 3:00 PM" }] }]},"calendar": [{ "date": "2026-06-01", "available": true, "minNights": 2, "maxNights": 90, "price": "$45" }],"timestamp": "2026-05-22T16:00:00.000Z"}
calendar is only present when calendarMonths > 0. Search-only mode (skipDetailPages: true) returns the same row with detail-only fields (description, amenities, host, images, houseRules, …) set to null or [], but still includes the full price.breakDown parsed from search cards — most other search-only scrapers omit the breakdown.
You can download the dataset in JSON, CSV, HTML, XML, or Excel from the Output tab in Apify Console.
How much does it cost to scrape Airbnb?
Pay-per-event pricing. You pay only for what you scrape — no monthly subscription. All platform costs (compute, residential proxy, storage) are included in the per-listing price.
| Apify plan | Per run | Per listing | 1,000 listings |
|---|---|---|---|
| Free | $0.005 | $0.005 | $5.00 |
| Starter | $0.005 | $0.005 | $5.00 |
| Scale / Business | $0.005 | $0.005 | $5.00 |
Real-world cost examples (search-only):
| Location | Listings | Cost (Free) |
|---|---|---|
| Setúbal, Portugal | ~950 | $4.76 |
| London, UK | ~12,000 | $60.00 |
| Tokyo, Japan | ~14,000 | $70.00 |
Set a Max Charge Per Run in Apify Console to protect your budget — the actor halts the moment the limit is reached.
Tips
- Start small. Set
maxListings: 10for a quick preview before scraping an entire city. - Use search-only mode for market sizing — same per-listing price, ~5× faster, includes the fee breakdown.
- Run multiple cities in one run —
locationQueries: ["Paris", "Rome", "Berlin"]pays the start fee once and dedupes overlapping listings byid. - Bump
maxPricePerNightabove 10000 if you're scraping luxury markets and want a higher starting ceiling. The actor will auto-extend it on cap-hit, but starting higher saves an extra round-trip. - Use
startUrlsto pre-apply Airbnb filters that aren't input fields — set up your filtered search on airbnb.com, copy the URL, paste it in. - Schedule recurring runs to track pricing trends over time.
FAQ and disclaimers
What's the difference between full mode and search-only mode?
Full mode visits each listing detail page and returns ~40 fields (description, amenities, host, photos, rules, etc.). Search-only is ~5× faster and returns roughly 15 fields — but unlike most search-only scrapers, this one still returns the price breakDown from search cards.
Why every listing has a price. Airbnb always includes pricing in search results, so 100% of returned listings have a price regardless of mode.
What happens on a luxury market with listings above maxPricePerNight? The actor detects the cap-hit on the top window and automatically extends maxPricePerNight (doubles, up to $100,000). A warning is logged so you can see it happened.
Is it legal to scrape Airbnb? This scraper only accesses publicly available listing data. It does not bypass any login walls or CAPTCHAs. Web scraping of publicly available data is generally legal in most jurisdictions, but listings can contain personal data (host names, photos) which is protected by GDPR and similar laws. Don't scrape personal data unless you have a legitimate reason. Review Airbnb's Terms of Service and consult a lawyer when in doubt.
Found a bug or have a feature request? Open an issue on the Issues tab — we monitor it and respond within ~1 business day.
Related actors
automation-lab/airbnb-listing— the reference actor we cloned. Same surface, same price.- Pair with
automation-lab/airbnb-reviewsto scrape per-listing reviews.