# Changelog of Airbnb Unique Stays · 18 Categories by City (`corent1robert/airbnb-atypical-stays-scraper`) Actor

- **URL**: https://apify.com/corent1robert/airbnb-atypical-stays-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/corent1robert/airbnb-atypical-stays-scraper.md

## Changelog

### \[2026-09-01]

#### Changed

- Free plan cap: 20 rows per run. Anonymous Try off.

### 2.9 (2026-08-24)

#### Changed

- Store suite: README Also available table + listing copy name companion Actors (Property Details, Pro Host).

### 2.6 (2026-06-01)

#### Fixed

- Reverted `log: crawlerLog` on CheerioCrawler — passing a custom ERROR-level log to the crawler was silencing Crawlee's internal session management and breaking pagination (page 2 not fetched). Crawler log is now the default again.
- Destructured `log` renamed to `_crawlerLog` in handlers to keep module-level `log` as the single source of truth for user-facing logs.

### 2.5 (2026-06-01)

#### Added

- `failedRequestHandler` in Phase 1 and Phase 2 — logs a clear ERROR for any listing or search page that fails after all retries
- Integration test suite (`test/integration.test.mjs`) — smoke tests on `ATYPICAL_STAY_TYPES` (18 entries, unique keys/tagIds, `resolveStayFilter` correctness); integration test skips gracefully when no proxy is available
- Additional unit tests: `resolveStayFilter` happy path and unknown-type guard

#### Fixed

- Crawlee internal retry WARNs (403/590) no longer pollute the run log — crawler log set to ERROR-only; user-facing progress logs unaffected

### 2.4 (2026-06-01)

#### Fixed

- Pagination now works when Airbnb returns `pageCursors` (array of base64 strings) instead of `nextPageCursor` — unlocks multi-page results (e.g. 31 boats in Amsterdam instead of 18)
- Local runs with `proxyUrls` in input now correctly route requests through the provided proxy

### 1.6 (2026-06-01)

#### Changed

- **Title & description** — now lists all major stay types (castle, treehouse, dome, yurt, igloo, houseboat, barn, island…) instead of showing only 3. Title updated to "18 Verified Categories by City".

### 1.5 (2026-06-01)

#### Changed

- **English-only logs** — all run output, phase banners, and status messages are now in English. Phase labels follow the structured pattern used by other scrapers in the workspace (`=== Phase 1 — Search ===`, `Search results | page N | +M listings found`, `=== Phase 2 done | N listing(s) saved ===`).
- **Proxy removed from UI** — proxy is no longer shown in the Console form. On Apify, residential proxy is used automatically. Advanced users can still override via API (`proxyConfiguration` field).
- **Auto-RESIDENTIAL on Apify** — when no `proxyConfiguration` is provided, the actor now defaults to `RESIDENTIAL` proxy group on the platform instead of raising a warning or using datacenter IPs.
- **input\_schema descriptions** — field descriptions rewritten to be benefit-first (outcome-oriented, no HTTP/proxy jargon).
- **actor.json** — title, description, seoTitle, seoDescription rewritten following the Store listing pattern (`·` clauses, differentiator line, `| Apify` suffix in seoTitle).
- **README** — full rewrite: persona table, hero objection line, API-only parameters table, output sample, local dev section, support contact.
- **Memory reduced** — `defaultRunOptions.memoryMbytes` lowered from 4096 MB to 2048 MB (HTTP-only actor, no browser).

### 1.4.0 (2026-06-01)

- **Phase 1 precision fix** — la collecte d'URLs est maintenant restreinte aux vrais résultats Airbnb (`staysSearch.results.searchResults`). Avant, une récursion profonde ramassait 50-150 IDs parasites (photos, recommandations, etc.) au lieu des ~12 résultats filtrés.
- **Nouveau format JSON Airbnb** — les IDs sont maintenant dans `demandStayListing.id` encodé en base64 (`DemandStayListing:12345`). Supporte les IDs courts (5-9 chiffres, anciennes annonces) et longs (10-22 chiffres).
- **Résultat** : 12 URLs pour 12 résultats affichés sur la page Airbnb (au lieu de 50+), taux de succès Phase 2 proche de 100%.

### 1.2.0 (2026-06-01)

- **Amenities extraction fixed** — WiFi, pool, kitchen, parking, and all amenities now correctly extracted from `data.node.pdpPresentation.amenities` (Airbnb moved the data from AMENITIES\_DEFAULT section to a different path).
- **Simplified UI** — only 3 fields: stay type, location, and proxy. All advanced options removed.
- **Unified location field** — auto-detects city names vs. listing URLs.
- **18 verified categories** — removed `property_type_id`-based categories that returned 0 results (tipi, tent, train, etc.) as they're not supported by the standard Airbnb search API.

### 1.1.0 (2026-05-30)

- **30+ unique stay categories** — added islands, domes, tipis, tents, shipping containers, towers, camper/RV, huts, buses, villas, ranches, eco-lodges, boutique hotels, heritage hotels, lofts, religious buildings, and more.
- **Updated tag IDs** — corrected outdated `kg_and_tags` IDs for treehouse (→ 8188), houseboat (→ 8176), tiny home (→ 8186), yurt (→ 8192), dome (→ 8173), windmill (→ 8043), cave (→ 670), farm stay (→ 8175), barn (→ 8159), boat (→ 1073), earth home (→ 8174). Verified against live Airbnb SEO landing pages (May 2026).
- **Dual filter mechanism** — categories that Airbnb switched to `property_type_id` (tipi, tent, train, lighthouse, bus, villa, ranch, eco-lodge, boutique/heritage hotel, loft, religious building) now use `property_type_id[]` URL parameter automatically. No input change required.
- New dataset field `searchPropertyTypeId` for property-type-based categories.

### 1.0.1 (2026-03-31)

- **City search default:** omit `checkin` / `checkout` from search URLs (category-style browse). Optional **Add check-in / check-out to search URL** or explicit **Check-in** / **Check-out** fields restore dated searches.
- `urlOptionsFromPassInput`: passes with explicit `checkin`+`checkout` override base `_noDates` (fixes multi-pass with dates).

### 1.0.0 (2026-03-31)

- Initial release: fork of Airbnb Property Details Scraper with **city + atypical stay type** input (`kg_and_tags` search).
- Same listing fields as Property Details; extra dataset fields `searchAtypicalStayType`, `searchKgTagId`.
- English input schema (dropdown for unique stay categories).
