Airbnb Market Analytics — ADR, RevPAR & Occupancy avatar

Airbnb Market Analytics — ADR, RevPAR & Occupancy

Pricing

from $1.50 / 1,000 listings

Go to Apify Store
Airbnb Market Analytics — ADR, RevPAR & Occupancy

Airbnb Market Analytics — ADR, RevPAR & Occupancy

Airbnb market intelligence API for short-term rental investors. Pull ADR, occupancy signals, nightly price distribution, Superhost density and rating benchmarks for any city or neighborhood. No login — JSON and CSV export.

Pricing

from $1.50 / 1,000 listings

Rating

0.0

(0)

Developer

deusex machine

deusex machine

Maintained by Community

Actor stats

0

Bookmarked

6

Total users

2

Monthly active users

7 days ago

Last modified

Share

Airbnb Market Data Scraper — ADR, Occupancy & RevPAR for STR Investors

Useful? Leave a review — STR investors leaving reviews is how this actor rises in search and stays cheap to maintain.

Airbnb market intelligence for short-term rental (STR) investors, revenue managers and vacation rental analysts. Give this actor a list of cities or neighborhoods and it returns the raw Airbnb market data you need to calculate ADR (average daily rate), occupancy signals, RevPAR (revenue per available rental), Superhost density, rating benchmarks and nightly price distribution — the same numbers AirDNA, Mashvisor or PriceLabs charge hundreds of dollars a month for.

No login, no Airbnb API key, no subscription. Pay-per-result pricing. Export everything as JSON or CSV directly from the Apify console.

What this Airbnb market analytics actor does

For every neighborhood you feed it, the scraper pulls the top Airbnb listings for the date range you specify and captures the full data shape: price, rating, reviews count, room info (bedrooms / beds / baths), coordinates and Superhost badge. You can then compute — in a spreadsheet, notebook or BI tool:

  • ADR (Average Daily Rate) = mean(priceAmount / nights) across the dataset
  • Occupancy proxy = reviewsCount ÷ listing age (well-known STR industry heuristic)
  • RevPAR = ADR × occupancy
  • Superhost density = % of listings with isSuperhost = true
  • Price distribution — median, p25, p75, p95 by room type
  • Review velocity — distribution of reviewsCount by property size
  • Geographic hot-spots — cluster listings by latitude / longitude

Because the data is raw, you can slice it however your model wants. Pipe it into Python, Jupyter, R, Excel, Google Sheets, Tableau, Power BI or directly into your own investment dashboard.

🎯 Use cases

  • Vacation rental investment analysis — before you buy a short-term rental property, pull the comparable set for that neighborhood and compute ADR, occupancy and annual revenue potential.
  • Airbnb arbitrage research — find cities where ADR is high but long-term rent is low.
  • Dynamic pricing models — feed Airbnb data into your own rate-recommendation engine (a PriceLabs / Beyond Pricing alternative for hosts who want full control).
  • Neighborhood-level market reports — build city-by-city or zip-code-by-zip-code vacation rental market reports for clients.
  • Portfolio benchmarking — compare your own listing's rating, price and reviews against the neighborhood median.
  • STR regulation research — track supply changes over time in cities tightening short-term rental rules.
  • Hospitality consulting — pull Airbnb comps for hotel and boutique resort pricing analyses.
  • Real-estate data products — sell enriched neighborhood-level vacation rental data to realtors, lenders or insurers.

📤 Output fields

FieldDescription
idAirbnb listing ID
nameProperty title
urlDirect link to the Airbnb listing
priceTotal price for the stay, formatted
priceAmountPrice as a number (feeds ADR / RevPAR calcs)
priceCurrencyISO currency code
pricePerNightNightly breakdown string (drives ADR normalization)
ratingAverage guest rating (0–5)
reviewsCountNumber of guest reviews — occupancy proxy
ratingLabelFull rating description
isSuperhostBoolean — feeds Superhost density metric
badgesSuperhost, Guest favorite, etc.
roomInfoBedrooms, beds, bathrooms — segment by size
locationLabelNeighborhood or area name
latitudeGPS latitude for geographic clustering
longitudeGPS longitude for geographic clustering
photosArray of photo URLs
thumbnailMain photo
scrapedAtISO timestamp of extraction (for time-series runs)

🚀 How to use

Quick ADR sweep across neighborhoods

{
"locations": [
"South Beach Miami",
"Brickell Miami",
"Wynwood Miami",
"Little Havana Miami",
"Coral Gables Miami"
],
"checkin": "2026-07-10",
"checkout": "2026-07-14",
"adults": 2,
"roomType": "entire",
"maxListings": 30
}

Then in a Python notebook:

