Airbnb Scraper — Listings & Reviews
Pricing
from $0.79 / 1,000 results
Airbnb Scraper — Listings & Reviews
Scrape Airbnb listings worldwide. Prices, ratings, amenities, host info, availability, reviews. Price-range splitting bypasses the 240-listing cap. No API key required.
Pricing
from $0.79 / 1,000 results
Rating
0.0
(0)
Developer
Unfenced Group
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Airbnb Scraper

Scrape Airbnb listings worldwide — prices, ratings, GPS coordinates, amenities, host info, availability calendars, and more. No browser, no API key, no login required.
Why this scraper?
⚡ Ultra-fast — results in seconds
HTTP-only, no browser to launch. First results in ~8 seconds. 1,000 listings in under 2 minutes at concurrency: 3.
💰 Lowest price on the market — $0.79/1,000
Roughly 60–80% cheaper than alternatives. Runs without proxy by default, keeping infrastructure costs near zero.
🌍 Any location worldwide
City names, neighbourhoods, regions, or direct Airbnb search URLs. Amsterdam, New York, Tokyo, Bali — works everywhere Airbnb does.
♾️ No listing cap
Our proprietary market-discovery algorithm exposes every listing in a city — not just the first page. Thousands of results per run, automatically.
📅 Availability calendar — up to 12 months forward
Per-day availability, min/max night stays, and nightly pricing for up to 12 months. Perfect for revenue management, arbitrage analysis, or dynamic pricing models.
⭐ Rich data — 60+ fields per listing
GPS coordinates, amenity flags, host profiles, per-category star ratings, house rules, cancellation policy, min/max nights, check-in times, safety items, and more.
📡 Monitoring / incremental mode
Track new listings automatically across runs — previously seen listings are de-duplicated against a persistent store so you only pay for genuinely new results.
Input parameters
| Field | Type | Default | Description |
|---|---|---|---|
locationQueries | string[] | [] | Location names — city, neighbourhood, region, country |
startUrls | object[] | [] | Pre-built Airbnb search URLs |
listingUrls | object[] | [] | Direct /rooms/{id} URLs for specific listings |
checkIn | string | — | Check-in date YYYY-MM-DD |
checkOut | string | — | Check-out date YYYY-MM-DD |
adults | integer | 2 | Number of guests |
currency | string | USD | ISO 4217 currency code (see note on KRW/IDR below) |
locale | string | en-US | BCP 47 locale |
priceMin | integer | — | Minimum nightly price |
priceMax | integer | — | Maximum nightly price |
minBedrooms | integer | — | Minimum bedrooms |
minBeds | integer | — | Minimum beds |
minBathrooms | number | — | Minimum bathrooms |
skipDetailPages | boolean | false | Skip detail enrichment (faster, fewer amenity fields) |
includeReviews | boolean | false | Fetch guest reviews |
maxReviewsPerListing | integer | 50 | Max reviews per listing |
calendarMonths | integer | 0 | Months of availability calendar (0–12) |
concurrency | integer | 2 | Parallel price-bucket workers (1–5, see performance section) |
monitoringMode | boolean | false | Incremental / monitoring mode |
maxResults | integer | 0 | Cap total results (0 = unlimited) |
useProxy | boolean | false | Enable residential proxy for geo-specific pricing |
Output schema
Always present (search results)
| Field | Type | Description |
|---|---|---|
id | string | Airbnb listing ID |
url | string | Listing URL (airbnb.com/rooms/{id}) |
title | string | Listing name |
subtitle | string | Short subtitle |
property_type | string | Apartment, Boat, Villa, etc. |
room_type | string | Entire place / Private room / Shared room / Hotel room |
price_per_night | number | Nightly rate in requested currency |
pricing_currency | string | ISO currency code |
overall_rating | number | Star rating 0–5 |
review_count | integer | Total reviews |
bedrooms | number | Number of bedrooms |
beds | number | Number of beds |
bathrooms | number | Number of bathrooms |
host_is_superhost | boolean | Superhost status |
is_guest_favorite | boolean | Guest Favorite badge |
latitude | number | GPS latitude |
longitude | number | GPS longitude |
thumbnail | string | Primary image URL |
images | string[] | All image URLs |
badges | string[] | SUPERHOST, GUEST_FAVORITE, etc. |
cancellation_policy | string | "free" when listing has free cancellation |
cancellation_policy_name | string | "Free cancellation" label |
is_new_listing | boolean | Newly listed property |
scraped_at | string | ISO 8601 timestamp |
With skipDetailPages: false (default)
| Field | Type | Description |
|---|---|---|
amenities | string[] | Full amenities list (50+ items) |
amenity_wifi | boolean | WiFi available |
amenity_kitchen | boolean | Kitchen available |
amenity_parking | boolean | Parking available |
amenity_pool | boolean | Pool available |
amenity_gym | boolean | Gym / fitness center |
amenity_air_conditioning | boolean | AC available |
amenity_washer | boolean | Washer available |
amenity_workspace | boolean | Dedicated workspace |
amenity_hot_tub | boolean | Hot tub available |
description | string | Full listing description |
house_rules | string[] | Complete house rules list |
safety_items | string[] | Safety & property considerations |
pets_allowed | boolean | Pets allowed |
smoking_allowed | boolean | Smoking allowed |
parties_allowed | boolean | Events / parties allowed |
self_check_in | boolean | Self check-in available |
check_in_after | string | Earliest check-in time (e.g. "3:00 PM") |
check_out_before | string | Latest check-out time (e.g. "11:00 AM") |
max_guests | number | Maximum guest count |
host_name | string | Host first name |
host_response_rate | string | Host response rate |
host_is_verified | boolean | Host identity verified |
host_years_hosting | number | Years hosting on Airbnb |
review_cleanliness | number | Cleanliness rating 0–5 |
review_accuracy | number | Accuracy rating 0–5 |
review_communication | number | Communication rating 0–5 |
review_location_score | number | Location rating 0–5 |
review_checkin_score | number | Check-in rating 0–5 |
review_value_score | number | Value rating 0–5 |
reviews | object[] | Guest reviews (if includeReviews: true) |
With calendarMonths > 0
The calendar_data field contains one entry per day for the requested range:
| Field | Type | Description |
|---|---|---|
calendar_data | object[] | Per-day availability array |
min_nights | number | Minimum stay requirement (from first available day) |
max_nights | number | Maximum stay requirement |
Each calendar_data entry:
{"date": "2026-08-01","available": true,"bookable": true,"available_for_checkin": true,"available_for_checkout": false,"min_nights": 3,"max_nights": 30,"price": "€205"}
Examples
1. Quick city search
{"locationQueries": ["Amsterdam"],"maxResults": 200,"currency": "EUR","concurrency": 3}
2. Filtered search with dates
{"locationQueries": ["Barcelona, Spain"],"checkIn": "2026-07-15","checkOut": "2026-07-22","adults": 2,"priceMin": 80,"priceMax": 300,"minBedrooms": 2,"currency": "EUR"}
3. Specific listings with calendar
{"listingUrls": [{"url": "https://www.airbnb.com/rooms/580870087750124077"},{"url": "https://www.airbnb.com/rooms/802052"}],"calendarMonths": 3,"includeReviews": true}
4. Daily monitoring feed
{"locationQueries": ["Miami Beach, FL"],"monitoringMode": true,"skipDetailPages": true,"currency": "USD"}
💰 Pricing
$0.79 per 1,000 results — pay only for successfully scraped listings.
| Results | Cost |
|---|---|
| 100 | ~$0.08 |
| 1,000 | ~$0.79 |
| 10,000 | ~$7.90 |
| 100,000 | ~$79.00 |
Flat-rate alternatives charge $29–$99/month. Other per-result scrapers charge $2.00–$4.50 per 1,000 results — 2.5× to 5.7× more expensive.
🚀 Performance & concurrency
Set concurrency to scrape multiple price buckets simultaneously. Default is 2.
| Concurrency | Speed | Best for |
|---|---|---|
| 1 | ~900/min | Maximum reliability, very large runs |
| 2 (default) | ~1,200/min | Balanced — good for most use cases |
| 3 (recommended) | ~1,500/min | Fast city scrapes, 1.6× speedup |
| 5 | ~1,500/min | Same as 3 — no extra benefit above 3 |
Higher concurrency uses the same number of requests and costs the same — it just finishes faster by running price buckets in parallel.
| Scenario | Time | Listings |
|---|---|---|
Quick test (maxResults: 5) | ~8s | 5 |
| 20 listings | ~15s | 20 |
1,000 listings (concurrency: 3) | ~40s | 1,000 |
| Full city, limited range | ~5–10 min | 2,000+ |
skipDetailPages: true for fastest runs. Detail enrichment adds ~2s per listing for amenities, host info, house rules, and calendar data.
Known limitations
- Prices shown are base nightly rates without check-in/check-out dates. Set
checkIn/checkOutfor exact stay pricing. - Cleaning fees, service fees, and taxes are not available in search results (only shown in Airbnb's booking checkout flow).
- Calendar prices (
calendar_data[].price) are null without date parameters — availability data is always present. - Very large cities at unlimited price ranges may take 30+ minutes to fully exhaust a market.
- KRW (Korean Won) and IDR (Indonesian Rupiah): Airbnb geo-restricts these currencies from datacenter IPs. The scraper automatically falls back to USD for Seoul and Bali searches — a
currency_fallback_notefield is added to each result. UseuseProxy: truefor native KRW/IDR pricing. - Enable
useProxy: truefor geo-specific results or if a run returns 0 items.
Technical details
- Pure HTTP scraping — no headless browser, no Playwright, no Puppeteer
- No proxy required by default; optional residential proxy for geo-specific pricing
- Proprietary full-market discovery algorithm — bypasses standard listing caps
- Progressive saving — listings written to dataset as discovered (safe for long runs)
- Circuit breaker and health signals on every run
Additional services
Need a custom data feed, scheduled runs, or data warehouse integration? Contact unfenced-group.
Part of the Unfenced Group scraper portfolio. Built by unfenced-group · Issues? Open a ticket or send a message.