Airbnb Scraper + STR Market KPIs (ADR · Occupancy · RevPAR) avatar

Airbnb Scraper + STR Market KPIs (ADR · Occupancy · RevPAR)

Pricing

Pay per event

Go to Apify Store
Airbnb Scraper + STR Market KPIs (ADR · Occupancy · RevPAR)

Airbnb Scraper + STR Market KPIs (ADR · Occupancy · RevPAR)

Airbnb scraper for short-term-rental investors. Search by destination, coordinates, place ID, category or URL. Returns listings with ADR, occupancy, RevPAR and estimated annual revenue, plus market KPIs, calendar enrichment and an HTML report.

Pricing

Pay per event

Rating

0.0

(0)

Developer

SIÁN OÜ

SIÁN OÜ

Maintained by Community

Actor stats

1

Bookmarked

24

Total users

12

Monthly active users

3 days ago

Last modified

Share

Airbnb Property Scraper - STR KPIs, Occupancy & RevPAR 🚀

SIÁN Agency Store Airbnb Property Scraper

🎉 The Airbnb analyzer built for investors — forward-looking calendar enrichment computes ADR, occupancy, RevPAR & annual revenue per listing

Built-in Airbnb profit calculator and income estimator for short-term rental investors, vacation-rental analysts, and Airbnb arbitrage operators


🔎 What is the Airbnb Scraper — and when should you use it?

The Airbnb Scraper turns short-stay rental listings from Airbnb into clean, structured rows you can filter, export and feed straight into a spreadsheet, database or AI agent. No account, no portal API key, no browser automation to maintain.

Use it when you need: nightly rate, bedrooms, beds and baths, rating and review count, Superhost and Guest Favorite badges, photos and coordinates for every listing. Switch on the calendar enrichment and each row also carries ADR, occupancy rate, RevPAR, estimated annual revenue and the days until the next available night. The forward availability calendar behind those numbers is returned too.

Use something else when: you want a different short-stay platform, or long-term rents to compare against. Use Vrbo Scraper for Vrbo's inventory with the same ADR, occupancy and RevPAR fields. Use STR vs LTR Market Lens for short-stay and long-term rates side by side, normalised to a monthly figure. This actor returns short-stay rental inventory with nightly rates and booking calendars, not homes for sale.

🤖 Use with AI agents

Already connected to the Apify MCP server? Just ask for this Actor by name: sian.agency/airbnb-property-scraper

Your agent can pay for its own runs. This Actor is eligible for agentic payments, so an agent can discover it, run it and settle the bill over x402 (USDC on Base) or Skyfire — without an Apify account or API token of its own. Billing is the same either way: per successful row, never for errors.

Otherwise copy this prompt into Claude, ChatGPT, Cursor or any MCP-enabled assistant:

I want Airbnb listings with short-term rental KPIs using the Apify Actor `sian.agency/airbnb-property-scraper`.
Use it when I need: nightly rate, bedrooms, beds and baths, rating and review count, Superhost and Guest Favorite badges, photos and coordinates for every listing. Switch on the calendar enrichment and each row also carries ADR, occupancy rate, RevPAR, estimated annual revenue and the days until the next available night. The forward availability calendar behind those numbers is returned too.
Don't use it when: you want a different short-stay platform, or long-term rents to compare against — use vrbo-property-scraper or str-investor-market-lens instead.
How to call it: pick a `searchMode` — `destination` (free text such as "Lisbon, Portugal"), `coordinates` (a map-bounds box: `ne_lat`, `ne_lng`, `sw_lat`, `sw_lng`), `placeId`, `category` (`category_tag` like `Tag:4104`, PAID) or `url` (`airbnbUrl`). Optional `checkIn`/`checkOut` switch on date filtering and per-night prices; `computeOccupancy: true` adds one calendar call per listing and fills in occupancy, RevPAR and estimated annual revenue; `fetchHomeDetails` and `fetchReviews` add amenities, house rules and guest reviews.
Start with this input:
{
"searchMode": "destination",
"destination": "Lisbon, Portugal",
"computeOccupancy": true,
"availabilityWindowDays": 90,
"maxResultsPerQuery": 40
}
Ask me which destination or map area, and whether to turn on the calendar enrichment for occupancy and RevPAR, then run the Actor and summarise the results as a table.

