All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog ,
and this project adheres to Semantic Versioning .
Initial release of Booking.com Reviews Scraper.
GraphQL-based review extraction via /dml/graphql endpoint.
Automatic fallback to reviewlist.html HTML parsing when GraphQL fails.
Multi-language filtering (12 languages + "all").
Review score filtering (min/max on 0–10 scale).
Sort options: newest, oldest, highest score, lowest score, most relevant.
Reviewer info toggle (includeReviewerInfo ) for privacy compliance.
Hotel metadata extraction from JSON-LD structured data.
CSRF token extraction with multiple fallback patterns.
Hotel ID extraction with 5 regex patterns for robustness.
Residential proxy support via Apify ProxyConfiguration.
User-Agent rotation (Chrome, Safari, Firefox, Edge).
Random delay (1–3s) between requests.
Exponential backoff retry (up to 3 attempts) on 429/5xx responses.
Concurrent processing of up to 3 hotels via asyncio.Semaphore.
URL deduplication to prevent redundant requests.
Per-hotel error isolation (one failure does not stop other hotels).
Pydantic v2 models for input validation and output serialization.
100 unit tests with 72% code coverage.