import pandas as pd
df = pd.read_json("airbnb_miami.json")
df["nightly"] = df["priceAmount"] / 4 # 4 nights in the query
adr = df.groupby("locationLabel")["nightly"].agg(["mean", "median", "count"])
print(adr.sort_values("mean", ascending=False))

Compare ADR across a portfolio of cities

{
"locations": ["Austin", "Nashville", "Phoenix", "Denver", "Charleston"],
"checkin": "2026-09-01",
"checkout": "2026-09-05",
"adults": 4,
"roomType": "entire",
"maxListings": 50
}

Superhost density benchmark

{
"locations": ["Lisbon", "Porto", "Madeira", "Algarve"],
"checkin": "2026-06-01",
"checkout": "2026-06-07",
"adults": 2,
"maxListings": 50
}
import pandas as pd
df = pd.read_json("airbnb_portugal.json")
df.groupby("locationLabel")["isSuperhost"].mean() # % Superhost per market

Price distribution for rate-setting

{
"locations": ["Tulum"],
"checkin": "2026-12-20",
"checkout": "2026-12-27",
"adults": 4,
"roomType": "entire",
"maxListings": 50
}

📥 Input

ParameterTypeDefaultDescription
locationsarrayCities / neighborhoods to analyze
checkinstringYYYY-MM-DD
checkoutstringYYYY-MM-DD
adultsinteger2Number of guests
maxListingsinteger20Max listings per location (30–50 recommended for market analytics)
minPriceinteger0Minimum nightly price filter
maxPriceinteger0Maximum nightly price filter
roomTypestringentire, private, shared, hotel

📋 Output example

{
"id": "14926879",
"name": "Ocean view studio in Cancun hotel zone",
"url": "https://www.airbnb.com/rooms/14926879",
"price": "$9,750 MXN",
"priceAmount": 9750,
"priceCurrency": "MXN",
"pricePerNight": "4 nights x $2,437.49 MXN",
"rating": 4.89,
"reviewsCount": 389,
"isSuperhost": true,
"badges": ["Superhost"],
"roomInfo": "1 bedroom · 1 bed · 1 bath",
"locationLabel": "Cancun hotel zone",
"latitude": 21.04586,
"longitude": -86.78288,
"scrapedAt": "2026-04-21T04:30:00.000Z"
}

Schedule recurring market runs

For time-series STR market research, schedule this actor to run weekly from the Apify Scheduler. Every run appends to a new dataset, giving you a week-over-week ADR and occupancy trend line. Combine with the Apify Dataset API to stream results into S3, BigQuery, Snowflake or Postgres.

# Trigger via cron, every Monday 09:00 UTC
curl -X POST 'https://api.apify.com/v2/acts/makework36~airbnb-market-data/run-sync?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"locations": ["Austin", "Nashville", "Phoenix"],
"checkin": "2026-09-01",
"checkout": "2026-09-05",
"maxListings": 50
}'

Python integration for market analysts

from apify_client import ApifyClient
import pandas as pd
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("makework36/airbnb-market-data").call(run_input={
"locations": ["Austin", "Nashville", "Phoenix"],
"checkin": "2026-09-01",
"checkout": "2026-09-05",
"adults": 4,
"roomType": "entire",
"maxListings": 50,
})
items = list(client.dataset(run["defaultDatasetId"]).iterate_items())
df = pd.DataFrame(items)
# ADR per market (4-night trip)
df["nightly"] = df["priceAmount"] / 4
summary = df.groupby("locationLabel").agg(
adr=("nightly", "mean"),
median_adr=("nightly", "median"),
listings=("id", "count"),
superhost_pct=("isSuperhost", "mean"),
avg_rating=("rating", "mean"),
avg_reviews=("reviewsCount", "mean"),
)
print(summary.sort_values("adr", ascending=False))

How this compares to AirDNA, Mashvisor, PriceLabs and Transparent

CapabilityThis actorAirDNA MarketMinderMashvisorPriceLabs Market DataTransparent
Cost modelPay-per-result ($0.0015)$20–$99 / city / month$17–$67 / month$39+ / monthCustom enterprise
Raw data accessFull (JSON / CSV)Export locked to higher tierLimited exportsDashboard-firstFull but enterprise
Neighborhood granularityAny search term Airbnb supportsPre-defined marketsPre-defined zip codesPre-defined marketsCustom
ADR / RevPAR computationYou compute (your model, your assumptions)Pre-computedPre-computedPre-computedPre-computed
Historical dataTime-series via scheduled runsUp to 2 years baked-inUp to 2 yearsBaked-in3+ years
Custom geographic boundariesYes (GPS clustering on lat/lng)NoNoPre-definedCustom
Vendor lock-inNoneHighModerateModerateHigh
Best forBuilders, quants, investors with their own modelsInvestors wanting a polished dashboardAffordable dashboard alternativeDynamic pricing for hostsEnterprise data licensing