Things you can ask your agent for:

  • Estimate annual revenue for two-bedroom entire homes in Lisbon and rank the top 20.
  • Compare occupancy and ADR across three neighbourhoods in the same city.
  • Flag listings with a completely open calendar and fewer than three reviews.

Machine-readable API, MCP config and OpenAPI definition for this Actor are published at apify.com/sian.agency/airbnb-property-scraper.md.

📋 Overview

Stop guessing what an Airbnb market is worth. This Airbnb scraper pulls clean listing data plus the short-term rental KPIs investors actually need — average daily rate (ADR), occupancy, RevPAR, and estimated annual revenue — across any city, map area, or category on Airbnb.

Why thousands of STR investors and analysts choose us:

  • 5 search modes: destination text, map-bounds coordinates, place ID, Airbnb category tag, or paste-a-URL — cover every research workflow
  • 40 listings per page, auto-paginated: cursor-based pagination drains entire markets without manual clicking
  • 🎯 Real STR KPIs: ADR, occupancy rate, RevPAR, estimated annual revenue, days-until-next-available — computed per listing from forward-looking calendar data
  • 💰 Best price on Apify: pay-per-result, no monthly fee, FREE tier with 25 listings to test
  • 💎 Beautiful HTML market report: shareable summary with KPI distributions, top performers, and stale-listing flags
  • 35+ data fields per listing (40+ with computeOccupancy enrichment): photos, bedrooms, baths, ratings, reviews, badges, lat/lng, price qualifiers, and more

✨ Features

  • 🧭 Destination Search: free-text city or neighborhood ("Lisbon, Portugal", "Brooklyn, NY")
  • 🗺 Map-Bounds Coordinates: NE + SW lat/lng box for precise geographic scans
  • 🆔 Place ID Search: pinpoint a market by Google/Airbnb internal place ID
  • 🎯 Category Browsing (PAID): scrape entire Airbnb categories like Beach, Cabin, Tiny Home
  • 🔗 URL Mode: paste any Airbnb search URL directly from your browser
  • 📅 Calendar Enrichment: per-listing forward availability → real occupancy & RevPAR
  • 🏠 Full Home Details (PAID): description, amenities, house rules, and additional photos per listing
  • 💬 Guest Reviews (PAID): real reviewer names, ratings, comments, and dates per listing
  • 💹 STR KPI Engine: ADR, occupancy, RevPAR, estimated annual revenue, stale-listing detector
  • 📊 HTML Market Report: visual summary with charts saved to key-value store
  • 🌍 Multi-currency: 3-letter ISO currency support (USD, EUR, GBP, AUD, etc.)
  • 🏘 Smart Filters: price range, bedrooms, beds, baths, Superhost, Guest Favorite, Luxe

🎬 Quick Start

Pick a search mode, drop in a destination (or coordinates, place ID, category, or URL), and run. Results land in your Apify dataset within minutes — listings plus computed STR KPIs and a shareable HTML report.

curl -X POST "https://api.apify.com/v2/acts/sian.agency~airbnb-property-scraper/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchMode":"destination","destination":"Lisbon, Portugal","computeOccupancy":true}'

🚀 Getting Started (3 Simple Steps)

Step 1: Choose Your Search Mode

Pick destination, coordinates, placeId, category, or url. Each mode reads its own dedicated input fields.

Step 2: Configure Stay Context (Optional)

Add checkIn/checkOut for accurate per-night pricing, set guests/currency, apply filters (price range, bedrooms, Superhost, Guest Favorite, Luxe).

Turn on computeOccupancy to fetch each listing's calendar and compute ADR, occupancy, RevPAR, and estimated annual revenue. Perfect for underwriting.

That's it! In a few minutes, you'll have:

  • Clean Airbnb listings with 35+ fields (40+ with calendar enrichment)
  • Computed STR KPIs (ADR, occupancy, RevPAR, annual revenue)
  • A beautiful HTML market report ready to share with stakeholders

📥 Input Configuration

