Airbnb Scraper - Listings, Prices & Reviews
Pricing
from $1.99 / 1,000 results
Airbnb Scraper - Listings, Prices & Reviews
Unofficial Airbnb API & scraper: get listings at scale — price, rating, reviews, room type, amenities, coordinates & images. No login, no API key. Hundreds per search.
Pricing
from $1.99 / 1,000 results
Rating
0.0
(0)
Developer
Logiover
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
📌 Overview
The Airbnb Scraper collects short-term-rental listings from any list of locations or Airbnb search URLs and returns each listing with rich, analysis-ready metadata: title, price, rating, review count, exact coordinates, room type, bed/bath layout, badges (e.g. Guest favorite), payment messages and all listing photos. It paginates each search to pull hundreds of listings per location and de-duplicates across pages.
It needs no login, no cookies and no API key — it reads only public search data through residential proxies, so there's zero risk to any Airbnb account. With no headless browser, it's a fast and low-cost way to assemble large rental datasets.
✅ Add many locations (or paste filtered search URLs) and raise
maxResultsto build a market-wide Airbnb dataset in a single run.
✨ Features
| Feature | Description | |
|---|---|---|
| 📦 | Hundreds per search | Cursor pagination walks the full public result set per location. |
| 💲 | Full pricing | Nightly or total-for-stay price, currency and qualifier. |
| ⭐ | Ratings & reviews | Average rating and review count per listing. |
| 📍 | GPS coordinates | Exact latitude / longitude for mapping & geo-analysis. |
| 🛏️ | Room layout | Room type, bedrooms, beds and bathrooms. |
| 🖼️ | All photos | Every listing image URL, plus a thumbnail. |
| 🏅 | Badges & signals | Guest favorite, free cancellation, "Pay $0 today" and more. |
| 👤 | Host details | Optional: host name, Superhost status, profile link, years hosting, rating & highlights. |
| 🧰 | Full amenities | Optional: complete grouped amenities list (available and unavailable). |
| 📝 | Rich detail | Optional: full description, house rules, cancellation policy and per-category rating breakdown. |
| 🗓️ | Date & guest filters | Check-in / check-out, guests, price, bedrooms, room type. |
| ⚡ | No browser | Lightweight HTTP access — fast and cheap at scale. |
| 🛡️ | Login-free & safe | Public data over residential proxies — no account, no ban risk. |
| 📤 | Any format | Export to JSON, CSV, Excel, HTML or pull via API & webhooks. |
🎯 Who it's for
- Real-estate & STR investors — analyse supply, pricing and occupancy signals in a market.
- Revenue managers & hosts — benchmark comparable listings and tune nightly rates.
- Travel & proptech products — power search, maps and price-comparison features.
- Data science & ML — build geo-tagged rental datasets for modelling and trends.
- Market researchers — measure inventory and amenity mix across cities.
🧾 Input
| Field | Type | Description |
|---|---|---|
location | string | A place to search, e.g. Paris, France. |
locations | array | Search several places in one run. |
searchUrls | array | Paste full Airbnb search URLs (any filters/map area applied). |
checkIn / checkOut | string | Optional stay dates (YYYY-MM-DD). Prices become total-for-stay. |
adults / children / infants / pets | integer | Guest counts. |
minPrice / maxPrice | integer | Nightly price range filter. |
minBedrooms / minBeds / minBathrooms | integer | Layout filters. |
roomTypes | array | Entire home/apt · Private room · Shared room · Hotel room. |
currency | string | Price currency (ISO code). Default USD. |
maxResults | integer | Global cap on listings saved. Default 200. |
includeDetails | boolean | Visit each listing's room page to add host, full amenities, description, house rules, per-category rating breakdown and highlights. Adds 1 request per listing. Default false. |
detailConcurrency | integer | Parallel detail-page fetches when includeDetails is on (1–10). Default 5. |
proxyConfiguration | object | Residential proxy (required). Pre-configured for you. |
Example input
{"location": "Paris, France","checkIn": "2026-08-01","checkOut": "2026-08-05","adults": 2,"currency": "EUR","maxResults": 300}
📦 Output
Each listing is saved as one structured record:
{"id": "49770156","url": "https://www.airbnb.com/rooms/49770156","name": "Bright apartment with Eiffel Tower view","title": "Apartment in 15th Arrondissement","subtitle": "Bright apartment with Eiffel Tower view","roomType": "Apartment in 15th Arrondissement","rating": 5.0,"reviewsCount": 13,"ratingLabel": "5.0 (13)","price": 1406,"priceLabel": "$1,406","priceQualifier": "for 5 nights","currency": "$","coordinates": { "latitude": 48.8532, "longitude": 2.29504 },"roomInfo": { "bedrooms": "1 bedroom", "beds": "1 bed", "bathrooms": "1 bath" },"badges": ["Guest favorite"],"isGuestFavorite": true,"paymentMessages": ["Pay $0 today", "Free cancellation"],"images": ["https://a0.muscache.com/im/pictures/hosting/.../original/....jpeg"],"thumbnail": "https://a0.muscache.com/im/pictures/hosting/.../original/....jpeg","searchLocation": "Paris, France","scrapedAt": "2026-06-04T12:00:00.000Z"}
📖 Output field reference
| Field | Description |
|---|---|
id / url | Listing ID and direct airbnb.com/rooms/... link |
name / title / subtitle | Listing name, headline (room type + area) and tagline |
roomType | Property/room type as shown in search |
rating / reviewsCount / ratingLabel | Average rating, number of reviews and raw label |
price / priceLabel / priceQualifier / currency | Numeric price, display string, qualifier and currency |
coordinates | Latitude / longitude for mapping |
roomInfo | Bedrooms, beds and bathrooms |
badges / isGuestFavorite | Listing badges and the Guest-favorite flag |
paymentMessages | e.g. "Free cancellation", "Pay $0 today" |
images / thumbnail | All photo URLs and a thumbnail |
searchLocation / searchUrl / scrapedAt | Provenance and timestamp |
🔎 Extra fields when includeDetails is enabled
Setting includeDetails: true visits each listing's room page (1 extra request per
listing) and merges these fields into the record:
| Field | Description |
|---|---|
host | { name, id, url, isSuperhost, isVerified, profilePictureUrl, ratingAverage, ratingCount, yearsHosting, monthsHosting, highlights[], about } |
amenities | Full list of available amenities (e.g. Wifi, Kitchen, Washer) |
amenitiesUnavailable | Amenities the place explicitly does not offer |
amenityGroups | Amenities grouped by category with available flag and subtitles |
description | Full listing description (plain text) |
propertyType | e.g. "Entire rental unit in Paris, France" |
capacity | e.g. ["2 guests", "1 bedroom", "1 bed", "1 bath"] |
summaryTitle | Compact summary line, e.g. "Rental unit in Paris · ★5.0 · 1 bedroom · 1 bed · 1 shared bath" |
ratingBreakdown | Per-category ratings: cleanliness, accuracy, checkin, communication, location, value |
houseRules / houseRulesDetailed | Quick rules and the grouped house-rules sections |
cancellationPolicy | Cancellation policy name (e.g. "Flexible") |
highlights | Listing highlights (headline + body) |
locationSubtitle | Neighbourhood / area subtitle |
⚠️
includeDetailsadds one request per listing, so runs are slower and use a little more compute. Leave it off (default) for fast, low-cost search-only scraping.
{"host": {"name": "Marguerite","id": "45878911","url": "https://www.airbnb.com/users/show/45878911","isSuperhost": true,"ratingAverage": 4.81,"ratingCount": 97,"yearsHosting": 10,"highlights": ["Speaks English, French, and Spanish"]},"amenities": ["Kitchen", "Wifi", "Washer", "Hair dryer", "Refrigerator"],"amenitiesUnavailable": ["TV", "Dryer", "Air conditioning"],"ratingBreakdown": { "cleanliness": 4.8, "accuracy": 5.0, "checkin": 5.0, "communication": 5.0, "location": 5.0, "value": 4.9 },"houseRules": ["Flexible check-in", "Checkout before 12:00 PM", "2 guests maximum"],"cancellationPolicy": "Flexible"}
⚙️ How it works
- You provide one or more locations or Airbnb search URLs (with any filters).
- The actor loads each public search page over a residential proxy and reads the embedded listing data.
- It paginates the result set, parsing each listing into a clean, geo-tagged record.
- Results are de-duplicated and streamed to your dataset.
No login, no cookies, no API keys — and no Airbnb account is ever used or risked.
❓ FAQ
Is there an Airbnb API, and do I need a key?
Airbnb has no public listings API for scraping prices and reviews. This actor is a no-API-key Airbnb alternative — it reads public search pages, so you get listing data with no Airbnb developer key, no login and no cookies.
Does this Airbnb scraper need a login?
No. It collects only public listing data over residential proxies, so no Airbnb account is ever used or put at risk.
How many Airbnb listings can I scrape per search?
Hundreds per location — it paginates the full public result set. Add multiple locations or paste filtered search URLs to scale into the thousands of listings.
Are GPS coordinates included?
Yes — every listing includes exact latitude and longitude, ideal for maps, heatmaps and geo-analysis.
Can I export Airbnb data to CSV or Excel?
Yes — results stream to a dataset you can download as CSV, JSON, Excel or HTML, or pull live via the Apify API and webhooks.
Can I use my own filtered Airbnb search URL?
Yes — paste any Airbnb search URL into searchUrls (dates, guests, price, map area, room type) and the actor paginates it as-is.
Do I get total price or nightly price?
Set checkIn and checkOut to get the total-for-stay price; leave them empty for the nightly display price.
Is this an unofficial Airbnb API / Airbnb API alternative?
Yes — think of it as an unofficial Airbnb API. Airbnb has no public data API, so this actor is the practical Airbnb API alternative: call it over HTTP, pass a location or search URL, and get structured JSON back — no scraper code to maintain.
How do I export an Airbnb dataset (CSV / JSON / Excel)?
Every run builds a clean Airbnb dataset you can download as CSV, JSON, Excel or HTML, or pull straight into your warehouse via the Apify API. Ideal for an Airbnb price dataset, market research or short-term-rental analytics.
Can I get Airbnb rental price data for a whole city or market?
Yes — point it at a city, neighborhood or filtered map area and it returns every public listing's price, availability and reviews, so you can build city-level Airbnb rental data and track price trends over time.
🔗 Works great with
- 🏨 Booking.com Hotels & Prices Scraper — compare hotel and rental pricing side by side.
- 🗺️ Google Maps / Places datasets — enrich listing coordinates with nearby POIs.
📝 Changelog
2026-06-07
- 📚 Docs: added coverage for Airbnb API alternative, Airbnb data export / dataset and city-level rental price data use cases.
2026-06-05
- 🛡️ Reliability fix: results are no longer dropped by strict output validation — runs now complete cleanly even at high volume (thousands of results).
- ⚡ Stability & performance hardening; fresh rebuild.
2026-06-04
- Added optional
includeDetailsmode — enriches each listing from its room page with host (name, Superhost, profile, stats), full amenities list (available + unavailable), description, house rules, cancellation policy, per-category rating breakdown, highlights and coordinates. Adds 1 request per listing; search-only behaviour unchanged when off. - Initial release — search by location or URL, full listing fields, cursor pagination.