Extract full Airbnb listing data from any city worldwide.
Get pricing, amenities, host info, ratings, coordinates, and images —
one structured row per property, ready to export.
maxPages: default is now 0 (unlimited search result pages per city, aligned with Airbnb Professional Host Scraper — pagination continues while there is a next page / cursor). Set a positive integer only to cap runs (e.g. tests). CheeriomaxRequestsPerCrawl uses undefined when unlimited so Crawlee does not treat 0 as a zero-request limit.
[2.2.2] - 2026-03-29
Changed
Dataset output: checkIn, checkOut, and nights are no longer pushed to the dataset — they only reflect the scraper’s URL / price window, not an end user’s trip. Internal fetch logic still uses them for pricing.
[2.2.1] - 2026-03-29
Fixed
Images: after structured extraction (JSON-LD / Niobe / HERO), merge with the same full-HTML muscache.com/im/pictures/ regex sweep as Airbnb Professional Host Scraper so the images array is as complete as possible (deduped, avatars/user profile URLs excluded).
[2.2.0] - 2026-03-29
Removed
Company / pro-host legal fields (companyName, companyAddress, companyEmail, companyPhone, companyRegister, companyRCS, isProHost) and all PROFESSIONAL_HOST_DETAILS_MODAL parsing — avoids overlapping the Airbnb Professional Host actor (B2B contacts). This actor keeps listing intelligence only.
Added
src/listingI18n.js: Accept-Language on Phase 2 fetch from listing domain (aligned with localeConfig); splitPropertyType for FR / EN / ES; neutral hostType output (Superhost / Host); multilingual amenity keyword hints for boolean flags.
Changed
Dataset schema: dropped Company view; updated field descriptions.
[2.1.0] - 2026-03-29
Added
City discovery aligned with Airbnb Professional Host Scraper: country-based domain (e.g. airbnb.fr / airbnb.com + EU → .fr for search), Airbnb autocomplete (place_id / acp_id / location_bb), default check-in / check-out on the search URL, and propertyTypes → l2_property_type_ids[].
multiDateSearch: same 23 merged search passes (or 19 with multiDateSearchDatesOnly), multiPassConcurrency, useCityAutocomplete — only Phase 2 output differs (full listing detail vs host contacts).
Changed
flexibleTripLengths: when multiDateSearch is off, each selection adds an extra flexible pass on top of the default dated search (no longer appended as raw flexible_trip_lengths[] on a single URL).
Pool / Jacuzzi search filter ids match the professional-host scraper (7 / 26).
[2.0.0] - 2026-03-29
Added
Input schema split to .actor/input_schema.json: Step 1 (mode: city vs listing URLs), city as string list (City, Country, multiple lines = sequential searches), Step 2 search filters, optional maxPages.
Multi-city (sequential): each non-empty city line runs Phase 1 URL collection, then URLs are merged before Phase 2.
Dataset field listingId: numeric id from the listing URL for joins and deduplication.
.actor/actor.json references external dataset_schema.json, input_schema.json, output_schema.json, README.md, CHANGELOG.md; version 2.0.
English copy for actor description, input schema, and primary run logs.
Heuristic: non-empty listingUrls always selects URL mode (even if mode is city), matching common Apify JSON patterns.
Removed
Monolithicinput / storages.dataset blobs from actor.json (replaced by file references).
Form field listingUrl — use a single entry in listingUrls instead. LegacylistingUrl in JSON is still accepted in code.
Dataset (audit)
listingId: added (stable, from URL).
Guest favorite / instant book / cancellation: investigated; not added in this release — Airbnb embedded state varies; deferred to avoid fragile heuristics.