Airbnb Listings Scraper avatar

Airbnb Listings Scraper

Pricing

from $1.05 / 1,000 listing scrapeds

Go to Apify Store
Airbnb Listings Scraper

Airbnb Listings Scraper

Scrape Airbnb stays for any destination and dates - total price, discount, rating, review count, room and bed counts, coordinates and photos, in the currency you ask for.

Pricing

from $1.05 / 1,000 listing scrapeds

Rating

0.0

(0)

Developer

Superslow Sloth

Superslow Sloth

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Returns Airbnb stays for any destination and any dates: what the whole stay costs, what it cost before the discount, the rating and how many reviews it is built on, the room and bed counts, the coordinates, the badges and every photo on the card.

Search several destinations in one run. Set the dates, the party size and the currency, and every row carries them, so a price in this dataset can be read without going back to the run's input.

A price is a price for something

Every figure here is what Airbnb quoted for the dates, guest count and currency this run asked for. That is why check_in, check_out, nights, adults, children, infants, pets and currency sit on the row itself rather than in a run summary - a total with no stay attached to it is not a number anyone can act on.

Two rules follow, and both are enforced rather than documented and hoped for:

  • Dates come in pairs. Airbnb silently ignores a lone check-in and prices an undated stay instead. A run that asked for five nights and got undated prices would look completely normal and be wrong in every row, so a single date fails the run at the boundary.
  • Set the currency. Left empty, Airbnb picks one from the exit address the run happens to use, and that is not stable between runs. Setting it is what makes two runs comparable.

Every stay is delivered and charged exactly once

Airbnb re-ranks its results between requests, so the same listing genuinely appears on more than one page - 4 of 18 listing ids were shared between page 1 and page 2 of a single search when this was measured on 2026-09-12. A stay also legitimately matches more than one of your destinations.

De-duplication is global across the whole run, and it happens before the charge. You are never billed twice for one stay.

How deep a search goes

A page carries about 18 stays, and Airbnb offers roughly 15 pages for a search - about 270 stays per destination, which is the site's own ceiling rather than a setting. More destinations is usually better than a deeper walk on one.

Output fields

FieldNotes
idAirbnb's room id, the one in airbnb.com/rooms/<id>.
urlThe listing on Airbnb.
titleAirbnb's own room-type-and-area heading, e.g. Rental unit in Nakagyo-ku.
nameThe host's own name for the place. A different string from title.
latitude, longitudeAirbnb's published coordinates for the stay.
ratingAverage out of 5. Null on a listing with no reviews yet.
reviews_countHow many reviews that average is built on.
price_totalTotal for the whole stay, in currency, as Airbnb quoted it.
price_originalThe struck-through total, on a discounted listing only.
price_display, price_qualifierExactly what Airbnb printed, and for 5 nights / per night.
currencyThree-letter code the quote is in.
nights, check_in, check_outThe stay the price is for.
adults, children, infants, petsThe party the price is for.
room_factsAirbnb's own card text, e.g. ["1 bedroom", "2 single beds", "2 baths"].
badgesLabels on the card, e.g. ["Guest favorite"], ["Superhost"].
image_urlsPhotos, in the order Airbnb shows them.
search_location, search_rankWhich of your searches produced this row, and where it sat on the page that produced it.

What this source does not give

Stated rather than guessed. A missing value is always null, never 0, because a zero reads as a measurement that was taken.

  • No rating on a new listing. A stay with no reviews carries rating: null and reviews_count: null, never 0 - a zero would drag any average computed over the dataset downwards and read as "rated badly".
  • Room counts are text, not numbers. room_facts is kept exactly as Airbnb prints it, because a card reading 4 apartments available is a real value that no bedroom count describes. Inventing bedrooms: 0 for it would be a lie about the listing.
  • Taxes and fees are not broken out. price_total is the figure Airbnb shows on the search card for the stay; the final checkout total can differ once Airbnb applies taxes for your own account.
  • price_original null means no discount was shown, not that the host has never discounted.
  • No host name, no amenity list, no availability calendar, no reviews. Those live on the listing page, not in search results, and this actor reads the search.
  • search_rank is not a stable ranking. Airbnb re-ranks between requests; it is where the listing sat on the page that produced this row.