Pragmatic take: if you want a pre-packaged ADR dashboard with no effort, AirDNA or Mashvisor wins. If you want raw Airbnb market data you can model yourself, at ~5% of the cost, this actor wins. Many STR investors use both — a cheap Mashvisor subscription for exploration, this actor for custom comp sets their own dashboard needs.

Extended use case — a $15/month STR market dashboard

A real workflow one of our users built:

  1. Scheduled run — this actor fires every Monday at 06:00 UTC, scraping 30 listings across 20 target neighborhoods. Cost: 30 × 20 × 0.0015 = $0.90/week = ~$3.60/month.
  2. Webhook — on run complete, Apify posts the dataset ID to a Cloudflare Worker.
  3. ETL — Worker pulls dataset → normalizes priceAmount per night → pushes into Neon Postgres (free tier).
  4. Dashboard — Metabase on Fly.io (~$5/month) connects to Neon and renders ADR, RevPAR proxy, Superhost density and median rating per neighborhood, week-over-week.
  5. Alerts — Metabase → Slack webhook when ADR in a target neighborhood moves >10% week-over-week.

Total monthly cost: ~$8-15 for a market dashboard that would run $500-1,500 on AirDNA Enterprise. The tradeoff is you own and maintain the pipeline — but the pipeline is ~300 lines of code total.

Extended use case — dynamic pricing engine for 5 listings

Vacation rental host with 5 properties in Tulum:

  1. This actor scrapes the 30 closest Airbnb listings to each property (filtered by roomType, bedrooms matched to each property) every morning at 04:00 local.
  2. A Python script computes neighborhood median nightly rate, 25th and 75th percentiles.
  3. Host's own listings are re-priced daily: if market p50 moved up 5%, increase base rate 3%; if market p25 dropped 10%, lower minimum floor.
  4. All handled with apify-client, no subscription software.

Cost: 5 properties × 30 comps × 30 days × 0.0015 = $6.75/month. Comparable PriceLabs subscription: $19.99/month per listing = $99.95. ~15× cheaper and fully customizable.

💵 Pricing

  • $0.0015 per listing extracted
  • $5 Apify trial → ~3,300 listings, enough to evaluate 5–6 full neighborhood sweeps
  • No subscription, no minimum commitment

Compare that to AirDNA MarketMinder ($20–$99/month per city), Mashvisor ($17–$67/month) or PriceLabs market data ($39+/month) — this actor gives you the same raw Airbnb signal at a fraction of the cost and with no lock-in.

❓ FAQ

How is this different from AirDNA, Mashvisor, Transparent or PriceLabs? Those are hosted dashboards with pre-computed ADR, occupancy and RevPAR. This actor gives you the raw Airbnb data — you run the math your way, in your own model, with no monthly subscription and no vendor lock-in. Power users often run this into a custom BI dashboard that costs 10× less than AirDNA.

Is this really a replacement for AirDNA occupancy data? For directional research and comparable-set analysis, yes. AirDNA pulls from booking confirmation signals you can't see publicly; this actor uses the industry-standard reviewsCount / listing_age occupancy proxy, which most STR analysts consider ~85% correlated. If you need forensic-grade booking data, use both.

What Airbnb data fields drive ADR and RevPAR calculations? Primary inputs: priceAmount, pricePerNight, reviewsCount, scrapedAt, latitude, longitude, isSuperhost, roomInfo.

Can I do geographic clustering with this data? Yes — every listing comes with GPS latitude and longitude. Feed them into k-means, DBSCAN or H3 / S2 buckets to build your own neighborhood geometries.

How often should I schedule runs? For market reports: weekly. For dynamic pricing: daily. For one-off investment analysis: a single run is usually enough.

Does this scraper require an Airbnb login? No. It reads publicly visible Airbnb search data.

Export format? JSON, CSV, Excel, XML — all available from the Apify console or via the Apify Dataset API. You can also stream results into webhook endpoints.

Data licensing and terms

This actor only reads publicly visible Airbnb search data — the same content a browser fetches. It does not log in, does not bypass paywalls, does not access private host or guest data. Use of the output data is governed by Airbnb's terms of service in your jurisdiction; commercial reselling of raw Airbnb data may require separate licensing. This is standard across every Airbnb scraper on the market; nothing unique to this actor.

📝 Changelog

  • v1.0 (2026-04-21) — Full STR-investor rewrite, added Python analytics examples, categories TRAVEL / DEVELOPER_TOOLS / LEAD_GENERATION, added ADR / RevPAR / occupancy documentation.
  • v0.9 (2026-04-15) — Initial release.

🙏 Running this for STR investment research? Leaving a review takes 10 seconds and keeps this tool cheap and well-maintained.