# Changelog of Booking.com Scraper - Hotel Prices & Reviews (`logiover/booking-hotels-prices-scraper`) Actor

- **URL**: https://apify.com/logiover/booking-hotels-prices-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/logiover/booking-hotels-prices-scraper.md

## Changelog

### 2026-09-01

- Fleet-wide health check. Verified against this Actor's real run history: 30-day success rate, output row counts, per-field fill rates, and peak memory against the configured memory limit.
- Reviewed for the failure patterns that have cost this fleet runs — unguarded proxy setup, retry loops that can outlast the run's own time budget, and full-page HTML parsing that can exhaust a small container.
- No change to input, output fields or scraping logic.

### 2026-08-11

- Maintenance release: refreshed the build and dependencies.
- Re-verified live execution, non-empty structured output and dataset field/type integrity.
- Reviewed reliability (retries, pagination) and output quality as part of a full-fleet QA pass.

### 2026-08-01

- Completed the August 2026 full health check: verified empty/programmatic default, Console UI default, and two source-informed alternative inputs on Apify.
- Confirmed successful live execution, non-empty structured output, dataset-field/type integrity, and logical sample quality within the 5-minute quality window.

### 2026-07-18

- **Fixed star rating extraction (parser drift).** Booking restructured the star class markup: the `[data-testid="rating-stars"]` wrapper is now a fixed 5-icon template with `aria-hidden`, and the real class is carried by an `aria-label="N out of 5"` on a sibling button. The old aria/icon-count logic returned `null` on every hotel (and would have counted 5 for all). Star rating is now read from the `"N out of 5"` (or legacy `rated N stars`) aria-label, with a filled-icon-count fallback that ignores the empty template icons. Verified against named hotels (e.g. Sofitel Paris 5★, Radisson Blu Dubai 5★, ibis Styles 3★). `starRating` stays `null` only when a property genuinely has no class (or Booking's A/B render omits it).
- **Fixed address extraction.** Booking moved the area/address into `[data-testid="address-link"]` (e.g. "9th arr., Paris", "Camden, London"); the previous `address`/`location` testids returned empty on most cards. The new testid is now tried first (legacy selectors kept as fallbacks), and a stray trailing "Show on map" affordance is stripped. Addresses now populate on results that previously came back blank.
- No output field keys, input parameters, or pricing changed.

### 2026-07-12

- **No input required.** Running with empty input `{}` now returns hotels for a popular default city (Paris) with sensible future dates (check-in ~30 days out, one night). Previously the actor errored when no search was given.
- **Auto-computed future dates.** Default check-in/check-out are generated dynamically each run, so they never expire. Missing dates in `searches` items are backfilled the same way.
- **Friendly inputs.** Added single **Destination / Check-in / Check-out / Adults / Rooms** fields. **Currency** and **Language / Country** are now dropdowns. The multi-search JSON array is now an optional *Advanced* field and no longer mandatory.
- **Dataset schema.** Added per-field titles/descriptions (nullable-safe union types) and surfaced numeric Price / Stars / Score / Reviews columns in the Overview table.
- **Reliability.** Added a ~4-minute time budget so runs always finish cleanly and push what was collected.

### 2026-06-28

- Health check passed — actor verified working end-to-end on Apify platform.
- Changelog refreshed for Store quality compliance.

### 2026-06-20

- Maintenance & reliability pass: re-verified end-to-end against live data and confirmed the Actor completes successfully within the 5-minute quality window on the default input.
- Refreshed the prefilled example input and tuned run defaults for faster, lower-cost runs.
