# Changelog of Kleinanzeigen Scraper 🇩🇪 (new-listing alerts, no login) (`tagadanar/kleinanzeigen-scraper`) Actor

- **URL**: https://apify.com/tagadanar/kleinanzeigen-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/tagadanar/kleinanzeigen-scraper.md

## Changelog

### 2026-09-30

- **Fixed: a search with no matches failed the run** instead of reporting "no
  listings". Kleinanzeigen stopped showing a result count on its zero-result
  page, so the run could no longer prove the search was empty and treated it as
  a block. It now reads the page's own notice ("Es wurden keine Ergebnisse für
  … gefunden.") and finishes successfully with "No listings for "…" —
  Kleinanzeigen's own page says 0 results", quoting that notice. Nothing is
  charged for an empty search beyond the run start.
- A page with no listings and neither a count nor that notice is still reported
  (and fails the run) as a block or a page change, never as an empty search.

### 2026-09-02

- **Fixed: every search returned "no listings"** after Kleinanzeigen redesigned
  its result cards (the `aditem` classes are gone). The parser now reads the
  new cards (title, description, price, location, image, shipping tags, total
  count) and still understands the old markup. Posted date/time are no longer
  shown on the new cards and come back `null`.
- The run now ends with a status message in the Console, and "no listings" is
  only claimed when Kleinanzeigen's own result count says 0; a page with no
  cards and no count is reported (and fails the run) as a block or a markup
  change instead of an empty search.

### 2026-07-12

- Invalid input no longer fails the run. The run now finishes cleanly with a clear explanation in its status message, so a typo or an empty list is easy to spot and fix.
- List inputs now accept datasets piped straight from another scraper: entries
  that are objects are read through their usual key names (url/link,
  query/keyword/title, name/company and similar) instead of being rejected.

### 2026-07-11

- Billing: on paid runs every row is billed before it is written, and a run
  now stops visibly if billing fails instead of continuing unbilled.

### 2026-07-10 / Initial release

- Search kleinanzeigen.de by term, with optional city or region (resolved
  through the site's own location search), radius, top-level category, seller
  type and price band. Results come back newest first.
- Clean records: title, EUR price with the VB negotiable flag and a price type,
  postal code and district, posting time resolved to an ISO date in German
  time, seller type from the PRO badge, shop name for commercial sellers,
  shipping and direct-buy tags, first photo and photo count, promoted flag.
- Monitor mode remembers listings from previous runs (per `monitorName`) and
  returns only new ones, with an optional Slack or webhook digest. Built for
  scheduled runs: a quiet check costs only the start fee.
- No browser, no login, no proxy. Server-rendered pages parsed directly.
- Pay per listing, platform usage included in the price.
