# Changelog of Google Hotels Scraper: OTA Prices & Calendar (`aleksandrbooking/google-hotels-scraper`) Actor

- **URL**: https://apify.com/aleksandrbooking/google-hotels-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/aleksandrbooking/google-hotels-scraper.md

## Changelog

### 0.3 (12 October 2026)

- A price calendar (a run with more than one check-in date) is charged one `hotel-date` event per
  row, $0.0012 on the free plan and $0.0008 on Gold, instead of `hotel` at $0.0045 and $0.0027: the
  level of the Google Hotels Price Tracker for the same row. A run of one stay is charged as before.
  The run charges `hotel-date` only when the pricing it was given lists it, and `hotel` otherwise.

### 0.2 (11 October 2026)

- A price calendar: `scanDays` check-in dates, `scanStep` days apart, each a stay of `nights`
  nights, one row per hotel and date. The `HOTELS` record gives each hotel's dates priced and its
  cheapest date. At most 20,000 rows a run.
- A calendar needs every hotel's page, so the booking sites' prices are on for it.
- Rate parity on every row: `officialPrice`, `officialUndercutBy` (booking sites at least 1% below the
  hotel's own site, biggest gap first) and `parityStatus`.
- **Track price changes**: the run remembers the prices it saw in a store of the account and the
  next run of the same kind of stay gives `previousPrice`, `priceChange` and `priceChangePercent` on
  every row and a `PRICE_CHANGES` record with the moves, biggest drops first. Off by default.

### 0.1 (11 October 2026)

First build.

- Hotels by search text (`searchQueries`) and by name or Google Hotels link (`hotels`); one row per
  hotel with its details and the price on every booking site Google lists.
- The stay is sent to Google the way the page sends it, and every answer is checked for the
  currency, dates and guests that were asked for.
- Reads only `/travel/hotels/` pages, after reading Google's robots.txt; never opens the redirect
  links.
- A hotel with fewer than twelve offers is read again and the offers are merged
  (`offerPasses`, two by default).
- A hotel with no price for the stay is delivered with `available: false` and is not charged.
