Airbnb Scraper — Prices, Ratings & Coordinates
Pricing
from $2.00 / 1,000 listing returneds
Airbnb Scraper — Prices, Ratings & Coordinates
Airbnb price monitoring and short-term rental market research: price, rating, reviews, property type, neighborhood and coordinates for any city.
Pricing
from $2.00 / 1,000 listing returneds
Rating
0.0
(0)
Developer
Diseño Web de Colombia
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Type a city. Get every listing with its price, rating and exact location.
What is the Airbnb Scraper?
This Actor extracts Airbnb listings for any city or area: the listing name, property type, neighbourhood, rating, review count, price with the struck-through original when there is a discount, the dates that price refers to, exact coordinates, photo and the direct Airbnb link.
It runs without a headless browser, which is unusual for Airbnb and is why runs finish in seconds instead of minutes.
No browser, so it is fast and cheap
Airbnb embeds its search results directly in the page HTML. This Actor reads them straight from there — no headless Chrome to start, no JavaScript to wait for.
Measured: a run returning 53 listings finishes in about 30 seconds and peaks at 120 MB of memory. That matters to you because Apify bills memory multiplied by time, so a lighter Actor is a cheaper one.
It also survives Airbnb's blocking properly. Each attempt uses a fresh IP, and a failure part-way through pagination delivers the listings already collected rather than throwing the whole run away. Measured across 10 consecutive cloud runs: 10 succeeded.
What you can use it for
| What you want | How to ask for it |
|---|---|
| Price monitoring — what do comparable places charge? | location + checkIn/checkOut, read priceText |
| Revenue management — set your nightly rate | Same dates and guest count as your own listing |
| Short-term rental market research | location, read rating, reviewsCount, propertyType |
| Real estate data — yield estimates by area | lat/lon plus price, grouped by neighborhood |
| Occupancy signals — what is already booked | Run the same dates repeatedly; listings that vanish are booked |
| Competitor tracking — a specific set of hosts | Narrow by location and minRating |
| Mapping and geo analysis | Every row carries exact lat and lon |
| Seasonality — how prices move across the year | Same search, different checkIn months |
Typical jobs: price monitoring, short-term rental and vacation rental market research, real estate data collection, and revenue management.
What data you get
Listing name, property type, neighbourhood, rating, review count, price text with currency, parsed price amount, original price before discount, the stay dates that price covers, badge, latitude, longitude, photo URL and the Airbnb listing link.
Input
Every field is optional unless marked required.
| Field | Type | Description |
|---|---|---|
location | string, required | Type it the way you would on Airbnb: Madrid, Miami Beach, Lisbon, Bali. It must be a place Airbnb recognises — if it does not, Airbnb quietly returns unrelated listings instead of an error, so check the first rows before running a big job. |
checkIn | string | Format YYYY-MM-DD. Leave both dates empty for Airbnb's default dates. Prices always refer to the dates actually used. |
checkOut | string | Format YYYY-MM-DD. Must be later than the check-in date. |
adults | integer | Number of adults. Changes which listings Airbnb shows and what they cost. |
minRating | integer | Keeps only listings rated at or above this. Note that brand-new listings have no rating yet and are dropped by this filter. |
maxPages | integer | Each page is 18 listings. Airbnb caps a search at about 270 listings, so 15 pages is the practical maximum. |
maxResults | integer | Safety cap. You are charged per listing returned. |
proxyConfiguration | object | Required. Airbnb blocks datacenter IPs, including Apify's, so runs without a residential proxy come back empty. |
Input sample
{"location": "Madrid","proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Output sample
One real row from an actual run:
{"id": "1279100007550603724","url": "https://www.airbnb.com/rooms/1279100007550603724","name": "Madrid´s sky Luxury Penthouse 6Pax. 10 min Airport","title": "Apartment in San Sebastián de los Reyes","propertyType": "Apartment","neighborhood": "San Sebastián de los Reyes","rating": 4.98,"reviewsCount": 242,"priceText": "$1,687 for 5 nights, originally $2,788","priceAmount": 1687,"currency": "USD","originalPriceText": "$2,788","stayDates": "Oct 8 – 13","badge": "Guest favorite","lat": 40.5533,"lon": -3.6178,"imageUrl": "https://a0.muscache.com/im/pictures/hosting/Hosting-U3RheVN1cHBseUxpc3Rpbmc6MTI3OTEwMDAwNzU1MDYwMzcyNA%3D%3D/original/8ab6b544-bfeb-4708-b983-2b4e55b3ea57.jpeg"}
Who uses this
- Short-term rental hosts — see what comparable places charge on your dates
- Property investors — yield estimates from real prices, by neighbourhood
- Market researchers — price distribution with coordinates for mapping
- Travel tools — inventory with ratings and working links
- Revenue managers — track competitor pricing across a season
Honest limits
These are real and none of them is fixable by any tool. They are here so you know what you are buying before you run it.
- A residential proxy is required. Airbnb blocks datacenter IPs, Apify's included. The default input already asks for one.
- Airbnb caps a search at about 270 listings — 15 pages of 18. There is no way to page past it. Narrow by dates, guests or a smaller area to reach different listings.
- A location Airbnb does not recognise returns unrelated listings, not an error. Measured: a nonsense place name still came back with 18 listings. Check the first rows before launching a large run.
- The currency follows the IP the run uses, not a setting. A run through a US proxy prices in USD. The
priceTextfield always states the currency. - Prices are for a stay length, not per night. "for 5 nights" is the total. Set check-in and check-out for a defined window.
- Listings with no reviews have no rating, and the minimum-rating filter drops them along with genuinely new listings.
FAQ
Do I need an Airbnb account?
No. This reads the public search pages that any logged-out visitor sees.
Why can I only get about 270 listings per search?
That is Airbnb's own limit — it stops paginating after 15 pages. To cover a large city, split the search: by neighbourhood, by date range, or by guest count. Each variation returns a different slice.
Why is the price in a currency I did not ask for?
Airbnb decides the currency from the IP address of the request, and the proxy determines that. There is no setting to override it. priceText always spells out which currency you got, and currency is parsed from it.
Is the price per night?
No. Airbnb quotes a total for a stay, and the row tells you which stay — for example "for 5 nights". Set your own check-in and check-out dates if you need a fixed comparison window.
Why did a made-up city still return listings?
Because Airbnb silently falls back instead of erroring, and there is no signal in the response to detect it — I checked the results block, the metadata and the page title. Always eyeball the first rows of a new search.
Can I get reviews for each listing?
Not in this Actor. It returns the listing-level data from search results, including the rating and review count, but not the individual reviews.
Do I need an account or an API key for the source?
No. This Actor only reads public pages and public endpoints, the same ones any logged-out visitor sees. You never give it credentials, and nothing is done on your behalf.
Is it legal to scrape this data?
Scraping publicly available information is broadly accepted as legal, and this Actor only ever touches pages that require no login. That said, what you may do with the data afterwards is a separate question — personal data in particular is regulated by GDPR and CCPA. If you plan to process personal data, take advice first. Apify has a good primer: Is web scraping legal?
How much will a run cost me?
You are charged per result, so the cost scales with what you actually get back. The pricing is shown on this page above the input form. Start with a small run to see real numbers before you scale up.
Can I export to Excel, CSV or Google Sheets?
Yes. Every run's dataset can be downloaded as CSV, Excel, JSON, XML or HTML from the Storage tab, and Apify integrates directly with Google Sheets, Airtable, Zapier, Make and Slack.
Can I run this on a schedule?
Yes. Open the Schedules tab and pick an interval — hourly, daily, weekly. Each run only costs you what it returns.
Can I call it from my own code instead of the console?
Yes. Every Actor on Apify is also an API endpoint. There are official clients for Python and JavaScript, plus a plain REST API. The API tab on this page shows ready-made snippets with your input already filled in.
Something came back empty. Is it broken?
Usually not. An empty result normally means the filters were too narrow, or the source genuinely has nothing to return for that query. This Actor is written to finish successfully and tell you what happened rather than fail — check the run log, it says which step returned nothing.
Related Actors
- Local Business Scraper with Emails — local businesses from OpenStreetMap
- Google Trends Scraper — seasonality and demand by region
Where the data comes from
The public Airbnb search pages, exactly as a logged-out visitor sees them. No login, no account, and no personal data about hosts beyond the public listing name Airbnb already displays.