Airbnb Scraper: Listings, Reviews, Prices & Availability
Under maintenancePricing
from $0.69 / 1,000 airbnb listings
Airbnb Scraper: Listings, Reviews, Prices & Availability
Under maintenanceScrape Airbnb listings by city, search URL, or property URL. Extract prices, fees, ratings, amenities, host details, photos, complete review text and scores, availability calendars, and structured rental-market data.
Pricing
from $0.69 / 1,000 airbnb listings
Rating
0.0
(0)
Developer
Shadow Extractor
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
3 days ago
Last modified
Categories
Share
π‘ Airbnb Listings, Reviews & Calendar Scraper
Build structured Airbnb datasets from location searches or direct listing URLs. Collect listing cards, live price signals, property details, host profiles, amenities, house rules, full guest review text, review intelligence, and 12-month availability metrics.
Use the Actor for short-term rental research, competitor tracking, pricing comparisons, listing audits, guest sentiment analysis, and repeatable market monitoring.
New here? Choose Quick test, enter one location, and collect 10 listings. You can move to reviews, calendars, and monitoring after checking the sample output.
β¨ What You Can Collect
| Data group | Examples |
|---|---|
| π Listing | ID, title, Airbnb URL, room type, property type, capacity, bedrooms, beds, bathrooms |
| π Location | Display location, neighborhood, coordinates when available |
| πΈ Pricing | Display price, nightly price, total price, original total, selected currency, availability signal |
| β Reputation | Listing rating, public review count, rating categories, listing badges |
| π€ Host | Name, Superhost and verification signals, rating, hosting experience, biography, cohosts, profile photo |
| π§Ύ Property details | Amenities, unavailable amenities, house rules, safety notes, highlights, sleeping setup |
| π¬ Reviews | Full review text, reviewer, date, language, per-review rating, reviewer profile picture, host response |
| π Review intelligence | Rating breakdown, health score, positive/negative share, common pros, common issues, recent low ratings |
| π Calendar | Available and blocked days, availability percentage, occupancy estimate, 30/90/365-day windows |
| π Monitoring | New, changed, and removed listings with previous and current values |
Airbnb does not expose every field for every listing. Optional values are returned only when present in the live source data.
π Start in Three Steps
- Pick a Research preset.
- Add a location or direct Airbnb listing URLs.
- Set the listing limit and click Start.
Minimal Market Search
{"researchPreset": "quick-test","locationQueries": ["Prague"]}
Detailed Market Sample
{"researchPreset": "full-audit","locationQueries": ["Barcelona"],"checkIn": "2026-09-10","checkOut": "2026-09-14","adults": 2,"maxItemsPerQuery": 10,"currency": "EUR","locale": "en"}
Direct Listing Audit
{"researchPreset": "full-audit","startUrls": [{ "url": "https://www.airbnb.com/rooms/123456789" }],"checkIn": "2026-09-10","checkOut": "2026-09-14","adults": 2,"currency": "USD"}
ποΈ Research Presets
Presets configure the mode and related enrichment switches for you.
| Preset | Best for | Applied behavior |
|---|---|---|
quick-test | First run | Fast search, at most 10 results per location, reviews/calendar/monitoring off |
market-scan | Price and supply research | Fast location search, reviews and calendar off |
review-intelligence | Guest feedback analysis | Full search or direct URLs, reviews on, calendar off |
full-audit | Complete listing inspection | Full search or direct URLs, reviews and calendar on |
monitor | Repeated market tracking | Fast search or direct URLs, monitoring on |
custom | Exact manual control | Keeps the mode and enrichment settings you provide |
Important Preset Behavior
A preset owns its related settings. For example:
quick-testalways disables reviews, calendar, and monitoring;market-scanalways disables reviews and calendar;review-intelligencealways enables reviews and disables calendar;full-auditalways enables both reviews and calendar;monitoralways enables monitoring.
Choose custom when you want the form switches to be followed exactly.
For direct URL runs, every valid URL you provide is processed. The 10-item Quick test cap applies to location search results, so keep the direct URL list small when testing.
π§ Run Modes
| Mode | Source | What it does |
|---|---|---|
auto | Location or URLs | Uses urls when valid listing URLs exist; otherwise uses search-fast |
search-fast | locationQueries | Collects paginated search cards, prices, ratings, photos, capacity, and basic property data |
search-full | locationQueries | Finds listings, then opens each listing data source for richer property, host, amenity, review, and calendar fields |
urls | startUrls | Scrapes specific Airbnb room URLs directly |
Reviews and calendar enrichment work in search-full and urls. A search-fast run remains a fast card-level scan even if those switches are included in custom JSON.
Data Flow
Location query βββΊ search-fast βββΊ Listing cards ββββββββββββββββΊ Listings datasetββββββββββββΊ search-full βββΊ Listing details ββ¬ββββββββββββΊ Listings datasetβββββββββββββΊ Hosts datasetDirect room URL ββΊ urls ββββββββββββββββββββββββββββΌββββββββββββΊ Amenities datasetβββββββββββββΊ House rules datasetββ reviews ββΊ Reviews + summary datasetsββ calendar βΊ Calendar metricsSaved listings + stable monitor key ββββββββββββββββΊ Monitor changes dataset
π Location Search
Add cities, neighborhoods, regions, or Airbnb search URLs to locationQueries.
{"researchPreset": "market-scan","mode": "search-fast","locationQueries": ["Prague Old Town","Vinohrady, Prague"],"checkIn": "2026-08-15","checkOut": "2026-08-20","adults": 2,"maxItemsPerQuery": 50,"currency": "EUR","locale": "en"}
maxItemsPerQuery is applied separately to every location. Two locations with a limit of 50 can therefore produce up to 100 listing rows before duplicates or source availability are considered.
Airbnb search pagination naturally limits a single location to a maximum of 270 results.
π Direct Listing URLs
Use urls mode when you know exactly which listings to inspect. Only public Airbnb room URLs containing /rooms/ are accepted; empty, invalid, and duplicate entries are ignored.
{"researchPreset": "custom","mode": "urls","startUrls": [{ "url": "https://www.airbnb.com/rooms/123456789" },{ "url": "https://www.airbnb.com/rooms/987654321" }],"includeReviews": true,"maxReviewsPerListing": 20,"includeCalendar": true,"currency": "USD","locale": "en"}
Direct URLs are ideal for competitor audits because every output table preserves listingId, listingName, and listingUrl.
π Dates, Guests & Prices
Price and availability signals depend on the selected stay context.
| Field | Purpose |
|---|---|
checkIn | Check-in date in YYYY-MM-DD format |
checkOut | Check-out date later than check-in |
adults | Adult guests, from 1 to 16 |
children | Children aged 2β12 |
infants | Infants under 2 |
pets | Number of pets |
currency | USD or EUR |
Use the same dates, guest counts, currency, and filters when comparing prices between runs.
{"researchPreset": "market-scan","locationQueries": ["Lisbon"],"checkIn": "2026-10-05","checkOut": "2026-10-12","adults": 2,"children": 1,"pets": 0,"maxItemsPerQuery": 100,"currency": "EUR"}
Displayed marketplace prices can change with dates, guests, promotions, fees, availability, and live inventory.
ποΈ Search Filters
These filters are sent with location searches. They do not remove direct URL results after scraping.
| Field | Example | Meaning |
|---|---|---|
minPrice | 80 | Minimum search price in the selected currency |
maxPrice | 250 | Maximum search price |
roomType | Entire home/apt | Entire place, private room, shared room, or hotel room |
minBedrooms | 2 | Minimum bedrooms |
minBathrooms | 1 | Minimum bathrooms |
minBeds | 2 | Minimum beds |
{"researchPreset": "custom","mode": "search-fast","locationQueries": ["Rome"],"checkIn": "2026-09-01","checkOut": "2026-09-06","adults": 4,"minPrice": 100,"maxPrice": 300,"roomType": "Entire home/apt","minBedrooms": 2,"minBathrooms": 1,"minBeds": 2,"maxItemsPerQuery": 50,"currency": "EUR"}
π¬ Full Reviews & Review Intelligence
Enable reviews through the review-intelligence or full-audit preset, or use custom with includeReviews: true.
The Actor saves:
- full guest review text when Airbnb returns it;
- reviewer name, ID, and profile picture;
- review date and language;
- numeric star rating and readable star display;
- host response when available;
- one flat row per review;
- one review-intelligence summary per listing.
maxReviewsPerListing accepts values from 1 to 100. Reviews are requested most recent first.
Collect 10 Reviews per Listing
{"researchPreset": "review-intelligence","locationQueries": ["Amsterdam"],"maxItemsPerQuery": 10,"maxReviewsPerListing": 10,"currency": "EUR","locale": "en"}
Collect One Review from a Known Listing
{"researchPreset": "review-intelligence","startUrls": [{ "url": "https://www.airbnb.com/rooms/123456789" }],"maxReviewsPerListing": 1}
How Reviews Stay Linked
Every review row includes the listing identifiers:
Listings.id = Reviews.listingIdListings.url = Reviews.listingUrl
If a run collects 50 listings and requests 50 reviews per listing, the Reviews dataset can contain up to 2,500 rows. Each row still links to the correct listing.
Review Summary Metrics
The summary dataset can include:
- fetched review count and average rating;
- 1β5 star distribution;
- positive, mixed, and negative review counts;
- positive and negative percentages;
- review health score from 0 to 100;
- common positive themes and complaint themes;
- newest review details;
- recent low-rated review snippets;
- detected review languages.
Theme extraction is a compact rule-based summary of the collected review sample, not an AI-generated judgment.
π Availability Calendar
Enable calendar data through full-audit, or use custom with includeCalendar: true in search-full or urls mode.
The Actor requests up to 12 months beginning with the check-in month, or the current month when no check-in date is provided.
Calendar output includes:
- start and end dates;
- months and days returned;
- available and blocked day counts;
- availability percentage;
- occupancy estimate percentage;
- available and blocked days for the next 30, 90, and 365 days;
- simple available-revenue estimates for those windows when a nightly price exists.
{"researchPreset": "custom","mode": "urls","startUrls": [{ "url": "https://www.airbnb.com/rooms/123456789" }],"checkIn": "2026-10-01","checkOut": "2026-10-07","includeCalendar": true,"includeReviews": false}
Occupancy is an estimate based on publicly blocked calendar days. A blocked date can represent a booking, a host block, or another availability rule. Revenue estimates are not verified host earnings.
π Monitor Listing Changes
Monitoring compares the current result set with the previous snapshot saved for the same monitor key.
Tracked changes include:
- new listings;
- removed listings;
- display price and total price;
- availability;
- rating and review count;
- listing name and URL.
Monitor a Market
{"researchPreset": "monitor","locationQueries": ["Prague Old Town"],"checkIn": "2026-09-10","checkOut": "2026-09-15","adults": 2,"maxItemsPerQuery": 100,"monitorKey": "prague-old-town-september"}
Run the same configuration again with the same monitorKey. The first run establishes a snapshot and marks discovered listings as new; later runs can produce changed and removed rows.
If monitorKey is omitted, the Actor creates one from the input. An explicit stable key is easier to manage for scheduled runs.
For meaningful comparisons, keep the locations, dates, guests, currency, mode, and result limit consistent.
π€ Output Tables
The Actor separates repeated entities into clean datasets so you do not have to expand large nested arrays manually.
| Output tab | Dataset shape | Available when |
|---|---|---|
| Listings | One row per listing | Every successful mode |
| Pricing | Price-focused listing view | Price data is available |
| Hosts & ratings | Rating and host overview from listing rows | Full listing data is available |
| Hosts | One row per listing host | Host details are available |
| Amenities | One row per amenity | Full listing data is available |
| House rules | One row per rule, safety note, highlight, or sleeping item | Full listing data is available |
| Calendar metrics | Flat 30/90/365-day metrics on listing rows | Calendar enrichment is enabled and available |
| Reviews & calendar | One row per guest review | Review enrichment is enabled and review text exists |
| Review summary | One intelligence row per listing | At least one usable review is collected |
| Monitor changes | One row per detected change | Monitoring is enabled |
All datasets can be exported from Apify as JSON, CSV, Excel, HTML, XML, or RSS.
π Join Keys
Use listingId to connect secondary datasets to the main Listings dataset.
Listings.id = Hosts.listingIdListings.id = Amenities.listingIdListings.id = House rules.listingIdListings.id = Reviews.listingIdListings.id = Review summary.listingIdListings.id = Monitor changes.listingId
listingName, listingUrl, displayLocation, and displayPrice are repeated in many secondary rows to make CSV and Excel exports readable without a join.
π§Ύ Main Listing Fields
| Field | Meaning |
|---|---|
recordType | listing |
id | Airbnb listing ID |
name | Listing title |
url | Canonical Airbnb room URL |
displayLocation | Human-readable location or coordinate fallback |
displayPrice | Price label shown for the selected search context |
pricePerNight | Numeric nightly price when available |
priceTotal | Numeric stay total |
priceOriginalTotal | Original total before a visible discount |
currency | Requested currency |
available | Public availability signal for the selected dates |
displayRating | Listing rating and review count label |
ratingValue | Numeric listing rating |
reviewsCount | Public listing review count |
roomType | Entire place, private room, shared room, or hotel room |
personCapacity | Guest capacity |
bedrooms, beds, bathrooms | Property layout |
hostName, isSuperhost | Compact host fields |
amenitiesCount | Number of parsed amenities |
imageUrl | First listing photo |
scrapedAt | UTC collection timestamp |
Example Listing Row
{"recordType": "listing","id": "123456789","name": "Modern apartment near the historic center","url": "https://www.airbnb.com/rooms/123456789","displayLocation": "Prague 1, Czechia","displayPrice": "β¬827","pricePerNight": 180.65,"priceTotal": 827,"currency": "EUR","available": true,"displayRating": "4.87 (115)","ratingValue": 4.87,"reviewsCount": 115,"roomType": "Entire home/apt","personCapacity": 4,"bedrooms": 2,"beds": 2,"bathrooms": 1,"hostName": "Daniel","isSuperhost": true,"amenitiesCount": 46,"imageUrl": "https://a0.muscache.com/...","scrapedAt": "2026-07-16T12:00:00Z"}
π¬ Example Review Row
{"recordType": "review","listingId": "123456789","listingName": "Modern apartment near the historic center","listingUrl": "https://www.airbnb.com/rooms/123456789","reviewId": "review-id","reviewerName": "Linda","reviewRating": "β β β β β 5/5","rating": 5,"createdAt": "2026-06-29T07:58:26Z","language": "en","reviewsText": "Perfectly located apartment in a quiet street. The host was friendly and helpful.","hostResponse": "Thank you for staying with us!","scrapedAt": "2026-07-16T12:00:00Z"}
π Example Review Summary
{"recordType": "review_summary","listingId": "123456789","listingName": "Modern apartment near the historic center","reviewSignal": "Excellent guest sentiment","averageReviewRating": 4.8,"averageReviewRatingDisplay": "β β β β β 4.8/5","reviewHealthScore": 96,"ratingBreakdown": "5β 44 | 4β 4 | 3β 2 | 2β 0 | 1β 0","fetchedReviewsCount": 50,"positiveReviews": 48,"negativeReviews": 2,"positiveSharePercent": 96.0,"topPros": "Location; Host & communication; Cleanliness","topIssues": "Heat / AC","latestReviewDate": "2026-06-29T07:58:26Z","listingUrl": "https://www.airbnb.com/rooms/123456789"}
π€ Hosts, Amenities & Property Information
Host Rows
One host row can contain the host name, profile photo, Superhost status, verification status, rating, hosting experience, biography, and cohost count.
Amenity Rows
One row is created for each amenity, including its category, title, optional subtitle, availability flag, and icon identifier.
{"recordType": "amenity","listingId": "123456789","listingName": "Modern apartment near the historic center","category": "Bathroom","amenityTitle": "Hair dryer","available": true,"listingUrl": "https://www.airbnb.com/rooms/123456789"}
House Rules Rows
The House rules dataset uses infoType to distinguish:
house_rule;safety;highlight;sleeping.
{"recordType": "property_info","listingId": "123456789","listingName": "Modern apartment near the historic center","infoType": "house_rule","title": "Checkout before 11:00 AM","listingUrl": "https://www.airbnb.com/rooms/123456789"}
π Language & Currency
Supported currencies:
USD;EUR.
Supported locale choices in the input form:
- English
en; - German
de; - French
fr; - Spanish
es; - Italian
it; - Portuguese
pt; - Dutch
nl; - Polish
pl; - Russian
ru.
The requested locale controls localized listing text when Airbnb provides a translated value. User-generated content can remain in its original language.
βοΈ Volume, Speed & Cost Controls
| Setting | Effect |
|---|---|
maxItemsPerQuery | Listings collected for each location, from 1 to 270 |
maxReviewsPerListing | Reviews requested per detailed listing, from 1 to 100 |
includeReviews | Adds review and summary requests and output rows |
includeCalendar | Adds a 12-month calendar request per detailed listing |
maxConcurrency | Maximum parallel request budget, from 1 to 50 |
maxRetries | Retry attempts for temporary source failures, from 0 to 10 |
Recommended progression:
- Run 5β10 listings with
quick-test. - Use
market-scanfor larger price research. - Use
review-intelligencefor a smaller set of listings first. - Use
full-auditonly when you need every enrichment. - Increase limits after checking row counts in all output datasets.
β Data Expectations
- Search and listing data are live marketplace signals and can change between runs.
- A listing can disappear, become unavailable, or expose fewer fields without warning.
- Review rows are created only for reviews containing usable text.
- A Review summary is created only when at least one usable review row exists.
- Host, amenity, and property-information datasets can be empty in
search-fastmode. - Calendar metrics appear only when calendar enrichment succeeds.
- Missing values reflect unavailable public data; they are not replaced with invented placeholders.
β FAQ
Which option should a new user choose?
Use quick-test with one location. It limits search output to 10 listings and disables expensive enrichments.
Why did my manual review switch get ignored?
Your selected preset controls related switches. Choose custom to follow manual includeReviews, includeCalendar, and mode settings exactly.
Why are there no reviews in search-fast?
Fast search collects marketplace cards only. Use review-intelligence, full-audit, search-full, or urls.
Can I choose 1, 10, or 50 reviews?
Yes. Set maxReviewsPerListing to any value from 1 to 100.
Are reviews saved under the correct home?
Yes. Every review row includes listingId and listingUrl, which match the main listing row.
Why is the Reviews dataset smaller than requested?
A listing may have fewer public reviews, some reviews may lack usable text, or the source may return fewer rows for that request.
Are blocked calendar days confirmed bookings?
No. They are public availability signals. A host can block dates without a booking, so occupancy and revenue values are estimates.
Can I filter direct listing URLs by price or room type?
The structured filters are search filters. Direct URL mode audits the supplied listings instead of dropping them after collection.
What does the first monitoring run show?
It creates the baseline snapshot and records the current listings as new. Later runs can identify changes and removals.
What happens with empty API input?
The Actor exits cleanly with an explanatory status instead of producing a failed run. Add a location or direct listing URL to collect data.
Can I export to Excel?
Yes. Open any output dataset and download it as Excel, CSV, JSON, HTML, XML, or RSS.
πΌ Common Use Cases
- short-term rental market sizing;
- city and neighborhood price comparisons;
- competitor listing audits;
- guest sentiment and complaint analysis;
- host and amenity benchmarking;
- availability-calendar research;
- recurring price and listing monitoring;
- CSV and Excel datasets for analysts;
- scheduled Apify workflows and integrations.
π·οΈ Keywords
airbnb scraper Β· airbnb listings Β· airbnb prices Β· airbnb reviews Β· airbnb calendar Β· short-term rental data Β· vacation rental research Β· airbnb market analysis Β· host intelligence Β· rental monitoring