Airbnb Search Scraper avatar

Airbnb Search Scraper

Pricing

Pay per usage

Go to Apify Store
Airbnb Search Scraper

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

Taha El Bahi

Maintained by Community

Actor stats

1

Bookmarked

1

Total users

0

Monthly active users

6 days ago

Last modified

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

FieldDescription
positionAirbnb's own ranking within that search
nameThe listing's real title
propertyTypee.g. "Apartment in Martil"
urlDirect link to the listing
checkIn, checkOut, nightsThe stay actually priced
price, pricePerNight, currencyTotal and per-night
rating, reviewsCount
bedrooms, beds, bathsHandles "1 double bed", studios and private rooms
latitude, longitude
badgese.g. "Guest favourite", "Superhost"
searchUrlWhich 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

SettingWhat it does
exactDatesOnlyDrop listings that aren't free on your dates (on by default)
fullCoverage + maxTilesSplit the map to beat the ~270 cap
minRating, minBedrooms, minBeds, minGuestCapacityFilters
propertyTypeKeep only apartments, riads, villas, etc.
proxyCountryAirbnb prices and ranks by visitor location — pin one for consistent results
useHttpFastPathFast mode, on by default; falls back to a browser automatically
currency, localeKeep 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. position records 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 proxyCountry if 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 listingId still 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 proxyCountry to 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.