ALDI AU Scraper - Groceries, Special Buys & Prices avatar

ALDI AU Scraper - Groceries, Special Buys & Prices

Pricing

from $1.00 / 1,000 product results

Go to Apify Store
ALDI AU Scraper - Groceries, Special Buys & Prices

ALDI AU Scraper - Groceries, Special Buys & Prices

Scrape ALDI Australia (aldi.com.au) products: name, brand, price, was-price, savings, unit price, size, category, images, availability and Special Buys on-sale date, plus full detail (ingredients, allergens, nutrition). Search by keyword or category, filter by brand/theme, or paste any ALDI URL.

Pricing

from $1.00 / 1,000 product results

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

4 hours ago

Last modified

Share

ALDI Australia Scraper

Scrape the ALDI Australia catalogue - groceries, weekly ranges, and Special Buys - with prices and full product detail. Pick a promotional range (Special Buys, Lower Prices, Super Savers) with one input, search by keyword or category, filter by brand and theme, or paste any ALDI product, category, or search link. Every record carries the product name, canonical title, brand, price, unit (comparison) price, numeric was-price with savings amount and percent when a product is on offer, selling size, category and full category path, image gallery, availability, and Special Buys on-sale date. Turn on detail enrichment for the full description, ingredients, allergens, nutritional claims, storage and usage instructions, and country of origin.

Why this scraper

  • Rich product records: 45+ fields per catalogue item, more with detail enrichment
  • Specials / offers picker: select the Special Buys (Limited Time Only), Lower Prices, or Super Savers range directly in search mode, or paste a specials-listing URL in url mode
  • Four ways to collect: pick a specials range, search by keyword, list a category, or paste ALDI URLs
  • Brand and theme filters, plus price and name ordering
  • Numeric was-price plus savings amount and savings percent when a product is discounted, alongside the pre-formatted display strings
  • Unit / comparison pricing ("$3.65 per 1 L") on every record
  • Optional detail enrichment: description, ingredients, allergens, nutritional claims, storage and usage instructions, country of origin, and the complete image gallery
  • Ready-to-download image URLs and a direct product URL on every record
  • Resume & recurring updates: continue one interrupted crawl (resumeFromRunId), or run this actor on a schedule against the same search and get back only what's new/changed (incrementalMode)

Data you get

Sample shape; values are illustrative placeholders, not from a live listing.

FieldExample
sku000000000000398949
nameFull Cream Milk 2L
titleSAMPLE BRAND Full Cream Milk 2L
brandSAMPLE BRAND
price7.29
priceDisplay$7.29
wasPrice8.99
wasPriceDisplay$8.99
savingsAmount1.70
savingsPercent18.9
savingsDisplaySave $1.70
promoLabelSave $1.70
onSaletrue
unitPrice3.65
unitPriceDisplay$3.65 per 1 L
unitOfMeasureL
unitMeasure1L
currencyAUD
sellingSize2 L
categoryMilk
categoryPathDairy, Eggs & Fridge > Milk
categories[{"id":"960000000","name":"Dairy, Eggs & Fridge","path":"dairy-eggs-fridge"}]
isSpecialBuyfalse
onSaleDateDisplayOn Sale Sat 5 Jul
images["https://.../product/jpg/scaleWidth/600/<hash>/full-cream-milk-2l"]
imagesCount3
notForSalefalse
urlhttps://www.aldi.com.au/product/full-cream-milk-2l-000000000000398949
descriptionFull product description appears here when fetchDetails is on.
ingredientsFull-cream milk.
allergens["Milk"]
nutritionalClaimsSource of calcium
storageInstructionsKeep refrigerated.
countryOriginAustralia
detailFetchedtrue
changeTypeUPDATED (incremental mode only)
changedFields["price", "wasPrice"] (incremental mode only)
firstSeenAt2026-08-01T00:00:00Z (incremental mode only)
lastSeenAt2026-08-03T00:00:00Z (incremental mode only)

How to use

Search by keyword:

{
"mode": "search",
"searchTerms": ["milk", "coffee"],
"maxItems": 50
}

Scrape a specials / offers range directly:

{
"mode": "search",
"specialsCategory": "special-buys",
"maxItems": 100
}

List a category (including Special Buys) with detail enrichment:

{
"mode": "search",
"categories": ["Special Buys", "Dairy, Eggs & Fridge"],
"fetchDetails": true,
"sortBy": "price_asc",
"maxItems": 100
}

Filter a range by brand:

{
"mode": "search",
"categories": ["Limited Time Only"],
"brands": ["URBAN EATS"],
"maxItems": 30
}

Paste URLs (product, category, or search):

{
"mode": "url",
"urls": [
"https://www.aldi.com.au/products/dairy-eggs-fridge/milk/k/1111111160",
"https://www.aldi.com.au/product/expressi-milk-frother-000000000000545135"
],
"fetchDetails": true
}

