Airbnb Scraper - Listings, Prices & Coordinates
Pricing
Pay per event
Airbnb Scraper - Listings, Prices & Coordinates
Scrape Airbnb listings for any destination. Extract nightly prices, discounts, ratings, reviews, GPS coordinates and room types. Export JSON/CSV.
Pricing
Pay per event
Rating
5.0
(2)
Developer
Santhej Kallada
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
18 hours ago
Last modified
Categories
Share
Airbnb Scraper — Listings, Prices, Ratings & Coordinates
Scrape Airbnb search results for any destination. Give it a city and get clean, structured listing rows — no API key, no login, no proxy setup.
$1.50 per 1,000 listings. One flat rate on every plan, including free.
Features
- Scrape Airbnb listings by destination — any city, region or country
- Extract Airbnb nightly prices and total stay prices
- Find discounted Airbnb listings — original price and discount flag captured
- Get Airbnb ratings and review counts — split into separate numeric fields
- Extract Airbnb GPS coordinates — latitude and longitude per listing
- Scrape Airbnb room types — entire home, private room, shared room, hotel room
- Filter Airbnb listings by price range — minimum and maximum nightly rate
- Search Airbnb by check-in and check-out dates — prices reflect the exact stay
- Set guest counts — adults and children
- Export Airbnb data to JSON, CSV or Excel — or pull it from the API
What you get
| Field | Description |
|---|---|
listingId | Airbnb's room ID — stable key for tracking a listing over time |
name | Listing title as the host wrote it |
url | Direct airbnb.com/rooms/… link |
totalPrice | Price for the whole stay, as a number |
originalPrice / isDiscounted | Strike-through price and discount flag when the host is discounting |
pricePerNight | Nightly rate parsed from the price breakdown |
priceDisplay / priceQualifier | $1,146 and for 5 nights, as Airbnb shows them |
currency | Currency symbol detected from the price |
rating / reviewCount | Average rating and number of reviews, split into separate numbers |
isNew | True for listings with no reviews yet |
latitude / longitude | GPS coordinates |
roomType | "1 bedroom", "Entire home", etc. |
badges | "Guest favourite", "Superhost", … |
images | Photo URLs |
checkIn / checkOut | Dates the prices apply to |
Plus searchLocation, sourcePage and scrapedAt.
Example input
{"locations": ["Lisbon, Portugal", "Porto, Portugal"],"checkIn": "2026-11-23","checkOut": "2026-11-28","adults": 2,"maxItems": 200,"minPrice": 50,"maxPrice": 400}
maxItems applies per destination, so two destinations at 200 each returns up to 400 listings.
What it's good for
- Short-term rental pricing — see what comparable listings charge on your dates
- Market supply analysis — how many listings, what types, what price bands per city
- Investment research — pair coordinates with price to map yield by neighbourhood
- Competitor tracking — watch a set of listings' prices and discounts over time
Things worth knowing
- Prices only appear when you set dates. Airbnb shows a total for a specific stay; without
checkIn/checkOutyou get listings and ratings but sparse pricing. Set dates if price is what you care about. - Airbnb caps a search at roughly 270 listings (15 pages × 18). Asking for more returns everything available, not an error. To go deeper, split a city into neighbourhoods or use price bands.
- Duplicates are removed before you are billed. Airbnb repeats listings across pages; we deduplicate on
listingIdand only charge for unique ones. - You are not billed for blocked or redirected pages. If Airbnb bounces the request to a country domain, it's retried automatically and never charged.
- Empty destinations cost $0.002. A destination returning nothing still requires a page fetch, so it carries a small zero-result charge. Destinations that return listings never do.
countrycontrols currency and language. It defaults tous(USD, English). Set it to match the market you're researching.
Pricing
| Event | Price |
|---|---|
| Listing returned | $0.0015 ($1.50 per 1,000) |
| Zero-result destination | $0.002 |
| Actor start | $0.0005 |
Flat across every Apify plan — no tier gating.
Output example
{"listingId": "1739902164963861734","name": "THE miniPENTHOUSE terrace & SPA","url": "https://www.airbnb.com/rooms/1739902164963861734","totalPrice": 1146,"originalPrice": 1273,"isDiscounted": true,"pricePerNight": 254.49,"priceDisplay": "$1,146","priceQualifier": "for 5 nights","rating": 5,"reviewCount": 243,"latitude": 38.7121,"longitude": -9.1288,"roomType": "1 bedroom","searchLocation": "Lisbon, Portugal"}
FAQ
Do I need an Airbnb API key or account? No. Nothing to register, no login, no cookies.
Why are some prices missing?
Airbnb only shows a price for a specific stay. Set checkIn and checkOut and every listing returns a price; without dates, pricing is sparse by design.
Are duplicate listings billed?
No. Airbnb repeats listings across pages; results are deduplicated on listingId and only unique listings are charged.
How many listings can I get per destination? Around 270 — Airbnb itself caps a search at roughly 15 pages of 18. To go deeper, split a city into neighbourhoods or use price bands.
What happens if Airbnb redirects or blocks a request?
It is retried automatically with a different exit, and any page that still fails is skipped without charge. Runs report blocked_pages.
Can I get prices in a different currency?
Yes — the country option controls the exit location, which determines the currency and language Airbnb returns.
Can I run this on a schedule? Yes — use Apify's scheduler for recurring rate monitoring, or trigger it from your own pipeline via API.
Support
Open an issue on the Actor's Issues tab and I'll take a look.