Airbnb Listings Scraper
Pricing
from $1.05 / 1,000 listing scrapeds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
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
| Field | Notes |
|---|---|
id | Airbnb's room id, the one in airbnb.com/rooms/<id>. |
url | The listing on Airbnb. |
title | Airbnb's own room-type-and-area heading, e.g. Rental unit in Nakagyo-ku. |
name | The host's own name for the place. A different string from title. |
latitude, longitude | Airbnb's published coordinates for the stay. |
rating | Average out of 5. Null on a listing with no reviews yet. |
reviews_count | How many reviews that average is built on. |
price_total | Total for the whole stay, in currency, as Airbnb quoted it. |
price_original | The struck-through total, on a discounted listing only. |
price_display, price_qualifier | Exactly what Airbnb printed, and for 5 nights / per night. |
currency | Three-letter code the quote is in. |
nights, check_in, check_out | The stay the price is for. |
adults, children, infants, pets | The party the price is for. |
room_facts | Airbnb's own card text, e.g. ["1 bedroom", "2 single beds", "2 baths"]. |
badges | Labels on the card, e.g. ["Guest favorite"], ["Superhost"]. |
image_urls | Photos, in the order Airbnb shows them. |
search_location, search_rank | Which 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: nullandreviews_count: null, never0- a zero would drag any average computed over the dataset downwards and read as "rated badly". - Room counts are text, not numbers.
room_factsis kept exactly as Airbnb prints it, because a card reading4 apartments availableis a real value that no bedroom count describes. Inventingbedrooms: 0for it would be a lie about the listing. - Taxes and fees are not broken out.
price_totalis 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_originalnull 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_rankis not a stable ranking. Airbnb re-ranks between requests; it is where the listing sat on the page that produced this row.