Airbnb Scraper: Listings, Prices, Reviews & Calendars avatar

Airbnb Scraper: Listings, Prices, Reviews & Calendars

Pricing

from $0.69 / 1,000 airbnb listings

Go to Apify Store
Airbnb Scraper: Listings, Prices, Reviews & Calendars

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

Blynx

Maintained by Community

Actor stats

0

Bookmarked

20

Total users

12

Monthly active users

a day ago

Last modified

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.

PresetBest forWhat it enables
Quick testFirst run or cheap sampleUp to 10 listings
Market scanCity or neighborhood researchFast listing and price collection
Review intelligenceGuest sentiment analysisReview text and review summary
Full auditDeep listing inspectionReviews, amenities, host data, house rules, and calendar metrics
Monitor changesRepeated market trackingChange detection across runs
CustomManual controlUses exactly the settings you choose

🧭 How To Configure A Run

  1. Choose a Research preset.
  2. Choose a Run mode:
    • use search-fast for a city or neighborhood scan;
    • use search-full when you want richer listing details from search results;
    • use urls when you already have Airbnb listing URLs;
    • use auto when you want the actor to choose based on your input.
  3. Add either Locations or Airbnb listing URLs.
  4. Add Check-in, Check-out, and guest counts when price accuracy matters.
  5. Set Listings per source to control output size and cost.
  6. Turn on Include review texts or Include availability calendar only when you need deeper data.
  7. Use filters such as price, room type, bedrooms, bathrooms, and beds for narrower market research.
  8. For monitoring, enable Monitor changes and reuse the same Monitor key every time.

🧩 Input Schema

FieldTypeDescription
researchPresetselectReady-made setup: quick test, market scan, review intelligence, full audit, monitor, or custom
modeselectauto, search-fast, search-full, or urls
locationQueriesstring listCities, neighborhoods, or Airbnb search URLs
startUrlsrequest listDirect Airbnb room URLs
checkIndateCheck-in date for date-aware pricing and availability
checkOutdateCheck-out date, later than check-in
adultsintegerNumber of adult guests
childrenintegerNumber of children
infantsintegerNumber of infants
petsintegerNumber of pets
maxItemsPerQueryintegerMaximum listings saved per location or source
includeReviewsbooleanSaves review rows and review summary analytics
maxReviewsPerListingintegerMaximum reviews to save per listing when reviews are enabled, from 1 to 100
includeCalendarbooleanSaves 12-month calendar metrics when available
monitorChangesbooleanEnables new/changed/removed listing detection
monitorKeystringStable key for repeated monitoring of the same market
minPrice / maxPriceintegerPrice range filter in the selected currency
roomTypeselectAny, entire place, private room, shared room, or hotel room
minBedroomsintegerMinimum bedrooms
minBathroomsintegerMinimum bathrooms
minBedsintegerMinimum beds
currencyselectUSD or EUR
localeselectOutput language when Airbnb provides localized text

βš™οΈ Run Modes

ModeBest forNotes
autoSimple runsUses direct URLs when you provide listing URLs, otherwise runs a fast search
search-fastMarket scansSaves listing cards, prices, ratings, photos, and basic location data
search-fullRich search resultsStarts from a location search, then enriches listings with details
urlsKnown listingsScrapes 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.

TabWhat it contains
ListingsOne row per listing with price, rating, location, image, capacity, room type, amenities count, and URL
PricingPrice-focused view with nightly price, total price, original total, currency, and availability
Hosts & ratingsListing rating, review count, host name, superhost flag, response data, and badges
HostsOne row per host with verification, rating, hosting experience, profile photo, and listing context
AmenitiesOne row per amenity with category, title, availability flag, and listing context
House rulesHouse rules, safety notes, listing highlights, and sleeping setup as clean rows
Calendar metricsAvailability, blocked days, occupancy estimate, and revenue estimate for 30/90/365-day windows
Reviews & calendarOne row per guest review with reviewer, star rating, date, language, text, and host response
Review summaryRating breakdown, review health score, pros, issues, latest review, and low-rated highlights
Monitor changesNew, 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 ID
  • listingName - the listing title
  • listingUrl - the Airbnb listing URL
  • reviewId - 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.listingId
Listings.url = Reviews.listingUrl

πŸ—‚οΈ Output Schemas

Listings

Main dataset. One row per Airbnb listing.

FieldMeaning
recordTypeAlways listing
idAirbnb listing ID
nameListing title
displayLocationHuman-readable location
displayPriceDisplay price string
pricePerNightNumeric nightly price when available
priceTotalNumeric total price when available
availableAvailability flag when returned
displayRatingRating and review count display
reviewsCountPublic review count
roomTypeStay type, such as entire home or private room
personCapacityGuest capacity
bedrooms, beds, bathroomsProperty layout fields
amenitiesCountTotal amenities found
availableAmenitiesCountAmenities marked as available
houseRulesCountNumber of house rules
safetyItemsCountNumber of safety notes
highlightsCountNumber of listing highlights
imageUrlPreview image URL
urlAirbnb listing URL
scrapedAtTimestamp when the row was saved

