# Changelog of ALDI Scraper — Grocery Prices, 14 Countries (`blackfalcondata/aldi-scraper`) Actor

- **URL**: https://apify.com/blackfalcondata/aldi-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/blackfalcondata/aldi-scraper.md

## Changelog

All notable changes to this Actor.

### \[0.2.0] - 2026-08-03

#### Added

- **Four more countries: the Netherlands, Belgium, Spain and Poland**, plus the
  northern half of Germany. ALDI is two separate companies -- ALDI NORD and
  ALDI SUED -- with separate assortments, separate prices and completely
  different storefront software. Both are now covered by this one Actor, so
  `countries` takes thirteen codes and a run reaches about 30,000 products.
- **Germany returns both companies.** ALDI NORD serves the north and ALDI SUED
  the south, with different ranges and different prices, so picking `DE` now
  returns both and every row is labelled with the `banner` that sells it.
- **`banners`** -- an optional filter, mostly useful for narrowing Germany to
  one of its two halves.
- **`hasPrice`** on every row. The northern markets do not advertise a price for
  every article (Poland publishes one for about one article in thirty), so an
  absent price is now a stated fact rather than an empty cell to guess at.
- **`wasPrice`** as a number, on every market. The southern storefronts publish
  the struck-through price only as rendered text; it is parsed and cross-checked
  against the retailer's own stated saving percentage.
- **`deposit` / `hasDeposit`** as numbers. The deposit is charged on top of the
  shelf price, so a basket total built from `price` alone was short by it.
- **`upcomingOffers`** -- the northern index publishes promotion prices before
  they start, so a run can read next week's price today.
- **`categoryPath`** -- the breadcrumb as plain strings, on every market.
- **`unitPriceScale`, `promoLabel`, `regularPriceNote`, `offerValidFrom`,
  `offerValidUntil`, `longDescription`** on the northern markets.

#### Changed

- `deposit` is now null rather than `0` where a market charges none, so "which
  articles carry a deposit" is answerable.
- Filters behave per platform, and say so. Categories and brands apply
  everywhere; `themes` and `sortBy` exist only on the southern storefronts, and
  a run that uses them against a northern market now reports that rather than
  quietly returning the market unfiltered.

#### Notes

- Existing runs keep working unchanged: `countries: ["GB"]` returns exactly what
  it did before. The one behaviour change is `DE`, which now returns the German
  assortments of both companies -- roughly twice the rows it used to.
- Which fields are populated varies by market, because the two companies do not
  publish the same things. The documentation now states this per market, so a
  field that is empty in one country is identified as something the storefront
  does not publish rather than something the run missed.

### \[0.1.0] — 2026-08-02

First release.

#### Added

- Products and prices from **nine ALDI SÜD storefronts** in one run: United
  Kingdom, Ireland, Germany, Austria, Switzerland, Italy, Slovenia, Hungary and
  Australia. Every row is tagged with its market, retail banner and currency.
- Shelf price, per-unit comparison price, struck-through was-price, savings,
  pack size and container deposit, in the local currency **and** converted to
  USD, EUR and GBP so markets compare directly.
- Category breadcrumb, brand, product image gallery and canonical product URL.
- Optional detail enrichment: description, ingredients, storage instructions,
  nutrition table, on-pack labels and age restriction.
- Filters for category, brand and theme, plus sorting by price or name. A
  filtered run only collects the matching products, so it finishes faster and
  costs less than scraping the whole catalogue.
- Upcoming promotions: each market publishes dated promotion pages, including
  dates in the future, so a run can return prices before they reach the shelf.
- Incremental mode with NEW / UPDATED / UNCHANGED classification and
  price-change tracking across scheduled runs.
