# Changelog of Expedia Hotel Search Scraper (`scrapeai/expedia-search-scraper`) Actor

- **URL**: https://apify.com/scrapeai/expedia-search-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/scrapeai/expedia-search-scraper.md

## Changelog

All notable changes to the Expedia Hotel Search Scraper are documented here.

### \[1.0.0] - 2025-05-22

#### Added

- Initial production release of the Expedia Hotel Search Scraper.
- `PlaywrightCrawler` using real Chrome binary (`channel: 'chrome'`) for Cloudflare JS challenge bypass.
- Modular project structure following Brave Apify actor pattern:
  - `src/main.js` — entry point with input validation, proxy setup, fingerprint generation, and crawler init.
  - `src/routes.js` — Crawlee router factory.
  - `src/routes/handlers.js` — page handler with multi-page pagination via `paging.startIndex`.
  - `src/extractors/search-results.js` — dual extraction: `__NEXT_DATA__` JSON first, DOM fallback second.
  - `src/extractors/selectors.js` — `data-stid`-based CSS selectors for Expedia Group platform.
  - `src/filters/index.js` — ID-based and name-based deduplication.
  - `src/schema/input.js` — input validation (destination, dates, adults, rooms, sortBy, maxItems).
  - `src/utils/index.js` — `buildSearchUrl`, `isBlocked`, sort mapping utilities.
  - `src/errors/` — `ScraperError`, `ErrorTypes`, `ErrorHandler`.
- `.actor/actor.json`, `input_schema.json`, `dataset_schema.json` for Apify platform compatibility.
- `validate-datasets.js` for local dataset output validation.
- `Dockerfile` using `apify/actor-node-playwright-chrome:22-1.54.1`.
- `README.md` with full Apify usage guide.
- `storage/key_value_stores/default/INPUT.json` with example input.
