ALDI Australia Products Scraper
Pricing
Pay per event
ALDI Australia Products Scraper
Scrape ALDI Australia's product-search catalogue by search term — name, brand, pack size, unit price and per-comparison-unit price, category and image, for every matching item. A price/catalogue reference feed, not a checkout feed.
Pricing
Pay per event
Rating
0.0
(0)
Developer
DevilScrapes
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
What this scrapes
ALDI Australia's public api.aldi.com.au/v3/product-search JSON endpoint — the same catalogue search that powers aldi.com.au, queried by one or more free-text search terms (milk, bread, chocolate, whatever you need). Each matching product becomes one dataset row: SKU, name, brand, pack size, unit price and formatted display price, per-comparison-unit price (e.g. "$2.38 per 100 g") where ALDI publishes one, category names, a resolved product image, and the search term that found it. Rows are deduplicated by SKU, so a product that matches two of your search terms is only billed and emitted once.
This is a catalogue and price-reference feed, not a shopping-cart feed — see Limitations below for why, and what that means for how you should use the data.
Features
- 🛡️ We rotate browser fingerprints (curl-cffi impersonation — Chrome / Firefox / Safari) on every request, so the target sees real-browser TLS, not Python.
- 🔁 We retry with exponential backoff on
408 / 429 / 5xxand network errors, honouringRetry-After. Up to 5 attempts per page before we give up on it. - 🌐 We route through Apify Proxy by default. Pin an exit country with
proxyCountryCodeif you ever need one. - 🔎 We fan out across search terms for you. Give a list of terms and we page through every one.
- 🧱 We dedupe by SKU across every term and page in a run, so overlapping terms never double-count or double-bill.
- 🧊 Pydantic-validated rows — clean, typed, stable field names, ISO-8601 timestamps. One bad page or one malformed product never kills the run.
- 📸 We resolve image URLs for you. ALDI's own asset links ship as unresolved templates — we fill them in, so you never see a raw
{width}/{slug}placeholder. - 💰 You pay only for results that land. No matching products → no per-result charge (only the small
actor-startwarm-up fee).
Use cases
- Price-monitoring and comparison-shopping tools that track ALDI Australia's catalogue pricing over time
- Market research on ALDI's private-label range, pack sizes and per-unit pricing versus competitors
- Category and assortment analysis — what ALDI stocks under a given search term, and how it's priced
- Feeding a grocery-price dataset, dashboard or alert system with fresh ALDI AU catalogue data
- Academic or journalistic research into Australian grocery pricing trends
How to use it
- Open the Actor input form on the Apify Console.
- Add one or more
searchTerms— free-text words likemilk,bread, or a brand name. - (Optional) Set
servicePointif you need a specific ALDI store/region code; the default (G452) is an AU east-coast store. - Tune
maxItemsPerQueryand the run-widemaxResults, then click Start. Results stream into the default dataset as JSON, CSV, Excel, or XML.
{"searchTerms": ["milk", "bread"],"servicePoint": "G452","maxItemsPerQuery": 60,"maxResults": 150,"proxyConfiguration": { "useApifyProxy": true }}
Input
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
searchTerms | string[] | yes | ["milk"] | Free-text search terms. Every term is searched independently. |
servicePoint | string | no | "G452" | ALDI store/region code. |
maxItemsPerQuery | integer | no | 1000 | Cap on products returned per search term (1–3000). |
maxResults | integer | no | 500 | Hard cap on total deduplicated rows across the whole run (1–50000). |
proxyConfiguration | object | no | Apify Proxy | Apify Proxy configuration (datacenter by default). |
proxyCountryCode | string | no | any | Optional two-letter Apify Proxy exit country, e.g. AU. |
Output
One row per deduplicated product:
{"sku": "000000000538441002","name": "Milk Mouse - Milk Chocolate 168g","brandName": "CHOCEUR","urlSlugText": "choceur-milk-mouse-milk-chocolate-168g","notForSale": true,"discontinued": false,"quantityMin": 1,"quantityMax": 99,"quantityInterval": 1,"quantityDefault": 1,"quantityUnit": "ea","sellingSize": "168 g","priceAmountCents": 399,"priceDisplay": "$3.99","comparisonPriceCents": 238,"comparisonPriceDisplay": "$2.38 per 100 g","currencyCode": "AUD","categories": ["Pantry", "Confectionery"],"imageUrl": "https://dm.apac.cms.aldi.cx/is/image/aldiprodapac/product/jpg/scaleWidth/600/d0097d9d-25d6-4cd1-b1dd-1ea5f7a154ba/choceur-milk-mouse-milk-chocolate-168g.jpg","searchTerm": "milk","scrapedAt": "2026-10-02T00:00:00+00:00"}
brandName, sellingSize, comparisonPriceCents, comparisonPriceDisplay and imageUrl are null when ALDI doesn't publish that field for a given product (for example, some non-grocery items have no per-unit comparison price).
Pricing
Pay-Per-Event (PPE) — you pay only for what you use:
| Event | Price (USD) | When |
|---|---|---|
actor-start | $0.20 | Once per run, at boot |
result-emitted | $0.003 | Per deduplicated product row written |
At scale that's $3.20 per 1,000 results ($0.20 start fee + 1,000 × $0.003).
Limitations
- This is a catalogue/price-reference feed, not an order or checkout feed. ALDI Australia does not sell most items online — its retail model is in-store, "walk-in" only for the vast majority of the catalogue. Every row therefore carries
notForSale: true, passed through exactly as ALDI's own API reports it. We never filter, hide or editorialize this field: if you need a feed that implies you can add these products to a cart, this is not that feed — use it for prices, assortment and catalogue tracking, not for building a storefront. - ALDI pages search results 30 at a time; a search term that matches hundreds of products will take proportionally more requests (and
maxItemsPerQuery/maxResultsstill apply). servicePointselects one store/region at a time — this version does not sweep multiple stores in a single run.- Search terms work best as plain product or brand words in English (ALDI Australia's catalogue is English-only).
- A search term with no matching products finishes successfully with zero rows for that term — this is a legitimate empty result, not an error.
comparisonPriceCents/comparisonPriceDisplay(the per-100g/per-unit figure) is only present when ALDI itself publishes one.
FAQ
Do I need an ALDI account or API key?
No. Add your search terms and start the run — ALDI's product search is public.
Why is notForSale always true?
Because ALDI Australia's online presence is a catalogue/price reference, not a checkout — almost nothing in this feed is purchasable through the API itself. This is expected behaviour, not a bug; see Limitations above.
Why did I get fewer rows than maxResults?
Either every search term ran out of matching products (a real empty or exhausted catalogue), or maxItemsPerQuery capped an individual term. Add more search terms for broader coverage.
Can I use this to check real-time stock or buy products?
No — see Limitations. This feed reports catalogue pricing and attributes, not live stock or a purchase path.
What does servicePoint do?
It selects the ALDI store/region whose catalogue and pricing you search against. The default, G452, is an AU east-coast store; different regions can carry different ranges or prices.
Your feedback
Found a bug or have a feature request? Let us know — we read every message. Open an issue on the Actor's Apify Store page or contact the Devil Scrapes team at apify.com/DevilScrapes.