Airbnb Scraper: Listings, Prices, Reviews & Calendars
Pricing
from $0.69 / 1,000 airbnb listings
Airbnb Scraper: Listings, Prices, Reviews & Calendars
Scrape Airbnb listings by location or URL. Get prices, ratings, reviews, host data, amenities, house rules, calendar metrics, and monitor listing changes.
Pricing
from $0.69 / 1,000 airbnb listings
Rating
0.0
(0)
Developer
Blynx
Maintained by CommunityActor stats
0
Bookmarked
20
Total users
12
Monthly active users
a day ago
Last modified
Categories
Share
π‘ Airbnb Scraper
Collect Airbnb listings, prices, ratings, host data, amenities, house rules, guest reviews, and availability signals from location searches or direct listing URLs.
Use it for short-term rental research, competitor tracking, pricing analysis, property audits, guest sentiment analysis, and market monitoring.
β¨ What You Get
- π Listing names, URLs, property type, room type, capacity, bedrooms, beds, and bathrooms
- π Location signals, coordinates when available, and display location
- πΈ Nightly price, total price, original price, currency, and availability flag
- β Listing rating, review count, rating categories, and badges
- πΌοΈ Listing photos and preview image URL
- π€ Host name, host quality signals, verification, rating, hosting experience, and profile photo
- π§Ύ Amenities, amenity categories, house rules, safety notes, highlights, and sleeping setup
- π¬ Guest review text with reviewer, date, language, host response, and star rating
- π Review summary with rating breakdown, review health score, pros, issues, and low-rated highlights
- π Calendar metrics for availability, blocked days, occupancy estimate, and revenue windows
- π New, changed, and removed listings when monitoring is enabled
π Quick Start
The easiest way to start is to choose a Research preset in the input form.
| Preset | Best for | What it enables |
|---|---|---|
| Quick test | First run or cheap sample | Up to 10 listings |
| Market scan | City or neighborhood research | Fast listing and price collection |
| Review intelligence | Guest sentiment analysis | Review text and review summary |
| Full audit | Deep listing inspection | Reviews, amenities, host data, house rules, and calendar metrics |
| Monitor changes | Repeated market tracking | Change detection across runs |
| Custom | Manual control | Uses exactly the settings you choose |
π§ How To Configure A Run
- Choose a Research preset.
- Choose a Run mode:
- use
search-fastfor a city or neighborhood scan; - use
search-fullwhen you want richer listing details from search results; - use
urlswhen you already have Airbnb listing URLs; - use
autowhen you want the actor to choose based on your input.
- use
- Add either Locations or Airbnb listing URLs.
- Add Check-in, Check-out, and guest counts when price accuracy matters.
- Set Listings per source to control output size and cost.
- Turn on Include review texts or Include availability calendar only when you need deeper data.
- Use filters such as price, room type, bedrooms, bathrooms, and beds for narrower market research.
- For monitoring, enable Monitor changes and reuse the same Monitor key every time.
π§© Input Schema
| Field | Type | Description |
|---|---|---|
researchPreset | select | Ready-made setup: quick test, market scan, review intelligence, full audit, monitor, or custom |
mode | select | auto, search-fast, search-full, or urls |
locationQueries | string list | Cities, neighborhoods, or Airbnb search URLs |
startUrls | request list | Direct Airbnb room URLs |
checkIn | date | Check-in date for date-aware pricing and availability |
checkOut | date | Check-out date, later than check-in |
adults | integer | Number of adult guests |
children | integer | Number of children |
infants | integer | Number of infants |
pets | integer | Number of pets |
maxItemsPerQuery | integer | Maximum listings saved per location or source |
includeReviews | boolean | Saves review rows and review summary analytics |
maxReviewsPerListing | integer | Maximum reviews to save per listing when reviews are enabled, from 1 to 100 |
includeCalendar | boolean | Saves 12-month calendar metrics when available |
monitorChanges | boolean | Enables new/changed/removed listing detection |
monitorKey | string | Stable key for repeated monitoring of the same market |
minPrice / maxPrice | integer | Price range filter in the selected currency |
roomType | select | Any, entire place, private room, shared room, or hotel room |
minBedrooms | integer | Minimum bedrooms |
minBathrooms | integer | Minimum bathrooms |
minBeds | integer | Minimum beds |
currency | select | USD or EUR |
locale | select | Output language when Airbnb provides localized text |
βοΈ Run Modes
| Mode | Best for | Notes |
|---|---|---|
auto | Simple runs | Uses direct URLs when you provide listing URLs, otherwise runs a fast search |
search-fast | Market scans | Saves listing cards, prices, ratings, photos, and basic location data |
search-full | Rich search results | Starts from a location search, then enriches listings with details |
urls | Known listings | Scrapes specific Airbnb room URLs |
π§ͺ Example Inputs
Fast market scan
{"researchPreset": "market-scan","mode": "search-fast","locationQueries": ["Prague"],"checkIn": "2026-08-15","checkOut": "2026-08-20","adults": 2,"maxItemsPerQuery": 50,"currency": "USD","locale": "en"}
Review intelligence
{"researchPreset": "review-intelligence","mode": "search-full","locationQueries": ["Barcelona"],"checkIn": "2026-09-10","checkOut": "2026-09-14","adults": 2,"maxItemsPerQuery": 10,"maxReviewsPerListing": 10}
Collect only one review per listing
Useful for a quick smoke test or very cheap sample.
{"researchPreset": "review-intelligence","mode": "urls","startUrls": [{ "url": "https://www.airbnb.com/rooms/123456789" }],"maxReviewsPerListing": 1}
Full audit for a known listing
{"researchPreset": "full-audit","mode": "urls","startUrls": [{ "url": "https://www.airbnb.com/rooms/123456789" }],"checkIn": "2026-08-15","checkOut": "2026-08-20","adults": 2}
Monitor the same market over time
{"researchPreset": "monitor","mode": "search-fast","locationQueries": ["Prague Old Town"],"maxItemsPerQuery": 100,"monitorChanges": true,"monitorKey": "prague-old-town"}
Run the same input again with the same monitorKey to see new, changed, and removed listings.
π€ Output Tabs
The actor creates clean Apify Output tabs for quick browsing and export.
| Tab | What it contains |
|---|---|
| Listings | One row per listing with price, rating, location, image, capacity, room type, amenities count, and URL |
| Pricing | Price-focused view with nightly price, total price, original total, currency, and availability |
| Hosts & ratings | Listing rating, review count, host name, superhost flag, response data, and badges |
| Hosts | One row per host with verification, rating, hosting experience, profile photo, and listing context |
| Amenities | One row per amenity with category, title, availability flag, and listing context |
| House rules | House rules, safety notes, listing highlights, and sleeping setup as clean rows |
| Calendar metrics | Availability, blocked days, occupancy estimate, and revenue estimate for 30/90/365-day windows |
| Reviews & calendar | One row per guest review with reviewer, star rating, date, language, text, and host response |
| Review summary | Rating breakdown, review health score, pros, issues, latest review, and low-rated highlights |
| Monitor changes | New, changed, and removed listings when monitorChanges is enabled |
All tables can be exported from Apify as JSON, CSV, Excel, HTML, XML, or RSS.
π How Reviews Match Listings
Reviews are saved in a separate Reviews & calendar table, one row per review. Every review row includes:
listingId- the Airbnb listing IDlistingName- the listing titlelistingUrl- the Airbnb listing URLreviewId- the review ID
Use listingId as the primary key when joining or filtering data.
Example: if you collect 50 listings and set maxReviewsPerListing to 50, the actor can save up to 2,500 review rows. Each of those rows will still point back to the correct listing through listingId and listingUrl.
Simple join logic:
Listings.id = Reviews.listingIdListings.url = Reviews.listingUrl
ποΈ Output Schemas
Listings
Main dataset. One row per Airbnb listing.
| Field | Meaning |
|---|---|
recordType | Always listing |
id | Airbnb listing ID |
name | Listing title |
displayLocation | Human-readable location |
displayPrice | Display price string |
pricePerNight | Numeric nightly price when available |
priceTotal | Numeric total price when available |
available | Availability flag when returned |
displayRating | Rating and review count display |
reviewsCount | Public review count |
roomType | Stay type, such as entire home or private room |
personCapacity | Guest capacity |
bedrooms, beds, bathrooms | Property layout fields |
amenitiesCount | Total amenities found |
availableAmenitiesCount | Amenities marked as available |
houseRulesCount | Number of house rules |
safetyItemsCount | Number of safety notes |
highlightsCount | Number of listing highlights |
imageUrl | Preview image URL |
url | Airbnb listing URL |
scrapedAt | Timestamp when the row was saved |
Pricing
Price-focused view of the main listing dataset.
| Field | Meaning |
|---|---|
displayPrice | Price text shown by Airbnb |
pricePerNight | Numeric nightly price |
priceTotal | Numeric total stay price |
priceOriginalTotal | Original total before discount when available |
currency | Selected currency |
available | Whether the listing appears available for the selected dates |
Hosts
One row per listing host.
| Field | Meaning |
|---|---|
recordType | Always host |
listingId | Airbnb listing ID for joining with Listings |
hostName | Host name |
hostSignal | Short host quality signal |
isSuperhost | Superhost flag |
isVerified | Host verification flag |
hostRatingAverage | Host average rating when available |
hostRatingCount | Host rating count when available |
yearsHosting / monthsHosting | Hosting experience |
cohostsCount | Number of cohosts |
hostAbout | Host bio text |
listingName, listingUrl | Listing context |
Amenities
One row per amenity.
| Field | Meaning |
|---|---|
recordType | Always amenity |
listingId | Airbnb listing ID for joining with Listings |
listingName | Listing title |
category | Amenity group, such as Bathroom or Kitchen |
amenityTitle | Amenity name |
amenitySubtitle | Extra amenity description when available |
available | Whether the amenity is available |
icon | Airbnb icon identifier |
displayPrice, listingUrl | Listing context |
House Rules
One row per rule, safety note, highlight, or sleeping setup item.
| Field | Meaning |
|---|---|
recordType | Always property_info |
listingId | Airbnb listing ID for joining with Listings |
infoType | house_rule, safety, highlight, or sleeping |
title | Rule or info title |
description | Extra text when available |
icon | Icon identifier when available |
rawType | Original Airbnb highlight type when available |
listingName, listingUrl | Listing context |
Reviews
One row per guest review.
| Field | Meaning |
|---|---|
recordType | Always review |
listingId | Airbnb listing ID for joining with Listings |
listingName | Listing title |
reviewId | Airbnb review ID |
reviewerName | Guest first name when available |
reviewRating | Readable rating, for example β
β
β
β
β
5/5 |
rating | Numeric review rating |
createdAt | Review date |
language | Review language |
reviewsText | Full review text |
hostResponse | Host response text when available |
listingUrl | Airbnb listing URL |
Review Summary
One row per listing with review analytics.
| Field | Meaning |
|---|---|
recordType | Always review_summary |
listingId | Airbnb listing ID for joining with Listings |
reviewSignal | Short sentiment signal |
averageReviewRatingDisplay | Average rating display |
reviewHealthScore | 0-100 review quality score |
ratingBreakdown | Count by star rating |
fetchedReviewsCount | Number of reviews collected for analysis |
positiveReviews, negativeReviews | Sentiment counts |
positiveSharePercent, negativeSharePercent | Sentiment share |
topPros | Common positive themes |
topIssues | Common complaint themes |
latestReviewDate, latestReviewRating, latestReviewText | Latest review details |
recentLowRatedReviews | Compact list of recent low-rated reviews |
Calendar Metrics
Calendar summary fields are added to listing rows when calendar data is requested.
| Field | Meaning |
|---|---|
calendarStartDate, calendarEndDate | Calendar date range |
calendarMonthsCount, calendarDaysCount | Calendar coverage |
calendarAvailableDaysCount | Available days in the returned calendar |
calendarBlockedDaysCount | Blocked days in the returned calendar |
calendarAvailabilityPercent | Available days percentage |
calendarOccupancyEstimatePercent | Blocked days percentage |
calendarAvailableNext30Days / 90 / 365 | Available days by window |
calendarBlockedNext30Days / 90 / 365 | Blocked days by window |
calendarOccupancyNext30Percent / 90 / 365 | Occupancy estimate by window |
calendarAvailableRevenueNext30 / 90 / 365 | Available revenue estimate by window |
Monitor Changes
Rows are saved only when monitorChanges is enabled.
| Field | Meaning |
|---|---|
recordType | Always monitor_change |
changeType | new, changed, or removed |
listingId | Airbnb listing ID for joining with Listings |
name | Listing name |
changeSummary | Human-readable summary of what changed |
displayPrice, previousDisplayPrice | Current and previous price |
available, previousAvailable | Current and previous availability |
displayRating, previousDisplayRating | Current and previous rating |
reviewsCount, previousReviewsCount | Current and previous review count |
monitorKey | Tracking key |
checkedAt, firstSeenAt, lastSeenAt | Monitoring timestamps |
π¦ Example Listing Record
{"recordType": "listing","id": "123456789","name": "Modern apartment near the center","url": "https://www.airbnb.com/rooms/123456789","displayLocation": "Prague 1, Czechia","displayPrice": "$827","pricePerNight": 180.65,"priceTotal": 827,"available": true,"displayRating": "4.87 (115)","reviewsCount": 115,"roomType": "Entire home/apt","personCapacity": 4,"amenitiesCount": 46,"availableAmenitiesCount": 43,"houseRulesCount": 3,"safetyItemsCount": 2,"imageUrl": "https://a0.muscache.com/...","scrapedAt": "2026-07-06T18:20:16Z"}
π¬ Review Intelligence
Turn on Review intelligence or set includeReviews to true in search-full or urls mode.
You get:
- One row per review in Reviews & calendar
- Reviewer name, review date, language, review text, host response, and star rating
- A separate Review summary row for each listing
- Rating breakdown, review health score, positive/negative share, pros, issues, latest review, and low-rated highlights
Use maxReviewsPerListing to choose how many reviews to save per listing:
{"includeReviews": true,"maxReviewsPerListing": 10}
Set it to 1 for a smoke test, 10 for a light review sample, or 50 for deeper analysis.
Example review row:
{"recordType": "review","listingName": "Modern apartment near the center","reviewerName": "Linda","reviewRating": "β β β β β 5/5","rating": 5,"createdAt": "2026-06-29T07:58:26Z","language": "en","reviewsText": "Perfectly located apartment in a quiet street...","listingUrl": "https://www.airbnb.com/rooms/123456789"}
Example review summary:
{"recordType": "review_summary","listingName": "Modern apartment near the center","reviewSignal": "Excellent guest sentiment","averageReviewRatingDisplay": "β β β β β 4.8/5","reviewHealthScore": 97,"ratingBreakdown": "5β 44 | 4β 4 | 3β 2 | 2β 0 | 1β 0","fetchedReviewsCount": 50,"topPros": "Location; Host & communication; Cleanliness","topIssues": "Heat / AC","latestReviewDate": "2026-06-29T07:58:26Z"}
π§Ύ Amenities & House Rules
Use Amenities to compare listing features without opening nested JSON.
{"recordType": "amenity","listingName": "Modern apartment near the center","category": "Bathroom","amenityTitle": "Hair dryer","available": true,"displayPrice": "$827","listingUrl": "https://www.airbnb.com/rooms/123456789"}
Use House rules for guest requirements, safety notes, highlights, and sleeping setup.
{"recordType": "property_info","listingName": "Modern apartment near the center","infoType": "house_rule","title": "Checkout before 11:00 AM","displayPrice": "$827","listingUrl": "https://www.airbnb.com/rooms/123456789"}
π Calendar Metrics
Turn on Full audit or set includeCalendar to true when you need availability data.
The actor calculates:
- Calendar start and end date
- Total calendar days
- Available and blocked days
- Availability percentage
- Occupancy estimate percentage
- Available revenue estimate for the next 30, 90, and 365 days
Calendar revenue estimates use the listing price available in the run output. Actual booked revenue can differ from public availability and displayed prices.
π Monitoring Changes
Enable monitorChanges and reuse the same monitorKey for the same market, city, search, or listing set.
The Monitor changes tab shows:
newlistings seen for the first timechangedlistings with price, availability, rating, review count, name, or URL changesremovedlistings that disappeared from the latest run- Previous and current values where available
π― Popular Use Cases
- Compare Airbnb prices across cities, neighborhoods, or travel dates
- Track competitor listings by URL
- Build short-term rental datasets for market research
- Monitor new, changed, and removed listings over time
- Analyze guest sentiment and common complaints
- Compare host quality and hosting experience
- Audit amenities, safety notes, and house rules
- Estimate availability and blocked-day signals from calendar data
- Export Airbnb data to CSV, Excel, JSON, or API workflows
π‘ Tips
- Start with Quick test to preview the output cheaply.
- Use
search-fastfor larger market scans. - Use
search-fullwhen you need richer listing details from a location search. - Use
urlswhen you already know the exact listings to audit. - Add
checkInandcheckOutwhen prices matter. - Turn on reviews only when you need review text or review analytics.
- Turn on calendar only when you need availability and calendar metrics.
- Keep the same
monitorKeyfor repeated monitoring runs.
β FAQ
Does it collect review text?
Yes. Use Review intelligence, Full audit, or set includeReviews to true. Review text is saved as one row per review in Reviews & calendar.
Does it collect the star rating for each review?
Yes. Each review row includes both a numeric rating and a readable reviewRating value such as β
β
β
β
β
5/5.
Why do I not see reviews in a fast search?
search-fast is optimized for speed and market scans. Use search-full or urls with reviews enabled when you need review text.
Can I monitor the same market every day?
Yes. Enable monitorChanges, set a stable monitorKey, and run the same input repeatedly. The actor will save changes to the Monitor changes tab.
Why can prices change between runs?
Airbnb prices depend on dates, guests, currency, listing availability, and live marketplace data. Use the same input settings when comparing runs.
What happens if I provide no input?
The actor exits cleanly without a failed run. Add at least one location or listing URL to collect results.
β Tested
The current version has been tested with:
- 50-result market scan
search-fast,search-full,urls, andautomodes- Direct listing URLs
- Review text and review summary output
- Amenities and house rules output
- Calendar metrics output
- Monitor changes output
- Price, room type, bedrooms, bathrooms, beds, guests, currency, and locale filters