Airbnb Scraper: Listings, Reviews, Prices & Availability avatar

Airbnb Scraper: Listings, Reviews, Prices & Availability

Under maintenance

Pricing

from $0.69 / 1,000 airbnb listings

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

Airbnb Scraper: Listings, Reviews, Prices & Availability

Under maintenance

Scrape 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

Shadow Extractor

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

3 days ago

Last modified

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 groupExamples
🏠 ListingID, title, Airbnb URL, room type, property type, capacity, bedrooms, beds, bathrooms
πŸ“ LocationDisplay location, neighborhood, coordinates when available
πŸ’Έ PricingDisplay price, nightly price, total price, original total, selected currency, availability signal
⭐ ReputationListing rating, public review count, rating categories, listing badges
πŸ‘€ HostName, Superhost and verification signals, rating, hosting experience, biography, cohosts, profile photo
🧾 Property detailsAmenities, unavailable amenities, house rules, safety notes, highlights, sleeping setup
πŸ’¬ ReviewsFull review text, reviewer, date, language, per-review rating, reviewer profile picture, host response
πŸ“Š Review intelligenceRating breakdown, health score, positive/negative share, common pros, common issues, recent low ratings
πŸ“… CalendarAvailable and blocked days, availability percentage, occupancy estimate, 30/90/365-day windows
πŸ”” MonitoringNew, 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

  1. Pick a Research preset.
  2. Add a location or direct Airbnb listing URLs.
  3. Set the listing limit and click Start.
{
"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.

PresetBest forApplied behavior
quick-testFirst runFast search, at most 10 results per location, reviews/calendar/monitoring off
market-scanPrice and supply researchFast location search, reviews and calendar off
review-intelligenceGuest feedback analysisFull search or direct URLs, reviews on, calendar off
full-auditComplete listing inspectionFull search or direct URLs, reviews and calendar on
monitorRepeated market trackingFast search or direct URLs, monitoring on
customExact manual controlKeeps the mode and enrichment settings you provide

Important Preset Behavior

A preset owns its related settings. For example:

  • quick-test always disables reviews, calendar, and monitoring;
  • market-scan always disables reviews and calendar;
  • review-intelligence always enables reviews and disables calendar;
  • full-audit always enables both reviews and calendar;
  • monitor always 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

ModeSourceWhat it does
autoLocation or URLsUses urls when valid listing URLs exist; otherwise uses search-fast
search-fastlocationQueriesCollects paginated search cards, prices, ratings, photos, capacity, and basic property data
search-fulllocationQueriesFinds listings, then opens each listing data source for richer property, host, amenity, review, and calendar fields
urlsstartUrlsScrapes 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 dataset
Direct room URL ─► urls ───────────────────────────┼───────────► Amenities dataset
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Ί House rules dataset
β”œβ”€ reviews ─► Reviews + summary datasets
└─ calendar β–Ί Calendar metrics
Saved listings + stable monitor key ───────────────► Monitor changes dataset

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.

FieldPurpose
checkInCheck-in date in YYYY-MM-DD format
checkOutCheck-out date later than check-in
adultsAdult guests, from 1 to 16
childrenChildren aged 2–12
infantsInfants under 2
petsNumber of pets
currencyUSD 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.

FieldExampleMeaning
minPrice80Minimum search price in the selected currency
maxPrice250Maximum search price
roomTypeEntire home/aptEntire place, private room, shared room, or hotel room
minBedrooms2Minimum bedrooms
minBathrooms1Minimum bathrooms
minBeds2Minimum 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.listingId
Listings.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 tabDataset shapeAvailable when
ListingsOne row per listingEvery successful mode
PricingPrice-focused listing viewPrice data is available
Hosts & ratingsRating and host overview from listing rowsFull listing data is available
HostsOne row per listing hostHost details are available
AmenitiesOne row per amenityFull listing data is available
House rulesOne row per rule, safety note, highlight, or sleeping itemFull listing data is available
Calendar metricsFlat 30/90/365-day metrics on listing rowsCalendar enrichment is enabled and available
Reviews & calendarOne row per guest reviewReview enrichment is enabled and review text exists
Review summaryOne intelligence row per listingAt least one usable review is collected
Monitor changesOne row per detected changeMonitoring 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.listingId
Listings.id = Amenities.listingId
Listings.id = House rules.listingId
Listings.id = Reviews.listingId
Listings.id = Review summary.listingId
Listings.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

FieldMeaning
recordTypelisting
idAirbnb listing ID
nameListing title
urlCanonical Airbnb room URL
displayLocationHuman-readable location or coordinate fallback
displayPricePrice label shown for the selected search context
pricePerNightNumeric nightly price when available
priceTotalNumeric stay total
priceOriginalTotalOriginal total before a visible discount
currencyRequested currency
availablePublic availability signal for the selected dates
displayRatingListing rating and review count label
ratingValueNumeric listing rating
reviewsCountPublic listing review count
roomTypeEntire place, private room, shared room, or hotel room
personCapacityGuest capacity
bedrooms, beds, bathroomsProperty layout
hostName, isSuperhostCompact host fields
amenitiesCountNumber of parsed amenities
imageUrlFirst listing photo
scrapedAtUTC 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

SettingEffect
maxItemsPerQueryListings collected for each location, from 1 to 270
maxReviewsPerListingReviews requested per detailed listing, from 1 to 100
includeReviewsAdds review and summary requests and output rows
includeCalendarAdds a 12-month calendar request per detailed listing
maxConcurrencyMaximum parallel request budget, from 1 to 50
maxRetriesRetry attempts for temporary source failures, from 0 to 10

Recommended progression:

  1. Run 5–10 listings with quick-test.
  2. Use market-scan for larger price research.
  3. Use review-intelligence for a smaller set of listings first.
  4. Use full-audit only when you need every enrichment.
  5. 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-fast mode.
  • 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