# Changelog of Airbnb Property Details · Listing Intel by City (`corent1robert/airbnb-property-details-scraper`) Actor

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

## Changelog

All notable changes to this project are documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).

### \[2.13] - 2026-09-07

#### Added

- **Actor Standby:** HTTP lookup `GET`/`POST /lookup` — **one** Airbnb `/rooms/` listing URL. Console **Start** still writes the dataset as before (city search or bulk URLs).
- OpenAPI spec for the Standby tab (`web_server_openapi.json`).

### \[2.12] - 2026-09-01

#### Changed

- End-of-run log: next step to Airbnb Pro Host (host emails).

### \[2.11] - 2026-08-24

#### Changed

- Default memory 2048 MB (was 4096).
- Store suite: README and listing copy name companion Actors (Pro Host, Calendar). Dropped “Store does not cross-sell”.
- Run log: this Actor does not collect host emails — use Airbnb Pro Host.

### \[2.10] - 2026-08-19

#### Changed

- Store description: no email (300-char limit). Categories: `TRAVEL`, `REAL_ESTATE`.
- README **Also available** (Airbnb suite) at the top.

### \[2.9] - 2026-08-19

#### Changed

- **Free plan cap:** 20 listings per run (`APIFY_USER_IS_PAYING`). Status: `Free plan: 20 listings. Upgrade for bulk.`
- Anonymous Try-without-account runs disabled (`isAnonymouslyRunnable: false`).

### \[2.8] - 2026-08-18

#### Added

- **12 published tasks** (Paris, Amsterdam, Lisbon, Berlin, Rome, London amenities, Nice, URL market-research view).

### \[2.7] - 2026-08-17

#### Added

- **4 published tasks** + **Market research** dataset view.
- README Examples table.

#### Changed

- Store title: `Airbnb Property Details · Listing Intel by City`.
- Run logs: no emoji on error lines.

### \[2.6] - 2026-08-17

#### Changed

- **Store positioning** — companion to Airbnb Pro Host / Portfolio (listing intelligence, not a standalone lead-gen listing). README cluster table.

### \[2.2.3] - 2026-03-29

#### Changed

- **`maxPages`**: default is now **`0`** (unlimited search result pages per city, aligned with [Airbnb Professional Host Scraper](../airbnb-professional-host-scraper/) — pagination continues while there is a next page / cursor). Set a positive integer only to cap runs (e.g. tests). **Cheerio** `maxRequestsPerCrawl` 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](../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`](.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.
- **Pure helpers** [`src/inputResolve.js`](src/inputResolve.js) and **Phase 1 module** [`src/phase1CollectUrls.js`](src/phase1CollectUrls.js); **`npm run test:unit`** for input URL / mode logic.
- **[`.actor/output_schema.json`](.actor/output_schema.json)** with dataset links.

#### Changed

- **[`.actor/actor.json`](.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

- **Monolithic** `input` / `storages.dataset` blobs from `actor.json` (replaced by file references).
- **Form field `listingUrl`** — use a single entry in `listingUrls` instead. **Legacy** `listingUrl` 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.

### \[1.0.0] - earlier

- Initial public actor: Cheerio-based search + listing extraction, inline Apify schemas.
