Airbnb Market Intel Scraper avatar

Airbnb Market Intel Scraper

Pricing

from $2.50 / 1,000 results

Go to Apify Store
Airbnb Market Intel Scraper

Airbnb Market Intel Scraper

Extract Airbnb listings, prices, ratings, and occupancy data from any market. HTTP-only, no browser. Parse the SSR StaysSearch payload for prices, GPS coordinates, and optional 12-month calendars turned into occupancy and revenue estimates.

Pricing

from $2.50 / 1,000 results

Rating

0.0

(0)

Developer

Aurenic

Aurenic

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Share

Extract Airbnb listings, prices, ratings, and occupancy data from any market. HTTP-only, no browser. Parse the SSR StaysSearch payload for prices, GPS coordinates, and optional 12-month calendars turned into occupancy and revenue estimates.

What does Airbnb Market Intel Scraper do?

Scrape short-term rental market data from Airbnb in two modes:

  • Search listings by market — pass a location (Austin, Texas) and dates, get every listing with price (nightly + total + discount), rating, reviews, bedrooms, GPS coordinates, and badges. Walks the search pagination up to Airbnb's ~270-listing cap.
  • Listing detail — pass listing URLs, get the full 365-day availability calendar turned into occupancy 30/60/90, ADR, RevPAR, and estimated monthly/annual revenue — AirDNA-style metrics for STR investors and property managers.

HTTP-only, no browser. Airbnb ships its full search response as an inline <script id="data-deferred-state-0"> payload in the HTML — the same JSON the React app would fetch. The actor reads it directly, backed by residential proxy rotation to clear PerimeterX.

Output fields

Listing (search mode)

FieldDescription
listingIdNumeric Airbnb listing ID
urlDirect room URL
nameListing name
roomType / propertyTypeRoom and property classification
rating / reviewsCountAverage rating and review count
priceTotalTotal price for the date range
priceNightlyDerived nightly rate
priceOriginalTotal / discountPercentDiscount info
latitude / longitudeGPS coordinates
bedrooms / beds / baths / maxGuestsCapacity
isSuperhostSuperhost flag
badgesGuest favorite, etc.
picturePrimary photo URL
searchLocation / checkIn / checkOut / nightsSearch context

Listing Intel (detail mode)

Everything above, plus:

FieldDescription
calendar365-day availability array
occupancy30 / occupancy60 / occupancy90% booked in each window
adrAverage daily rate
revparRevenue per available room
estimatedMonthlyRevenueRevPAR × 30
estimatedAnnualRevenueRevPAR × 365

Who is it for?

  • STR investors running AirDNA-style comps for acquisition underwriting
  • Property managers benchmarking rates against the market
  • Revenue managers tracking nightly pricing and occupancy trends
  • Market researchers analyzing supply and pricing by neighborhood
  • Real estate developers evaluating short-term rental yields
  • Travel platforms enriching destination pages with market context

Pricing

$2.50 per 1,000 results. No subscription.

ResultsCost
100$0.25
1,000$2.50
10,000$25.00

How to use it

  1. Pick a Mode.
  2. For search: enter one or more Locations and set Check-in / Check-out.
  3. For detail: paste Listing URLs.
  4. Optionally set bedrooms, price, and property type filters.
  5. Click Start.

Output example

{
"recordType": "listing",
"listingId": "1652957843916333450",
"url": "https://www.airbnb.com/rooms/1652957843916333450",
"name": "Stylish Pool Home 4BR Near Siesta Key",
"roomType": "Entire home/apt",
"rating": 5.0,
"reviewsCount": 8,
"priceTotal": 3190,
"priceNightly": 638,
"priceOriginalTotal": 3544,
"discountPercent": 10,
"latitude": 27.30754,
"longitude": -82.52108,
"bedrooms": 4,
"beds": 4,
"baths": 3,
"maxGuests": 8,
"isSuperhost": true,
"badges": ["Guest favorite"],
"searchLocation": "Siesta Key, Florida",
"checkIn": "2026-10-15",
"checkOut": "2026-10-20",
"nights": 5,
"scrapedAt": "2026-09-26T12:00:00.000Z"
}

Technical details

  • Airbnb serializes its GraphQL cache as inline JSON in <script id="data-deferred-state-0">. The search response lives at niobeClientData[*][1].data.presentation.staysSearch.results.searchResults. The actor parses that directly — no DOM scraping, no selectors that break on redesign.
  • Listing IDs are base64-encoded in demandStayListing.id. Decoded → DemandStayListing:{id} → numeric room ID.
  • /api/v3/StaysSearch GraphQL is NOT called. Persisted-query hashes rotate and require device fingerprinting. The SSR script tag carries the same response, served inline. This is the entire moat.
  • Bot check detection — if the response lacks data-deferred-state-0, Airbnb served a PerimeterX shell. The actor rotates the residential proxy session and retries up to 8 times.
  • Residential proxy is mandatory. Airbnb blocks datacenter IPs. The actor defaults to Apify RESIDENTIAL with US country.
  • ~270-listing cap per search. Airbnb paginates via items_offset up to 252 (15 pages × 18). For larger markets, split by neighborhood or price band and dedupe by listingId.
  • PDP data shape is different — the listing page uses StaysPdpSections, not StaysSearch. The actor has a separate decoder for detail mode.

Known limits

  • Prices are for the requested stay, not a nightly rate. The actor derives priceNightly by dividing by nights. This is an approximation — Airbnb applies length-of-stay discounts.
  • Currency depends on the proxy's IP country. The actor defaults to US residential, so prices are USD. Set apifyProxyCountry in code for other markets.
  • ~270 listings max per search. Larger markets need subdivision. Map-bounded searches (search_by_map=true) return a more precise count and allow quadtree splitting.
  • includeCalendar requires detail mode. Calendar parsing walks the PDP sections array. Some listings have the calendar behind a stub section; those return calendarDays: 0.
  • Price and currency shift by IP location. The actor pins US residential; results are USD. Some non-US listings may return null prices.
  • No reviews extraction. Reviews live on a separate XHR. Planned for a future release.

FAQ

Do I need an Airbnb account? No. Public data only.

Do I need a proxy? Yes. Airbnb blocks datacenter IPs with PerimeterX. Residential proxy is pre-configured.

Why no browser? Airbnb ships the full search payload inline in the HTML. Parsing that is faster and more reliable than running a headless browser.

How do I cover a whole city that has more than 270 listings? Split into narrower searches — by neighborhood, price band, or map bounding box — and dedupe by listingId across runs.

What are occupancy and RevPAR? Occupancy = % of nights booked in the window. ADR = average daily rate. RevPAR = ADR × occupancy. Estimated monthly revenue = RevPAR × 30. These are the standard STR investment metrics.

How do I export data? After a run, go to Storage → Export as JSON, CSV, Excel.

Support

Open an issue on the Actor's page for bugs or feature requests.