Pricing

Price-focused view of the main listing dataset.

FieldMeaning
displayPricePrice text shown by Airbnb
pricePerNightNumeric nightly price
priceTotalNumeric total stay price
priceOriginalTotalOriginal total before discount when available
currencySelected currency
availableWhether the listing appears available for the selected dates

Hosts

One row per listing host.

FieldMeaning
recordTypeAlways host
listingIdAirbnb listing ID for joining with Listings
hostNameHost name
hostSignalShort host quality signal
isSuperhostSuperhost flag
isVerifiedHost verification flag
hostRatingAverageHost average rating when available
hostRatingCountHost rating count when available
yearsHosting / monthsHostingHosting experience
cohostsCountNumber of cohosts
hostAboutHost bio text
listingName, listingUrlListing context

Amenities

One row per amenity.

FieldMeaning
recordTypeAlways amenity
listingIdAirbnb listing ID for joining with Listings
listingNameListing title
categoryAmenity group, such as Bathroom or Kitchen
amenityTitleAmenity name
amenitySubtitleExtra amenity description when available
availableWhether the amenity is available
iconAirbnb icon identifier
displayPrice, listingUrlListing context

House Rules

One row per rule, safety note, highlight, or sleeping setup item.

FieldMeaning
recordTypeAlways property_info
listingIdAirbnb listing ID for joining with Listings
infoTypehouse_rule, safety, highlight, or sleeping
titleRule or info title
descriptionExtra text when available
iconIcon identifier when available
rawTypeOriginal Airbnb highlight type when available
listingName, listingUrlListing context

Reviews

One row per guest review.

FieldMeaning
recordTypeAlways review
listingIdAirbnb listing ID for joining with Listings
listingNameListing title
reviewIdAirbnb review ID
reviewerNameGuest first name when available
reviewRatingReadable rating, for example β˜…β˜…β˜…β˜…β˜… 5/5
ratingNumeric review rating
createdAtReview date
languageReview language
reviewsTextFull review text
hostResponseHost response text when available
listingUrlAirbnb listing URL

Review Summary

One row per listing with review analytics.

FieldMeaning
recordTypeAlways review_summary
listingIdAirbnb listing ID for joining with Listings
reviewSignalShort sentiment signal
averageReviewRatingDisplayAverage rating display
reviewHealthScore0-100 review quality score
ratingBreakdownCount by star rating
fetchedReviewsCountNumber of reviews collected for analysis
positiveReviews, negativeReviewsSentiment counts
positiveSharePercent, negativeSharePercentSentiment share
topProsCommon positive themes
topIssuesCommon complaint themes
latestReviewDate, latestReviewRating, latestReviewTextLatest review details
recentLowRatedReviewsCompact list of recent low-rated reviews

Calendar Metrics

Calendar summary fields are added to listing rows when calendar data is requested.

FieldMeaning
calendarStartDate, calendarEndDateCalendar date range
calendarMonthsCount, calendarDaysCountCalendar coverage
calendarAvailableDaysCountAvailable days in the returned calendar
calendarBlockedDaysCountBlocked days in the returned calendar
calendarAvailabilityPercentAvailable days percentage
calendarOccupancyEstimatePercentBlocked days percentage
calendarAvailableNext30Days / 90 / 365Available days by window
calendarBlockedNext30Days / 90 / 365Blocked days by window
calendarOccupancyNext30Percent / 90 / 365Occupancy estimate by window
calendarAvailableRevenueNext30 / 90 / 365Available revenue estimate by window

Monitor Changes

Rows are saved only when monitorChanges is enabled.

FieldMeaning
recordTypeAlways monitor_change
changeTypenew, changed, or removed
listingIdAirbnb listing ID for joining with Listings
nameListing name
changeSummaryHuman-readable summary of what changed
displayPrice, previousDisplayPriceCurrent and previous price
available, previousAvailableCurrent and previous availability
displayRating, previousDisplayRatingCurrent and previous rating
reviewsCount, previousReviewsCountCurrent and previous review count
monitorKeyTracking key
checkedAt, firstSeenAt, lastSeenAtMonitoring 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:

  • new listings seen for the first time
  • changed listings with price, availability, rating, review count, name, or URL changes
  • removed listings that disappeared from the latest run
  • Previous and current values where available
  • 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-fast for larger market scans.
  • Use search-full when you need richer listing details from a location search.
  • Use urls when you already know the exact listings to audit.
  • Add checkIn and checkOut when 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 monitorKey for 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.

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, and auto modes
  • 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