FieldTypeRequiredDescription
searchModestringYesdestination, coordinates, placeId, category, or url
destinationstringMode-specificFree-text city (destination mode)
destinationsarrayOptional (PAID)Bulk destinations array
ne_lat / ne_lng / sw_lat / sw_lngstringMode-specificMap-bounds box (coordinates mode)
placeIdstringMode-specificGoogle/Airbnb place ID
category_tagstringMode-specific (PAID)Airbnb category tag (e.g. Tag:4104)
airbnbUrlstringMode-specificAirbnb search URL
airbnbUrlsarrayOptional (PAID)Bulk URLs
checkIn / checkOutstringOptionalISO dates for date-filtered search & per-night pricing
adults / children / infants / petsintegerOptionalGuest counts
currencystringOptional3-letter ISO code (default USD)
typeOfPlacestringOptionalAny_type, Room, or Entire_home
priceRangeMin / priceRangeMaxintegerOptionalNightly price filter
bedrooms / beds / bathroomsintegerOptionalMinimum room counts
superhost / guestFavorite / luxuryHomesbooleanOptionalQuality filters
computeOccupancybooleanOptional (PAID)Enable calendar enrichment & full STR KPIs
availabilityWindowDaysintegerOptional30 / 90 (default) / 180 / 365
fetchHomeDetailsbooleanOptional (PAID)Fetch full listing details (description, amenities, house rules, photos). Requires checkIn/checkOut
fetchReviewsbooleanOptional (PAID)Fetch guest reviews per listing
reviewsLimitintegerOptionalMax reviews per listing when fetchReviews is on (default 20, max 50)
maxResultsPerQueryintegerOptionalCap per query (default 40, FREE capped at 25)

Example — Destination with full KPIs:

{
"searchMode": "destination",
"destination": "Lisbon, Portugal",
"checkIn": "2026-07-15",
"checkOut": "2026-07-22",
"currency": "EUR",
"computeOccupancy": true,
"availabilityWindowDays": 90,
"maxResultsPerQuery": 100
}

Example — Map-bounds coordinates:

{
"searchMode": "coordinates",
"ne_lat": "44.029",
"ne_lng": "-79.317",
"sw_lat": "43.824",
"sw_lng": "-79.498",
"typeOfPlace": "Entire_home"
}

Example — URL mode (bulk, PAID):

{
"searchMode": "url",
"airbnbUrls": [
"https://www.airbnb.com/s/Lisbon--Portugal/homes",
"https://www.airbnb.com/s/Porto--Portugal/homes"
]
}

📤 Output

Results are saved to the Apify dataset. Every listing returns 35+ base fields; turning on computeOccupancy adds the calendar-enrichment fields (marked below).

FieldTypeDescription
listingIdstringNumeric Airbnb listing ID
detailUrlstringDirect URL to the listing page
listingTitlestringListing title
subtitlestringProperty name / headline
citystringLocalized city
latitude / longitudenumberCoordinates
totalPricenumberSample stay total
nightlyRateFromTotalnumberNightly rate from sample
adrnumberAverage daily rate (computed)
occupancyRate (enrichment)numberOccupancy rate decimal (0.65 = 65%)
unavailableRate (enrichment)numberRaw share of unavailable nights
revpar (enrichment)numberRevenue per available night (ADR × occupancy)
estimatedAnnualRevenue (enrichment)numberRevPAR × 365
daysUntilNextAvailable (enrichment)numberForward-looking earliest open night
isStale (enrichment)booleanTrue if calendar fully open AND reviews < 3
bedrooms / beds / bathsnumberProperty dimensions
rating / reviewCountnumberSocial proof signals
badgesarraySuperhost, Guest Favorite, Luxe
photosarrayAll photo URLs
availability (enrichment)objectFull per-day calendar
homeDetails (enrichment)objectFull listing detail payload — description, amenities, house rules, policies
reviews (enrichment)arrayGuest reviews — reviewer name, rating, comment, date
kpiAssumptions (enrichment)objectDocumented heuristic baselines

Fields marked (enrichment) are only populated when the corresponding input flag (computeOccupancy, fetchHomeDetails, fetchReviews) is set. Without enrichment they're omitted from the record (saving you per-row cost when you don't need them).

A shareable HTML market report is saved to the run's key-value store with KPI distributions, top performers, and assumption disclosures.

Example listing record (with computeOccupancy: true — occupancy/revpar fields shown):

