Quick answer
The ALDI Australia Products Scraper pulls ALDI Australia's product catalogue by search term into JSON, CSV or Excel: SKU, name, brand, pack size, unit price in integer cents, the per-100 g or per-unit comparison price, categories and a working image URL. Give it milk, bread or a brand name and it pages through every match, deduplicated by SKU. One thing surprises everyone the first time: every row says notForSale: true, and that is correct. ALDI Australia sells almost nothing online. This is a price and assortment feed, not a shopping cart. Pricing is pay-per-result, $0.20 per run plus $0.003 per product, $3.20 per 1,000 products.
Why is every ALDI product "not for sale"?
Because ALDI Australia is a walk-in retailer. The catalogue on aldi.com.au shows prices and pack sizes, but for the vast majority of items there is no checkout behind it, and ALDI's own product data says so with a notForSale flag. We pass that flag through exactly as ALDI reports it. We never filter it, drop it or rewrite it.
That matters more than it looks. A scraper that silently removed "not for sale" items would return an almost empty dataset. One that dropped the field would let you build a storefront that implies people can buy things they can't. Keeping it verbatim keeps your price-tracking honest.
ALDI Australia's catalogue is a price reference, not a store: nearly every product is flagged not-for-sale online, and the flag is the truth, not a bug.
What else is awkward about ALDI's catalogue data?
-
Image links arrive as templates. The asset URL ALDI ships contains literal
{width}and{slug}placeholders. Use it as-is and every image 404s. We fill both in, soimageUrlopens a real picture. -
Prices are in cents.
priceAmountCents: 399is $3.99. We keep the integer for maths and ALDI's ownpriceDisplaystring for humans, with no float rounding drift. -
The comparison price is optional. "$2.38 per 100 g" exists only where ALDI publishes one. We return
nullrather than computing a figure ALDI never stated. -
Search terms overlap. "milk" and "chocolate" both find milk chocolate. We dedupe on
skuacross every term and page, so one product is emitted and billed once. - Results page 30 at a time. We walk the offsets until ALDI's own total count is reached or your cap is hit.
What the Actor gives you
One row per product, 21 fields: sku, name, brandName, urlSlugText, notForSale, discontinued, quantityMin, quantityMax, quantityInterval, quantityDefault, quantityUnit, sellingSize, priceAmountCents, priceDisplay, comparisonPriceCents, comparisonPriceDisplay, currencyCode, categories, imageUrl, searchTerm and scrapedAt.
{
"sku": "000000000538441002",
"name": "Milk Mouse - Milk Chocolate 168g",
"brandName": "CHOCEUR",
"notForSale": true,
"discontinued": false,
"sellingSize": "168 g",
"priceAmountCents": 399,
"priceDisplay": "$3.99",
"comparisonPriceCents": 238,
"comparisonPriceDisplay": "$2.38 per 100 g",
"currencyCode": "AUD",
"categories": ["Pantry", "Confectionery"],
"searchTerm": "milk",
"scrapedAt": "2026-10-02T00:00:00+00:00"
}
Input: searchTerms (one or more), servicePoint (the ALDI store or region code, default G452 on the east coast), maxItemsPerQuery up to 3,000 and a run-wide maxResults up to 50,000.
Honest limitations 🚧
Catalogue prices and attributes only: no live stock, no specials-week history, no purchase path. One servicePoint per run, so regional price comparisons need one run per region. The catalogue is English-only, so plain product or brand words work best. A term with no matches is a successful run that costs only the start fee.
FAQ
Do I need an ALDI account or API key?
No. The Actor reads ALDI Australia's public product search.
What about blocks and rate limits?
That's our job. We rotate real-browser TLS fingerprints (Chrome, Firefox, Safari) through curl-cffi, route through Apify Proxy, and retry with exponential backoff on 408, 429 and 5xx, up to 5 attempts per page. One bad page or malformed product never kills the run.
Can I track ALDI prices over time?
Yes. Schedule the same search terms daily and diff priceAmountCents per sku.
How does pricing work?
$0.20 per run plus $0.003 per product row: $3.20 per 1,000 products.
→ ALDI Australia Products Scraper on Apify
Built by Devil Scrapes. We handle the fingerprints, the proxies, the retries and the template URLs. We do the dirty work so your dataset stays clean. 😈
Top comments (0)