Airbnb Market Intel Scraper | Listings, Occupancy & Revenue avatar

Airbnb Market Intel Scraper | Listings, Occupancy & Revenue

Pricing

from $2.80 / 1,000 listing (search data)s

Go to Apify Store
Airbnb Market Intel Scraper | Listings, Occupancy & Revenue

Airbnb Market Intel Scraper | Listings, Occupancy & Revenue

Scrape any Airbnb market: nightly price, rating, reviews, bedrooms + 12-month calendar turned into occupancy 30/60/90, est. monthly revenue, RevPAR, superhost & host stats, plus a free market-summary row. AirDNA-style comps for STR investors & hosts. HTTP-only, pay per result, MCP-ready.

Pricing

from $2.80 / 1,000 listing (search data)s

Rating

0.0

(0)

Developer

Mr Zack

Mr Zack

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

22 days ago

Last modified

Share

Airbnb Market Intel Scraper — Listings, ADR, Occupancy & Revenue Estimate

Answer "what does a 2-bedroom in this market actually earn?" in one run. Scrape any Airbnb search (city, neighborhood, region or a pasted Airbnb URL with your filters) and get every listing's nightly price, rating, reviews, bedrooms/beds/baths, badges and coordinates — plus, per listing, the 12-month availability calendar turned into occupancy 30/60/90/365, estimated monthly revenue and RevPAR, superhost status, guest capacity, sub-ratings and host stats. A free market-summary row rolls it up: median / p25 / p75 nightly price, share of superhosts and guest favorites, median occupancy & revenue, and a breakdown by bedroom count.