{
"listingId": "12345678",
"detailUrl": "https://www.airbnb.com/rooms/12345678",
"listingTitle": "Apartment in Lisbon",
"city": "Lisbon",
"latitude": 38.7223,
"longitude": -9.1393,
"adr": 142.5,
"occupancyRate": 0.74,
"revpar": 105.45,
"estimatedAnnualRevenue": 38489.25,
"daysUntilNextAvailable": 3,
"rating": 4.92,
"reviewCount": 187,
"bedrooms": 2,
"beds": 3,
"baths": 1,
"isStale": false
}

💼 Use Cases & Examples

1. STR Investment Underwriting

Real estate investors evaluating short-term rental purchases

Input: Destination + price range + bedroom filter + computeOccupancy: true Output: ADR, occupancy, RevPAR, and projected annual revenue for every comparable listing Use: Pro-forma underwriting, rent-vs-buy analysis, market comp pulls for lender packages

2. Rental Market Analysis by Metro or Map Area

Hospitality consultants and PE analysts mapping new markets

Input: Map-bounds coordinates covering a metro or resort area Output: Total active listings, ADR distribution, RevPAR by submarket Use: Market entry decisions, expansion strategy decks, demand forecasting

3. Competitor RevPAR Benchmarking

Existing Airbnb hosts and property managers tracking the competition

Input: URL mode with the host's local search URL + computeOccupancy: true Output: Side-by-side ADR and occupancy for every neighbor Use: Pricing strategy, dynamic-rate calibration, identifying underpriced or stale comps

4. Vacation Rental Investment & Arbitrage Sourcing

Rental arbitrage operators scouting cities for new units

Input: Destination + Entire-home filter + price range Output: Top-performing listings with revenue benchmarks and review velocity Use: Lease-up decisions, neighborhood ranking, ROI projections for landlords

5. Destination Revenue Forecasting

Tourism boards, DMOs, and academic researchers tracking STR supply

Input: Destination or place ID + 365-day availability window Output: Full-year occupancy curves, seasonality patterns, supply density Use: Policy briefs, tax-revenue projections, supply-vs-demand reports

6. Category-Level Trend Research (PAID)

Travel media, OTA strategists, and content brands

Input: Category mode with tags like Tag:4104 (Beach) or Tag:8186 (Cabin) Output: Category-wide pricing and occupancy benchmarks Use: Editorial features, trend reports, category-specific marketing

7. Stale-Listing & Inventory Quality Audits

Airbnb co-hosts and property management agencies

Input: Destination + computeOccupancy: true Output: isStale flag plus full forward calendar per listing Use: Identify abandoned listings, recovery outreach, inventory cleanup


🔗 Integration Examples

A clean real estate data API for your stack — call the actor from anywhere via the Apify REST API or one of the official client libraries.

