Airbnb Search Scraper
Pricing
Pay per usage
Airbnb Search Scraper
Airbnb scraper for prices, ratings, beds, baths, coordinates and real availability. Skips listings that aren't free on your dates, and beats Airbnb's ~270-result limit by searching the map in tiles: 1,596 listings from one town instead of 270. Any city, any country.
Pricing
Pay per usage
Rating
5.0
(1)
Developer
Taha El Bahi
Maintained by CommunityActor stats
1
Bookmarked
1
Total users
0
Monthly active users
6 days ago
Last modified
Categories
Share
Airbnb Scraper — prices, real availability & full-city coverage
Scrape Airbnb search results into clean, structured data: nightly and total prices, ratings and review counts, bedrooms, beds and baths, coordinates, and property type — for any city in the world.
Two things make this scraper different from the others:
- Only places that are genuinely free on your dates. Airbnb pads its results with listings that are already booked, quoting them for a different stay instead. Ask for 17 nights and you get 11- and 16-night rows mixed in. This actor removes them.
- It gets past Airbnb's ~270-listing limit. Airbnb never returns more than about 270 results for a single search, however many properties exist. Turn on Full coverage and the actor splits the map into tiles and searches each one, then merges and de-duplicates. One small town returned 1,596 listings instead of 270.
It is also fast and cheap: results are read straight from the page, without running a browser, so a full city costs a fraction of what a browser-based scraper does.
What you get
| Field | Description |
|---|---|
position | Airbnb's own ranking within that search |
name | The listing's real title |
propertyType | e.g. "Apartment in Martil" |
url | Direct link to the listing |
checkIn, checkOut, nights | The stay actually priced |
price, pricePerNight, currency | Total and per-night |
rating, reviewsCount | |
bedrooms, beds, baths | Handles "1 double bed", studios and private rooms |
latitude, longitude | |
badges | e.g. "Guest favourite", "Superhost" |
searchUrl | Which search produced the row |
Turn on Fetch listing details and each row also gets maxGuests (the exact number of guests the
place sleeps), detailedPropertyType, sharedBath, and the listing page's own price with its full
breakdown.
How to use it
By city name — simplest:
{"searchText": "Barcelona","checkIn": "2026-08-02","checkOut": "2026-08-09","adults": 2,"maxItems": 100}
By search URL — for filters you set on airbnb.com yourself:
{"searchUrls": [{ "url": "https://www.airbnb.com/s/Paris--France/homes?room_types%5B%5D=Entire%20home%2Fapt" }],"checkIn": "2026-08-02","checkOut": "2026-08-09"}
Paste a URL you copied from Airbnb and leave the date and guest fields empty — whatever you picked on the site is kept. Fill them in only when you want to override the URL; the run log tells you when that happens.
Whole city:
{ "searchText": "Martil", "fullCoverage": true, "maxItems": 0, "maxTiles": 60 }
Useful settings
| Setting | What it does |
|---|---|
exactDatesOnly | Drop listings that aren't free on your dates (on by default) |
fullCoverage + maxTiles | Split the map to beat the ~270 cap |
minRating, minBedrooms, minBeds, minGuestCapacity | Filters |
propertyType | Keep only apartments, riads, villas, etc. |
proxyCountry | Airbnb prices and ranks by visitor location — pin one for consistent results |
useHttpFastPath | Fast mode, on by default; falls back to a browser automatically |
currency, locale | Keep language English for reliable bed/bath counts |
Good to know
- The top of the results is stable; the tail reshuffles. Four identical requests seven seconds
apart returned 17 of the same 18 listings with an identical top five, but 10-13 of the lower
positions moved. Treat high ranks as meaningful and low ranks as approximate.
positionrecords the rank as returned. - Results depend on where the request appears to come from. Rotating proxy IPs change the
apparent location and produce genuinely different result sets, which is a far bigger effect than
the reshuffling above. Pin
proxyCountryif you want runs to be comparable. - This is the anonymous view of Airbnb. Logged-in guests also get personalised results based on their booking history - someone who books cheaper places is steered toward cheaper listings. No scraper can see that, so treat this data as the baseline every guest starts from, not as what any particular guest sees.
- Running the same search twice and de-duplicating on
listingIdstill gives slightly better coverage than a single run. - Listing titles change between runs for the same property. Always key on
listingId. - Search cards and listing pages sometimes quote different totals. Enable Fetch listing details to also get the listing page's own price, which is what a guest would actually pay.
- Set
proxyCountryto the market you care about — which taxes and fees are included in a displayed total depends on where the visitor appears to be.
Disclaimer
This is an independent tool and is not affiliated with, endorsed by, or connected to Airbnb, Inc. Only public data is collected. You are responsible for how you use the data and for complying with applicable terms and laws.