Scrape Airbnb by location, search URL, or room URL/ID in one actor. Nightly + total price in your chosen currency, 12-month availability calendar, reviews with host replies (newest first), host profiles. Fair pay-per-event: $0 on zero results.
Three entry modes in one actor: free-text locations (geocode-verified), pasted
airbnb.com/s/... search URLs (all filters pass through), direct room URLs or
bare listing IDs.
Deterministic currency: every price in the requested ISO currency; nightly rate
never missing (breakdown-derived fallback covers all three Airbnb price-line
shapes, verified across 13 currencies and 8 locales).
Per-night price filters converted to Airbnb's stay-total filter semantics.
fullCoverage recursive map-split beats the ~280-results-per-search cap
(verified: 380+ unique listings for Porto in one run).
Add-ons, each with its own pay-per-event price: full details, 12-month
availability calendar, reviews newest-first with host replies, extended host
profile.
Fairness: $0 beyond actor start on zero results, unrecognized locations, and
failed detail fetches; charges always equal delivered data.
Monitoring mode: only new listings vs. previous runs (per identical input).
Listing id emitted as string (19-digit ids exceed JS Number precision).
Verified by a 30-scenario live acceptance suite (6 continents; big-city
pagination, tiny villages, Galápagos, unicode queries, ambiguous locations,
URL passthrough, direct IDs, all add-ons, fairness edge cases) — 30/30 green.