JavaScript/Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('sian.agency/airbnb-property-scraper').call({
searchMode: 'destination',
destination: 'Lisbon, Portugal',
computeOccupancy: true,
availabilityWindowDays: 90,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);

Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')
run = client.actor('sian.agency/airbnb-property-scraper').call(
run_input={
'searchMode': 'coordinates',
'ne_lat': '44.029',
'ne_lng': '-79.317',
'sw_lat': '43.824',
'sw_lng': '-79.498',
'computeOccupancy': True,
}
)
for item in client.dataset(run['defaultDatasetId']).iterate_items():
print(item)

cURL

curl -X POST 'https://api.apify.com/v2/acts/sian.agency~airbnb-property-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"searchMode":"url","airbnbUrl":"https://www.airbnb.com/s/Lisbon--Portugal/homes"}'

Automation Workflows (n8n / Zapier / Make)

  1. Trigger: Schedule a weekly market scan
  2. HTTP Request: Call the actor with your destination
  3. Process: Filter listings by ADR or occupancy thresholds
  4. Action: Push winners to Notion, Sheets, or Slack

📊 Performance & Pricing

FREE Tier (Try It Now)

  • 25 listings per query — full data fields, same quality
  • All 5 search modes available (except Category & bulk arrays)
  • No credit card required
  • Perfect for evaluating a market before investing
  • Unlimited listings per query, up to 500 per run
  • Bulk arrays for destinations and URLs
  • Calendar enrichment unlocked — full ADR, occupancy, RevPAR, estimated annual revenue
  • Category-mode browsing
  • Pay-per-result: only charged for listings actually returned

Pricing events:

  • apify-actor-start — $0.005 per run
  • ListingExtracted — $0.005 per listing
  • OccupancyEnriched — $0.003 per listing (only when calendar enrichment succeeds)

💰 Best price on the market — full STR underwriting data for under a cent per listing.

🔗 View current pricing


❓ Frequently Asked Questions

Q: Is there a free Airbnb profit calculator? A: Yes — the FREE tier doubles as a free Airbnb profit calculator: run any market, get ADR, occupancy, RevPAR, and estimated annual revenue per listing on the first 25 results. Upgrade to PAID for unlimited listings and full forward-looking calendar enrichment.

Q: How do I calculate Airbnb investment returns? A: Enable computeOccupancy: true (PAID) and the actor returns ADR, occupancy rate, RevPAR, and estimated annual revenue per listing — the same inputs every Airbnb investment calculator uses, but populated from real forward-looking calendar data instead of city-level averages. Pull comps for any address radius or category and underwrite directly from the dataset.

Q: How many listings can I scrape? A: FREE tier: 25 per query. PAID tier: up to 500 per query, unlimited queries via bulk arrays.

Q: How accurate are the occupancy and RevPAR numbers? A: Occupancy is a forward-looking heuristic derived from each listing's public calendar minus a 10% host-block baseline. It's a strong directional signal — full assumptions are documented in the kpiAssumptions field and HTML report.

Q: Do I need to provide check-in / check-out dates? A: Optional but recommended. Without dates, the search returns results without date filtering and per-night prices are unavailable. With dates, you get filtered results and accurate nightly pricing.

Q: What's the difference between ADR and nightlyRateFromTotal? A: nightlyRateFromTotal comes from the search sample stay; adr is computed across the full availability window when calendar enrichment is enabled. ADR is more accurate for revenue projections.

Q: Can I filter by Superhost or Guest Favorite? A: Yes — toggle superhost, guestFavorite, or luxuryHomes to restrict results.

Q: Can I get a listing's full description, amenities, and house rules? A: Yes — enable fetchHomeDetails: true (PAID). It requires checkIn/checkOut to be set and returns the full listing detail payload alongside the search result.

Q: Can I get guest reviews for each listing? A: Yes — enable fetchReviews: true (PAID). Each listing gets up to reviewsLimit reviews (default 20, max 50) with reviewer name, rating, comment, and date.

Q: What output formats are available? A: JSON, CSV, Excel, HTML, RSS — export directly from the Apify dataset. A pre-built HTML market report is also saved to the key-value store.

Q: How long does processing take? A: ~1 second per listing without enrichment, ~2 seconds with calendar enrichment. A 100-listing market scan with full KPIs takes about 3 minutes.

Q: Is this legal? A: Yes — only publicly available Airbnb listing data is extracted. See the legal section below.


🐛 Troubleshooting

No results returned for a destination

  • Verify the destination string matches Airbnb's autocomplete (e.g. "Lisbon, Portugal" not "lisbon portugal")
  • Try URL mode instead with the exact search URL from airbnb.com

Coordinates mode returns empty

  • Confirm sw_lat < ne_lat and sw_lng < ne_lng (southwest corner is the smaller box corner)
  • Lat must be -90..90, lng must be -180..180

Occupancy rate seems low

  • The 10% host-block baseline is documented in kpiAssumptions. For raw availability, use unavailableRate
  • A wider availabilityWindowDays (180 or 365) smooths short-term anomalies

Per-night prices are missing

  • Pass checkIn and checkOut — without them, Airbnb returns sample-stay totals only

FREE tier hit the 25-listing cap

  • Upgrade to PAID for full market depth and calendar enrichment

⚠️ Trademark Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Airbnb, Inc. or any of its subsidiaries. The name "Airbnb" is used solely in a descriptive sense to identify the public data source the Actor reads from. All trademarks, service marks, and trade names referenced in this Actor or its documentation are the property of their respective owners.


Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the legality of web scraping.


🤝 Support

Telegram Support

Join our active support community


Built by SIÁN Agency | More Tools