# Changelog of Bazaraki Scraper — Cyprus Classifieds (`logiover/bazaraki-scraper`) Actor

- **URL**: https://apify.com/logiover/bazaraki-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/logiover/bazaraki-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 HTTP 404 / empty results when filtering by city. The district URL slugs were updated to the site's current form (e.g. `lemesos-district-limassol`), so city + keyword + category searches across all six Cyprus districts return listings again.
- No change to output fields or detail-page enrichment.

### 2026-07-12

- Added a **City / District** dropdown (All Cyprus / Nicosia / Limassol / Larnaca / Paphos / Famagusta) so the city filter is a proper select. The multi-city `cities` array is kept for power users; both feed the same task builder.
- Confirmed **empty input `{}` returns data**: with no keyword, category or city the Actor browses all recent listings across Cyprus, bounded by `maxListings` (default 200).
- Added a **4-minute wall-clock budget**: once reached the Actor stops enqueuing, skips remaining detail fetches, pushes what it has collected and exits SUCCEEDED — so the empty-input run always finishes inside the quality window.
- Added a full dataset **`fields` JSON-schema** (title + description per column, nullable-safe union types) so numeric columns (price, coords, views, image count) render as numbers and null values never trip schema validation.
- No output field keys were renamed; price/coords/views already stored as real numbers.

#### 2026-07-06 — Fix: list-card selectors drifted from `advert__…` to `advert-grid__…`

- Bazaraki renamed the inner element classes on search-result cards from `advert__content-*` to `advert-grid__content-*`. The card container (`div.advert-grid[data-id]`) still matched, so the scraper reported the right card count but every list-level field (title, price, location, date, features, images, seller) came back empty.
- Updated the list-card parser to the current `advert-grid__…` selectors (title, price, place, date, feature, header-logo) while keeping the old `advert__…` selectors as fallbacks. Rebuilt image extraction around `.advert-grid__body-image-page[data-src]`.
- The detail-page parser was re-verified against live pages and is unchanged (all `itemprop` / `chars-column` / `announcement__location` selectors still match). Re-tested end-to-end: full listing + detail data (price, coords, category breadcrumbs, images, attributes, seller) populate correctly.

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