# Changelog of PropertyFinder Scraper — Listings, Prices, Agent Leads (`logiover/propertyfinder-scraper`) Actor

- **URL**: https://apify.com/logiover/propertyfinder-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/logiover/propertyfinder-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 a silent-empty failure: when Apify Residential proxy was unavailable and the site blocked the datacenter fallback, all retries were exhausted and the run finished SUCCEEDED with 0 listings, hiding the block. The actor now tracks whether any page was ever fetched and, if zero listings were scraped because of a block/proxy-exhaustion, it fails loudly with an actionable message ("propertyfinder.ae blocked all requests — ensure Apify RESIDENTIAL proxy is available") instead of a misleading empty success. A genuinely-empty-but-fetched search still exits successfully.
- Proxy sessions are now rotated per retry attempt (fresh IP each try), and `proxyConfiguration.newUrl()` availability errors are handled gracefully instead of crashing. Residential remains the default and recommended proxy.

### 2026-07-12

- All inputs are now OPTIONAL — running with empty input `{}` returns broad recent listings (defaults to Dubai / UAE residential for sale, newest first).
- Added user-friendly dropdowns: **Country / site** (UAE, Qatar, Bahrain, Saudi, Egypt, Lebanon), **Deal type** (Residential/Commercial × Buy/Rent), **Property type** (Apartment, Villa, Townhouse, Duplex, Penthouse, Full Floor, Whole Building, Land) and **Sort by** (recommended / newest / price asc / price desc). When no Search URL is supplied, these build the search automatically. Pasting Search URLs still works and overrides them.
- Numeric fields (price, bedrooms, bathrooms, size, lat/lon, images count) are now always stored as real numbers.
- Added a ~4-minute pagination time budget: long runs push what they collected and exit successfully.
- Added a dataset `fields` schema (nullable-safe) with per-field titles/descriptions; output keys unchanged.

### 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.