HTTP-only (server-rendered pages + Airbnb's public calendar endpoint), no login, no proxy, no cookies. Pay per result: $4 per 1,000 listings, $6 per 1,000 enriched listings (calendar + details). Duplicates, failed listings and the summary row are never charged.

Try it free in under a minute. Press Start with the prefilled input (Austin, TX) — about 40 seconds later you have 54 listings plus a market-summary row. A run like that costs about $0.25, and Apify's free plan includes $5 of platform credit every month, no credit card, so your first ~800 enriched listings are effectively free.

Real rows from that prefilled run (23 Sep 2026):

listingnightlyratingBRoccupancy 30dest. revenue/mosuperhost
Little bungalow in East Austin$2525.0 (49)133 %$2,517✔
Spacious & Modern ~ Downtown ~ Zilker$2384.62 (103)240 %$2,856—
Travis Heights Groover$3824.95 (21)247 %$5,343✔
Easy Access to UT Campus + Pool$2124.57 (122)157 %$3,598—

…and the free summary row answers the market question directly: median nightly $364, median occupancy 30d 47 %, with p25/p75 prices, superhost share and a per-bedroom breakdown.

Who uses this

  • Short-term-rental investors comparing markets before buying — ADR, occupancy and revenue estimates per bedroom count, without a $100+/month AirDNA seat.
  • Hosts & property managers pricing against the competition: who charges what, who is booked out, who is superhost, minimum nights.
  • Real-estate agents & lenders building STR underwriting comps for a specific address or neighborhood.
  • Analysts & AI agents that need a clean, structured snapshot of an Airbnb market on a schedule.

Input

FieldDefaultWhat it does
locationAustin, TXAnything you would type into Airbnb search.
locations[]Several markets in one run (one per line).
searchUrls[]Advanced: full airbnb.com/s/... URLs with your own filters (map area, amenities, instant book…).
checkIn / checkOut4 weeks out, 3 nightsStay dates drive the nightly price Airbnb shows.
adults2Guest count.
children / infants / pets0New in 0.0.3. Party details — same effect on price/availability as on airbnb.com; pets = pet-friendly listings only.
roomTypeanyentire_home or private_room to filter.
minBedrooms0Minimum bedrooms.
minBeds / minBathrooms0New in 0.0.3. Airbnb min_beds / min_bathrooms.
minRating / minReviews / guestFavoriteOnly0 / 0 / falseNew in 0.0.3. Post-filters on the search card (rating, review count, Guest Favorite badge) — dropped listings are never charged. Use minReviews: 20 to keep only proven earners.
priceMin / priceMax0Nightly price filter in currency.
maxListings54Charged listings per location (18 per page, Airbnb caps a search at 270).
enrichCalendartrueAdd calendar KPIs + detail fields (2 extra requests per listing).
maxEnrich30Enrich only the first N listings; 270 = all.
currencyUSDAny ISO code (EUR, GBP, AUD, IDR…).
marketSummarytrueAppend the free roll-up row (also saved as key-value record MARKET_SUMMARY).

Output — listing row

FieldExampleNotes
listingId, url547878270470501768Airbnb listing
title, nameGuest suite in Austin, Serene & Sunny SoCo Sanctuary…
propertyTypeShort, areaGuest suite, Austinparsed from title
rating, reviewsCount, isNewListing4.99, 114, false
isGuestFavorite, isTopGuestFavorite, badgestrue, true, ["Guest favorite"]
bedrooms, beds, baths1, 1, 1studio = 0 bedrooms
nightlyPrice, nights, totalPrice, originalTotalPrice, discountPct, currency274.33, 3, 823, null, null, USDprice for the searched dates, before taxes
checkIn, checkOut, freeCancellation2026-10-09, 2026-10-12, true
latitude, longitude, pictureUrl, rank, searchLocation, scrapedAt
Enriched (enriched: true)
roomType, propertyType, personCapacityEntire home/apt, Entire guest suite, 2
isSuperhost, hostName, hostRating, hostReviewCount, hostYears, hostIsVerifiedtrue, Mary, 4.99, 114, 4.5, true
ratingCleanliness, ratingAccuracy, ratingCheckin, ratingCommunication, ratingLocation, ratingValue5, 4.99, 4.98, 5, 4.97, 4.95
occupancy30, occupancy60, occupancy90, occupancy3650.367, 0.417, 0.311, 0.269share of calendar nights unavailable
bookedNights30/60/90/365, availableNights30/90/36511, 25, 28, 97 …
estRevenue30, estRevenue90, estRevenue3653018, 7681, 26610nightlyPrice × unavailable nights
revPar30, revPar90100.59, 85.35nightlyPrice × occupancy
minNights, maxNights, nextAvailableDate, calendarFrom, calendarTo2, 1125, 2026-09-13, …

How to read occupancy: Airbnb only exposes availability, so an unavailable night is either booked or blocked by the host. That is the same public-data proxy every STR analytics tool starts from — treat it as an upper bound and compare listings against each other rather than as an audited P&L.

Output — market-summary row (free)

type: "market-summary", listings, listingsEnriched, medianNightlyPrice, avgNightlyPrice, p25NightlyPrice, p75NightlyPrice, minNightlyPrice, maxNightlyPrice, avgRating, medianReviews, totalReviews, shareGuestFavorite, shareNewListings, shareSuperhost, medianOccupancy30, medianOccupancy90, medianEstRevenue30, medianRevPar30, medianMinNights, medianPersonCapacity, bedroomBreakdown[] (bedrooms, listings, medianNightlyPrice, medianOccupancy30, medianEstRevenue30, avgRating).

Example output (one real enriched row, 6 Sep 2026, "Austin, TX")

{
"listingId": "547878270470501768",
"url": "https://www.airbnb.com/rooms/547878270470501768",
"title": "Guest suite in Austin",
"name": "Serene & Sunny SoCo Sanctuary with Farmhouse Feel",
"rating": 4.99, "reviewsCount": 114, "isGuestFavorite": true,
"bedrooms": 1, "beds": 1, "baths": 1,
"nightlyPrice": 274.33, "nights": 3, "totalPrice": 823, "currency": "USD",
"roomType": "Entire home/apt", "personCapacity": 2, "isSuperhost": true,
"hostName": "Mary", "hostRating": 4.99, "hostYears": 4.5,
"occupancy30": 0.367, "occupancy90": 0.311, "occupancy365": 0.269,
"estRevenue30": 3018, "estRevenue90": 7681, "revPar30": 100.59,
"minNights": 2, "nextAvailableDate": "2026-09-13", "enriched": true
}

Default input (Austin, 54 listings, 30 enriched) costs about $0.28 and runs in under a minute.

Pricing

EventPrice
Listing (search data)$0.004 ($4 / 1,000)
Listing enriched (calendar + details)$0.006 ($6 / 1,000) — replaces the listing fee for that row
Actor start$0.001

Compute is included. Duplicates across pages/locations, listings that fail to parse and the market-summary row are never charged. A failed enrichment falls back to the plain listing fee.

Schedule it

Markets move weekly. In Apify Console open the Actor → Schedules → e.g. every Monday 06:00 with your locations, then connect the dataset to Google Sheets, Airtable, Slack or a webhook via Integrations. Compare MARKET_SUMMARY records week over week to spot price drops and occupancy shifts before your competitors do.

Use it from code or AI agents (MCP)

curl -X POST "https://api.apify.com/v2/acts/tactful_anvil~airbnb-market-intel-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"location":"Canggu, Bali","roomType":"entire_home","minBedrooms":2,"maxListings":90,"maxEnrich":90,"currency":"USD"}'

Works out of the box with the Apify MCP server (https://mcp.apify.com) — add this Actor to your Claude, Cursor, ChatGPT or custom agent and ask "compare Airbnb occupancy and ADR for 2-bedroom homes in Austin vs Nashville". Python: ApifyClient(token).actor("tactful_anvil/airbnb-market-intel-scraper").call(run_input={...}).

Why this Actor

  • Market intelligence, not just listings — occupancy, revenue estimate and RevPAR per listing plus a market roll-up; competitors stop at price and rating.
  • HTTP-only & fast — ~1 s per page, ~0.7 s per enriched listing, no browser, no proxies to pay for.
  • Fail-loud — if Airbnb changes its layout the run fails with a clear message instead of "succeeding" with 0 rows.
  • Fair pricing — flat per-result fees, nothing charged for duplicates, failures or the summary.

Found this useful? Bookmark & review

A bookmark or a short review on this page helps other hosts and investors find it — and tells me which fields to add next (reviews text, amenities, price history?). Issues tab is open.

Changelog

  • 0.1.5 (24 Sep 2026) — Reliability: when Airbnb rate-limits the datacenter and proxy connections, pages now come through a residential connection instead of the run failing, and the first search page is retried patiently. A location with no listings ends as a normal (empty) run with a clear message, several locations are processed even if one is refused, and long runs stop cleanly before their timeout with everything collected so far. No price or field change.
  • 0.1.4 (24 Sep 2026) — Store page now opens with real sample rows and the free-plan math; the run's status bar shows your market's median nightly price and occupancy at a glance. No code, price or field change to the data itself.
  • 0.1.3 (24 Sep 2026) — Reliability on rate limits. (1) An HTTP 429/403 on the first search page used to end the run as "0 listings found — try a broader location"; the search now retries through the proxy automatically and, if Airbnb still refuses, the run says so plainly (rate limit, not your input; only the start fee charged). (2) A room page answering HTTP 429 during enrichment is retried once through the proxy after a short breather instead of downgrading the row to a plain listing. (3) dateLabel is now filled from your dates ("Oct 21 – 24") — Airbnb omits the card date line for dated searches, so the column was empty. (4) Unknown input fields are reported in the log (typo guard). No price or field removed.
  • 0.1.2 (16 Sep 2026) — Fix: runs failed with "no embedded search payload" when Airbnb soft-blocked the datacenter IP (HTTP 200, no results). The Actor now retries the search through a proxy automatically (proxyConfiguration input added; empty = automatic fallback). Forensic snapshot in KV SEARCH_DEBUG if even the proxy gets no payload.
  • 0.1.1 (16 Sep 2026) — Reliability: V8 heap capped at 70 % of run memory so garbage is collected before the container limit (prevents out-of-memory kills on big pages). No output change.
  • 0.0.4 (13 Sep 2026) — bedrooms fill: Airbnb search cards sometimes omit the bedroom line (≈10–20 % of cards, mostly studios). When the listing name says “studio” the row now gets bedrooms: 0 instead of null; other cards without the line stay null until the room page fills it (fetchDetails). No other field changed.
  • 0.0.3 (8 Sep 2026) — billing hardening: a charging hiccup can no longer abort a run that already returned listings (rows are delivered either way).
  • 0.0.3 (8 Sep 2026) — party details (children, infants, pets), minBeds / minBathrooms, quality post-filters minRating / minReviews / guestFavoriteOnly (never charged when dropped). No existing field changed.
  • 0.1 (6 Sep 2026) — launch: search pagination (15 pages), room details, 12-month calendar KPIs, market-summary row, multi-location, pasted search URLs.