Airbnb Listings Scraper
Pricing
from $0.99 / 1,000 results
Airbnb Listings Scraper
Scrape public Airbnb search results and listing detail pages — titles, full descriptions, prices, ratings, amenities, hosts, and photo galleries. Honest completeness and pagination flags; incomplete rows are never billed.
Pricing
from $0.99 / 1,000 results
Rating
0.0
(0)
Developer
rainminer
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a month ago
Last modified
Categories
Share

What does Airbnb Listings Scraper do?
Airbnb Listings Scraper extracts public vacation-rental data from Airbnb search and listing detail pages. Paste a homes search URL, a city/location query, and/or direct /rooms/ links, and get structured rows with full descriptions, prices, ratings, amenities, host signals, coordinates, and photo galleries.
Input and output field names align with the popular Store Actor tri_angle/airbnb-scraper so existing workflows can switch with minimal friction — while this Actor keeps complete descriptions and honest completeness flags.
Use it for short-term rental market research, competitive pricing, inventory monitoring, or feeding listing datasets into spreadsheets, BI tools, and internal apps. Export JSON, CSV, Excel, HTML, or pull results through the Apify API.
Why this scraper?
Popular Airbnb Actors often return search cards without descriptions, break after layout/API churn, or bill for empty/partial rows. This Actor is built around a clear wedge:
- Opens each listing detail page to capture the complete public description (not just the search subtitle).
- Sets honest flags:
hasDescription,descriptionFetchFailed,isComplete,hasMoreSearchPages,paginationComplete. - Never bills incomplete rows — only listings with a non-empty description are charged when pay-per-event is enabled.
- Uses Airbnb’s public embedded page data (no login, no user cookies).
- Accepts the same core inputs as
tri_angle/airbnb-scraper(locationQueries,maxResults, dates, guests, price filters, locale, currency).
What Airbnb data can you extract?
| Field | Description |
|---|---|
id / listingId / url | Public listing id and canonical /rooms/ URL |
androidLink / iosLink | Deep links |
title, seoTitle, sharingConfigTitle, metaDescription | Titles and SEO snippets when exposed |
description / htmlDescription / descriptionHtml | Full public description (plain + HTML) |
roomType / propertyType / homeTier / personCapacity | Stay type and capacity |
location / city / coordinates / latitude / longitude | Location strings and map coordinates |
subDescription | Overview chips (guests / beds / baths) |
amenities | Structured amenity groups (title + values[]) |
amenityTitles | Flat list of available amenity titles |
host / hostName / hostIsSuperhost / hostIsVerified | Public host signals |
rating / ratingAverage / reviewsCount | Guest rating summary (+ category scores when present) |
price / priceLabel / checkIn / checkOut | Price/date context |
thumbnail / imageUrl / imageUrls / images | Primary photo + gallery (absolute https URLs) |
highlights, houseRules, cancellationPolicies | Extra listing context when publicly present |
hasDescription, isComplete, descriptionFetchFailed | Completeness flags |
searchPage, hasMoreSearchPages, paginationComplete | Honest pagination context |
timestamp / scrapedAt | Scrape time |
How to scrape Airbnb listings
- Open the Actor input tab.
- Add location queries (e.g.
Paris) and/or Airbnb homes search //rooms/{id}URLs. - Optionally set check-in/out, guests, price range, locale, and currency — same names as
tri_angle/airbnb-scraper. - Set
maxItems(ormaxResults) to control dataset rows per start URL / location query. Incomplete rows count toward this limit but are never billed. - Run the Actor and download the dataset.
The Actor only extracts public listing data. It does not require Airbnb account credentials or session cookies.
How much does scraping Airbnb cost?
When pay-per-event monetization is enabled, you pay once per complete listing saved with a real description. Incomplete rows (blocked/missing description) may appear with flags for debugging but are not billed.
Apify adds scheduling, API access, dataset storage, webhooks, and integrations so Airbnb monitoring can run automatically.
Input example
{"locationQueries": ["Paris"],"startUrls": [{ "url": "https://www.airbnb.com/s/Paris--France/homes" }],"maxItems": 5,"checkIn": "2026-09-01","checkOut": "2026-09-05","adults": 2,"currency": "USD","locale": "en-US","proxyConfiguration": { "useApifyProxy": false }}
maxResults is accepted as an alias of maxItems. enrichUserProfiles is accepted for compatibility; host fields are taken from the public listing page (no separate profile crawl).
Output example
{"id": "1729686443151285482","listingId": "1729686443151285482","url": "https://www.airbnb.com/rooms/1729686443151285482","androidLink": "airbnb://rooms/1729686443151285482","iosLink": "airbnb://rooms/1729686443151285482","title": "Secret terrace in the heart of historic Marais","description": "Located in charming Le Marais, inside an authentic medieval building...","htmlDescription": "Located in charming Le Marais...","roomType": "Entire home/apt","propertyType": "Entire rental unit in Paris, France","location": "Paris, Île-de-France, France","city": "Paris","coordinates": { "latitude": 48.8559, "longitude": 2.3569 },"latitude": 48.8559,"longitude": 2.3569,"personCapacity": 2,"bedrooms": 1,"beds": 1,"baths": 1,"subDescription": {"title": "Entire rental unit in Paris, France","items": ["2 guests", "1 bedroom", "1 bed", "1 bath"]},"amenities": [{"title": null,"values": [{"title": "Kitchen","subtitle": null,"icon": null,"available": true}]}],"amenityTitles": ["Kitchen", "Wifi", "Washer"],"host": { "name": "Noa", "isSuperhost": false, "isVerified": true },"rating": { "guestSatisfaction": 5, "reviewsCount": 1 },"price": {"label": "$482 for 5 nights","qualifier": "for 5 nights","price": "$482"},"priceLabel": "$482 for 5 nights","thumbnail": "https://a0.muscache.com/im/pictures/...","imageUrl": "https://a0.muscache.com/im/pictures/...","imageUrls": ["https://a0.muscache.com/im/pictures/..."],"images": [{"imageUrl": "https://a0.muscache.com/im/pictures/...","caption": null,"orientation": null}],"hasDescription": true,"descriptionFetchFailed": false,"isComplete": true,"searchPage": 1,"hasMoreSearchPages": true,"paginationComplete": false,"timestamp": "2026-08-08T10:00:00.000Z","scrapedAt": "2026-08-08T10:00:00.000Z"}
FAQ
Is it legal to scrape Airbnb?
This Actor extracts publicly visible listing pages only. Make sure your use case has a lawful basis and respects Airbnb’s terms and applicable regulations.
Does this Actor need login cookies?
No. It scrapes public search and listing pages without account credentials.
Why are some rows marked incomplete?
If a detail page is blocked or missing embedded description data, the Actor may still export the search-card fields with descriptionFetchFailed: true and isComplete: false. Those rows are not billed.
Can I scrape cities outside the US site?
Yes. Use the Airbnb domain and search URL for your market (for example airbnb.co.uk, airbnb.fr). Filters and dates in the URL are kept. Location queries default to airbnb.com with your chosen locale / currency.
How does this compare to tri_angle/airbnb-scraper?
Core inputs (locationQueries, maxResults, dates, guests, price filters, locale, currency) and the main output keys (id, url, title, description, htmlDescription, coordinates, images, amenities, price, rating, host, …) are aligned. This Actor additionally returns full descriptions more reliably, flat amenityTitles, imageUrl/imageUrls, and explicit completeness/pagination flags — and never bills hollow rows.
Image Credit
Image credit: Airbnb