Airbnb Market Intel Scraper | Listings, Occupancy & Revenue
Pricing
from $2.80 / 1,000 listing (search data)s
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
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
22 days ago
Last modified
Categories
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):
| listing | nightly | rating | BR | occupancy 30d | est. revenue/mo | superhost |
|---|---|---|---|---|---|---|
| Little bungalow in East Austin | $252 | 5.0 (49) | 1 | 33 % | $2,517 | ✔ |
| Spacious & Modern ~ Downtown ~ Zilker | $238 | 4.62 (103) | 2 | 40 % | $2,856 | — |
| Travis Heights Groover | $382 | 4.95 (21) | 2 | 47 % | $5,343 | ✔ |
| Easy Access to UT Campus + Pool | $212 | 4.57 (122) | 1 | 57 % | $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
| Field | Default | What it does |
|---|---|---|
location | Austin, TX | Anything 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 / checkOut | 4 weeks out, 3 nights | Stay dates drive the nightly price Airbnb shows. |
adults | 2 | Guest count. |
children / infants / pets | 0 | New in 0.0.3. Party details — same effect on price/availability as on airbnb.com; pets = pet-friendly listings only. |
roomType | any | entire_home or private_room to filter. |
minBedrooms | 0 | Minimum bedrooms. |
minBeds / minBathrooms | 0 | New in 0.0.3. Airbnb min_beds / min_bathrooms. |
minRating / minReviews / guestFavoriteOnly | 0 / 0 / false | New 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 / priceMax | 0 | Nightly price filter in currency. |
maxListings | 54 | Charged listings per location (18 per page, Airbnb caps a search at 270). |
enrichCalendar | true | Add calendar KPIs + detail fields (2 extra requests per listing). |
maxEnrich | 30 | Enrich only the first N listings; 270 = all. |
currency | USD | Any ISO code (EUR, GBP, AUD, IDR…). |
marketSummary | true | Append the free roll-up row (also saved as key-value record MARKET_SUMMARY). |
Output — listing row
| Field | Example | Notes |
|---|---|---|
listingId, url | 547878270470501768 | Airbnb listing |
title, name | Guest suite in Austin, Serene & Sunny SoCo Sanctuary… | |
propertyTypeShort, area | Guest suite, Austin | parsed from title |
rating, reviewsCount, isNewListing | 4.99, 114, false | |
isGuestFavorite, isTopGuestFavorite, badges | true, true, ["Guest favorite"] | |
bedrooms, beds, baths | 1, 1, 1 | studio = 0 bedrooms |
nightlyPrice, nights, totalPrice, originalTotalPrice, discountPct, currency | 274.33, 3, 823, null, null, USD | price for the searched dates, before taxes |
checkIn, checkOut, freeCancellation | 2026-10-09, 2026-10-12, true | |
latitude, longitude, pictureUrl, rank, searchLocation, scrapedAt | ||
Enriched (enriched: true) | ||
roomType, propertyType, personCapacity | Entire home/apt, Entire guest suite, 2 | |
isSuperhost, hostName, hostRating, hostReviewCount, hostYears, hostIsVerified | true, Mary, 4.99, 114, 4.5, true | |
ratingCleanliness, ratingAccuracy, ratingCheckin, ratingCommunication, ratingLocation, ratingValue | 5, 4.99, 4.98, 5, 4.97, 4.95 | |
occupancy30, occupancy60, occupancy90, occupancy365 | 0.367, 0.417, 0.311, 0.269 | share of calendar nights unavailable |
bookedNights30/60/90/365, availableNights30/90/365 | 11, 25, 28, 97 … | |
estRevenue30, estRevenue90, estRevenue365 | 3018, 7681, 26610 | nightlyPrice × unavailable nights |
revPar30, revPar90 | 100.59, 85.35 | nightlyPrice × occupancy |
minNights, maxNights, nextAvailableDate, calendarFrom, calendarTo | 2, 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
| Event | Price |
|---|---|
| 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.
Related Actors
- Google Ads Transparency Scraper — see which property managers and hosts advertise.
- Brand Ads Cross-Network Spy — ad creatives across Google and Meta for any brand.
- Contact Details Scraper — emails, phones and socials from any website.
- Kalshi Weather Markets Scraper — prediction-market weather odds for demand forecasting.
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)
dateLabelis 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 (
proxyConfigurationinput added; empty = automatic fallback). Forensic snapshot in KVSEARCH_DEBUGif 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) —
bedroomsfill: Airbnb search cards sometimes omit the bedroom line (≈10–20 % of cards, mostly studios). When the listing name says “studio” the row now getsbedrooms: 0instead ofnull; other cards without the line staynulluntil 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-filtersminRating/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.