# Changelog of Airbnb Listing Details & Availability Calendar (`myth84/airbnb-listing-details-scraper`) Actor

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

### Changelog

History of `airbnb-listing-details-scraper` (folder `actors/airbnb-listing-details`). Versions are the Apify build numbers.

#### Unreleased (all-in price columns: `taxesIncluded` and `priceTotalAllIn`)

- Brief `docs/cloud-tasks/2026-10-23_travel-prices-all-in.md` (2026-10-23): rows are **`travel-listing/1.6`** (the detail schema on top of the search schema `travel-listing/1.5`), two columns after `taxesAndFees`. Listing pages carry no price, so both are always `null` here, like every price column; no code change besides the version tag.
- Dataset schema: both columns documented (always `null`, filled by the Airbnb Listings Scraper); no view change, the *Overview* view has no price column. README: price table and FAQ *Why are the prices empty?* (which scraper fills `priceTotalAllIn`), the strengths worth knowing when switching (hard `maxResults` cap never charged beyond, calendar charged only on request), *More scrapers* pointing at `priceTotalAllIn`.

#### Unreleased (quality score: input documented for AI agents)

- Brief `docs/cloud-tasks/2026-10-20_studio-quality-score-insights.md` (2026-10-21): the input form passes the shared checks of `runInputQualityChecks` and the Store texts those of `runSearchTextChecks`.
- **Descriptions rewritten** (what the field does, an example of the format, the default and its reason): `checkIn`, `checkOut`, `adults`, `children`, `infants`, `pets`, `includeCalendar`, `calendarMonths`, `maxResults`, `currency` (sent with the requests and recorded in the `currency` column; it no longer claims to be written into the row's `url`, which carries dates and adults only), `locale`, `domain`, `proxyConfiguration`, `maxRequests`, `delayMs`, `debugStoreHtml`.
- **`maxResults` prefilled with 50** (default unchanged, 100): the prefilled input that Apify's daily test runs (the three prefilled listings, no calendar) is now the input of our daily check plus the calendar; 50 rather than 3 so that a form user who pastes their own list is not cut at three listings.
- **`inputs/daily-check.json`** = the prefilled form (three Lisbon listings, `maxResults` 50, was 3: same three rows) plus `includeCalendar: true` and `calendarMonths: 1` (`dailyCheckExtras` of the store test): the calendar is in the title, off by default, and a checkbox cannot be prefilled, so the daily check keeps watching it on top of what Apify's test runs. The keys equal to the defaults are dropped (`adults`, `locale`, `domain`, `delayMs`, `proxyConfiguration`) and `currency` goes from EUR to the default USD (listing pages carry no price). The live daily-check task follows when the pilot re-sends it.
- **Store texts**: `store.json › searchSynonyms` lists "Airbnb scraper", "Airbnb availability calendar", "vacation rentals" and "house rules", all in the README head the Store search indexes. README input table: `children` (counted in `guests`), `maxResults` (prefill), `currency`.
- No code change: rows, logs and charges are identical.

#### Unreleased (README visibility)

- **README first screen and links** (brief `docs/cloud-tasks/2026-10-20_studio-readme-visibility.md`, 2026-10-20). The Store search indexes only the first ~3,000 README characters, so they now hold: an opening sentence with the phrase agents search and its synonyms, a "No login, no cookies, no personal data" line, the Free-plan price in figures in *How much* ($2.20 per 1,000 listings; Apify's $5 monthly credit covers about 2,272), computed from `pricing/2026-10-19_pay-per-event.autopilot.json` (Free tier of the primary event, one `apify-actor-start` event deducted), and a real output snippet (12 key columns of the README example row). Further down: *Use it from your AI assistant* (MCP URL `https://mcp.apify.com?tools=myth84/<name>` and a ready-to-copy prompt with a minimal input), *Alternatives and switching* (official API, home-made scraper, input-name mapping table, no competitor named), *More scrapers by Flatrow Data Studio* (Store links to the other Actors of the studio) with an invitation to rate the Actor (no counterpart), and the non-affiliation line at the very bottom. The cost section and the MCP cost bullet quote the same figures; the line 1 heading is unchanged. `store.json` now names its studio (`travel`), read by the link check. The credit figure counts listings without the optional calendar. Checked by `runStoreChecks` (`readmeVisibility`): keyword in the opening prose, snippet equal to the example row and within 3,000 characters, figures equal to the pricing file in force (a new grid fails the test until the README follows), MCP block with a valid input, links to existing Actors of the same studio only, no `fpr=`. No code change: rows, logs and charges are identical.

#### Unreleased

- **Output schema `travel-listing/1.3`** (additive, brief `docs/cloud-tasks/2026-10-20_travel-extend-monitor.md`, 2026-10-20): the search schema of the travel studio gained the price-monitoring block (`changeType`, `previousPrice`, `priceDelta`, `priceDeltaPercent`) and took the tag `travel-listing/1.2`; the detail schema follows as `1.3` so that one tag means one column set. The four columns sit after `scrapedAt`, before the detail columns, and are always `null` for this Actor (no monitoring mode). Dataset schema regenerated, README example and column table updated; no other change in the rows.
- **Store texts** (brief `docs/cloud-tasks/2026-10-20_studio-promote-store-texts.md`, 2026-10-20): README opens with what you get / for whom / how much, shows the real input of the validation run, a pricing table that points to the Pricing tab (no figure in the text), a *For AI agents (MCP)* section with a minimal input, the key output fields, the cost per 1,000 results and the typical time; FAQ kept to 8–10 questions; no proxy or anti-bot detail left in the texts visible on the Store. Tests on the Store lengths (`seoTitle` ≤ 60, `seoDescription` ≤ 155, `description` ≤ 300), the README structure and the forbidden mentions. No code change.

#### 0.1 — 2026-10-19

- First version, written offline on the fixtures captured by the probe on 2026-10-19 (cloud task n°7, `docs/cloud-tasks/2026-10-19_airbnb-listing-details-build.md`): one HTML request per listing (`/rooms/<id>`, embedded `StaysPdpSections` node) giving description, highlights, amenities by category, house rules (check-in / check-out, pets, smoking, events, quiet hours), safety features, sleeping arrangements, six category ratings, review count, photos, coordinates and neighbourhood; optional availability calendar (`PdpAvailabilityCalendar`, 1–12 months in one request, API key read from the page) with summary columns and the day-by-day list.
- Output schema `travel-listing/1.2`: every `travel-listing/1.1` column first, then the detail and calendar columns. No personal data: host, co-hosts, "hosted by" texts and reviews are never read; every row goes through the privacy filter.
- Pay-per-event: `result` per listing, `calendar` per listing-month (charged before the row is pushed; months that cannot be charged are dropped from the row). Explicit failure on empty output.
- Not included (brief § 3): the price of the stay, which Airbnb loads through a booking query whose variables were not captured; price columns are null and documented as such.
