# Changelog of ImmoScout24 Scraper – Germany Real Estate (`ninhothedev/immoscout24-scraper`) Actor

- **URL**: https://apify.com/ninhothedev/immoscout24-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/ninhothedev/immoscout24-scraper.md

## Unreleased quality update

- Add a validated German searchUrl entry point with explicit precedence over form filters and a global unique maxItems cap.
- Correct the ignored source pricefrom/priceto parameters to the source-verified price range parameter.
- Keep existing output field names; add scraped\_at and detail\_status, dataset schema and direct JSON/CSV/summary outputs.
- Fix detail parsing: living area no longer overwritten by usable area; bedroom/bathroom counts no longer overwrite rooms; floor parsing extracts the floor rather than concatenating all numbers. Current description/title selectors are supported.
- Actually execute requested detail enrichment. Report failed detail attempts while retaining valid search records.
- Preserve floor zero, leave unknown boolean/commission fields unknown, and do not treat the warm-water boolean as energy consumption.
- Exclude similar-property recommendations, deduplicate IDs before details/billing, validate source pagination, and fail unknown/blocked pages instead of reporting empty success.
- Respect synthetic-event budget before source requests; store each result immediately, retain partial results on failure, skip already delivered IDs on resurrection. No pricing setting or extra event is changed.
- Bound HTTP retries, avoid blocking the event loop, launch the browser only for fallback, and pin dependencies with Docker installation of the matching Chromium build.
- Replace unsupported ranking, DACH, timing, access and cookie-persistence promises with the actual supported contract and live pricing.

Compatibility: existing city/type/range options and maxPages default remain. API maxItems defaults to 2000 so historical page-based requests retain their scope; Console prefills only five items/one page. Invalid previously coerced values and advertised-but-unwired advanced fields fail explicitly. Use searchUrl for advanced website filters. Optional detail failures are identified per row. No full-field coverage or runtime SLA is promised.
