ALDI Australia Products Scraper avatar

ALDI Australia Products Scraper

Pricing

Pay per event

Go to Apify Store
ALDI Australia Products Scraper

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

DevilScrapes

Maintained by Community

Actor 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 / 5xx and network errors, honouring Retry-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 proxyCountryCode if 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-start warm-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

  1. Open the Actor input form on the Apify Console.
  2. Add one or more searchTerms — free-text words like milk, bread, or a brand name.
  3. (Optional) Set servicePoint if you need a specific ALDI store/region code; the default (G452) is an AU east-coast store.
  4. Tune maxItemsPerQuery and the run-wide maxResults, 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

FieldTypeRequiredDefaultDescription
searchTermsstring[]yes["milk"]Free-text search terms. Every term is searched independently.
servicePointstringno"G452"ALDI store/region code.
maxItemsPerQueryintegerno1000Cap on products returned per search term (1–3000).
maxResultsintegerno500Hard cap on total deduplicated rows across the whole run (1–50000).
proxyConfigurationobjectnoApify ProxyApify Proxy configuration (datacenter by default).
proxyCountryCodestringnoanyOptional 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:

EventPrice (USD)When
actor-start$0.20Once per run, at boot
result-emitted$0.003Per 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/maxResults still apply).
  • servicePoint selects 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.