Input options

  • mode - search (keyword and/or category) or url (paste links)
  • searchTerms - keywords to search the catalogue (search mode)
  • specialsCategory - pick a promotional range in search mode: special-buys (Limited Time Only), lower-prices, or super-savers; leave empty for a normal run
  • categories - category names, URL slugs, or numeric keys; accepts Special Buys, Limited Time Only, Lower Prices, Super Savers, Dairy, Eggs & Fridge, meat-seafood/beef, etc.
  • brands - filter by brand name as shown on ALDI
  • themes - filter by ALDI theme label (e.g. Pantry Staples)
  • sortBy - relevance (default), price_asc, price_desc, or name
  • urls - ALDI product, category, or search URLs (url mode)
  • fetchDetails - add the full detail fields to every product (one extra request per product)
  • maxItems - cap on products across all terms/categories/URLs (0 = unlimited)
  • maxPages - optional safety cap on pages per term/category (60 products per page)
  • proxy - proxy configuration; the default works on any Apify plan
  • resumeFromRunId - continue one interrupted crawl from a previous run id of this actor
  • incrementalMode - remember this search's baseline across scheduled runs and return only what changed
  • stateKey - optional manual key for incremental mode's baseline (see below)
  • emitUnchanged - also return every unchanged product every run (incremental mode)
  • emitExpired - also return products that disappeared since last run (incremental mode)

Resume & recurring updates

Two independent features cover different jobs:

  • Resume from run/dataset (resumeFromRunId) - continues ONE specific crawl that was interrupted or capped by Max products. Paste the earlier run's id and this run skips every product id that run already collected, so you get the rest of the catalogue without duplicate rows or duplicate charges. If this run itself is resumed by the Apify platform (a migration or the Resurrect button), its own in-progress state always takes precedence over resumeFromRunId - the pasted id is ignored with a log message in that case.
  • Incremental mode (incrementalMode) - for a search/category/URL set you run on a schedule (daily/weekly). The actor remembers its own baseline for that exact search (state key = your stateKey, or an automatic hash of mode + search terms + categories + specials range + brands + themes + sort + URLs + fetch-details detail toggle - two different searches never share a baseline). Each product is classified against that baseline:
    • NEW - not seen before
    • UPDATED - a comparable field changed (changedFields names exactly which)
    • UNCHANGED - identical to last run; suppressed (not returned, not billed) unless emitUnchanged is on
    • REAPPEARED - was previously marked EXPIRED and is back
    • EXPIRED - tracked before but not found this run, only emitted with emitExpired on, and only after a complete scan of every search term/category/URL in this run (a Max products cap, an unresolved category, an unrecognized URL, or resumeFromRunId all withhold EXPIRED detection for that run rather than risk a false positive - the log explains why whenever it's withheld)

resumeFromRunId + incrementalMode together bootstrap a new incremental baseline from the resumed crawl's ids (so those products don't look NEW again next scheduled run) - but only when incremental mode has no saved state for this search yet; if it already does, the run fails fast rather than silently mixing two different resume mechanisms.

Turning detail enrichment on/off, changing any filter, or changing the search terms/categories/URLs all count as a different search for incremental mode's automatic key - use stateKey if you deliberately want to share one baseline across a changing input.

Specials, Special Buys, and pricing

ALDI Australia runs an everyday-low-price model: its promotional surface is the three promo ranges rather than a rotating half-price / clearance collection. Pick one with the specialsCategory input in search mode, or address it as a category:

  • Special Buys (special-buys, a.k.a. Limited Time Only) - the weekly limited ranges, with the on-sale date captured
  • Lower Prices (lower-prices)
  • Super Savers (super-savers)

When a product is genuinely discounted, the record carries the numeric wasPrice, savingsAmount, and savingsPercent alongside the wasPriceDisplay / savingsDisplay strings and an onSale flag. Because ALDI prices are mostly everyday-low rather than strike-through, these was-price fields are populated only when the site actually shows a reduction.

The categories input accepts the top-level ranges and any nested grocery aisle. Grocery aisles can be given by name (Dairy, Eggs & Fridge), by slug (dairy-eggs-fridge, dairy-eggs-fridge/milk), or by the numeric key from a category URL.

About product reviews

ALDI Australia does not publish product reviews or star ratings on aldi.com.au. This was verified empirically:

  • No review or rating vendor (Bazaarvoice, Yotpo, PowerReviews, Feefo, Reevoo, or similar) is loaded anywhere on the product pages.
  • The product listing and product-detail responses that power the storefront contain no rating, reviewCount, averageRating, or review-body fields.

Because the site does not expose reviews, this actor does not emit review fields. If ALDI adds reviews in future, this actor will be updated to capture them.

Export to your apps (MCP connectors)

Optionally pipe results into the apps you already use via Model Context Protocol (MCP) connectors - Notion, Linear, Airtable, or Apify. Authorize a connector once under Apify, Settings, Integrations, then select it in the input. The connector receives a condensed, human-readable summary per item; the full record always stays in the dataset.

Output

Every product is pushed to the dataset as a flat JSON record with the fields above. Use the Products Overview dataset view for a quick table, or export to JSON, CSV, or Excel from the Apify Console.

Notes

  • Prices are in AUD. price and unitPrice are numeric dollars; the *Display fields carry the pre-formatted strings as shown on the site.
  • Unit price basis: unitOfMeasure is the unit ALDI quotes the comparison price in (g, kg, L, ml, each, sheets, ...), and unitMeasure is that unit together with its reference quantity (100g, 1L, 100each). Both are parsed from the same comparisonDisplay string the site renders, and only when the string's price matches the numeric unitPrice exactly. Always read unitPrice together with unitMeasure, never alone: a $2.38 unit price on a "$2.38 per 100 g" product is per 100 g, not per gram.
  • Was-price and savings appear only when a product is currently discounted.
  • The actor deduplicates by SKU within a run.
  • Incremental mode's change detection compares every field, including price, wasPrice, savingsAmount/savingsPercent, onSale, and availability - these ARE the product on a grocery catalogue, so a price or stock change is exactly the change a recurring run exists to report; none of them are treated as noise.