# Changelog of Amazon Product Scraper — ASIN, URL or Keyword (`leanfetch/amazon-product-scraper`) Actor

- **URL**: https://apify.com/leanfetch/amazon-product-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/leanfetch/amazon-product-scraper.md

## Changelog

### 0.8 — Dataset-Schema repariert

- Behoben: Die in 0.7 ergaenzten Feldbeschreibungen haben jedes Ergebnis
  abgelehnt. Apify validiert Schreibvorgaenge gegen das Dataset-Schema, und
  `"type": "number"` erlaubt kein `null` — jedes Produkt hat aber mindestens
  ein leeres Feld. Alle Felder sind jetzt nullable.
- Abgelehnte Schreibvorgaenge werden nicht mehr wiederholt. Ein solcher Fehler
  ist dauerhaft; die Wiederholungen haben nur Proxy-Traffic verbrannt.
- Wiederholungen von 8 auf 5 gesenkt: drei billige Versuche, zwei teure.

### 0.7 — bereit zur Veroeffentlichung

- Output-Schema ergaenzt (`.actor/output_schema.json`). Apify verlangt es fuer
  die Veroeffentlichung im Store; es beschreibt, wo die Ergebnisse liegen.
- Dataset-Schema um Feldbeschreibungen erweitert, damit Store-Besucher und
  KI-Agenten die Ausgabe ohne Ausprobieren verstehen.

### 0.6 — erst billig probieren, dann bezahlen

- Eskalation auf Residential erst nach mehreren Versuchen auf billigen
  Datacenter-IPs (einstellbar ueber `datacenterAttempts`, Standard 3). Vorher
  wurde beim allerersten Fehlschlag eskaliert, wodurch 5 von 6 Produkten den
  teuren Weg nahmen.
- Gesperrte Sessions werden sofort verworfen, damit jeder neue Versuch auch
  wirklich eine neue IP bekommt.
- Mehr Wiederholungen (8 statt 5), weil die ersten davon jetzt fast nichts
  kosten.

### 0.5 — Sperren werden endlich gesehen

- Behoben: Amazon antwortet auf eine Sperre mit HTTP 503 und echtem HTML.
  Crawlee warf darauf, bevor unser Handler die Seite sah — die Sperre wurde
  weder gezaehlt noch auf einen besseren Proxy eskaliert. Jetzt werden 403,
  404, 429 und 503 durchgereicht und selbst bewertet.
- Eskalation auf Residential greift bei jedem Fehlschlag, nicht mehr nur bei
  drei zufaellig gewaehlten Fehlertexten.
- Traffic-Report weist aus, dass er unkomprimiertes HTML misst.

### 0.4 — 404 ist kein Block

- Behoben: Ein nicht mehr existierendes Produkt (HTTP 404) wurde als Sperre
  gewertet, fünfmal wiederholt und als "Blocked (captcha)" gemeldet. Jetzt wird
  es sofort als `resultType: "not_found"` ausgegeben, ohne Wiederholungen.
- Amazons aktuelle Bot-Schranke ("Click the button below to continue shopping")
  wird namentlich erkannt statt nur über die Seitenlänge.
- Startzeile mit Codeversion und Build-ID, damit im Log sichtbar ist, welcher
  Stand tatsächlich läuft.

### 0.3 — Proxys werden jetzt wirklich benutzt

- Behoben: Die Zugriffsprüfung rief `newUrl('probe-session')` auf. Ein Bindestrich
  ist in Apify-Session-IDs nicht erlaubt, die Prüfung schlug deshalb immer fehl
  und der Actor lief ganz ohne Proxy — direkt von der Plattform-IP aus.
- Keine Eskalation auf Residential mehr, wenn gar kein Residential-Zugang da ist.
- Traffic ohne Proxy wird separat gezählt und als Warnung ausgewiesen, damit ein
  Lauf ohne Proxy nicht mehr wie ein normaler Lauf aussieht.

### 0.2 — Proxy-Fix

- Behoben: Der Actor stürzte beim Start ab, weil er eine Proxy-Gruppe namens
  `DATACENTER` anforderte. Die gibt es bei Apify nicht — Datacenter-Proxys sind
  die Voreinstellung, also `createProxyConfiguration()` ohne Gruppenangabe.
- Fehlende Proxy-Zugänge führen nicht mehr zum Absturz: Der Actor probiert
  Ländertargeting, dann ohne, und läuft notfalls ohne Proxy weiter — mit Warnung.
- Abrechnung ohne eingerichtete Preise bricht den Lauf nicht mehr ab. Testläufe
  vor der Monetarisierung funktionieren jetzt.

### 0.1 — first release

- ASIN, product URL and keyword input
- 21 marketplaces, locale-aware price parsing
- Best Sellers Rank in English, German, French, Spanish and Italian
- Datacenter-first proxy strategy with automatic residential escalation
- Captcha and block detection — blocked pages are never billed
- Per-run traffic and cost report in `RUN_STATS`
