ALDI AU Scraper icon

ALDI AU Scraper

Scrape ALDI Australia (aldi.com.au) products: name, brand, price, was-price, savings, unit price, size, category, images, availability and Special Buys…

Start using this actor on Apify ↗Need a custom scraper?Contact us ↗

ALDI AU Scraper at a glance

ALDI AU Scraper is a ready-to-run Apify actor from abotapi for collecting ecommerce data. Its documented output includes sku, id, abstract sku, brand and name, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $1.70 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify.

Runs on
Apify cloud: console, API, schedules and integrations
Data type
Ecommerce, Automation, Developer Tools
Region
Oceania
Pricing
$1.70 per 1,000 results (Free plan), from $1.00 on paid plans
Output
Documented below · JSON, CSV, Excel
Inputs
26 options
Run success
100.0% of completed public runs in the last 30 days

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.

What ALDI AU Scraper can do

  • Four ways to collect. Pull a Special Buys, Lower Prices or Super Savers range directly, search by keyword, list any grocery category, or paste ALDI product, category or search links.
  • Real pricing detail. Numeric was-price with savings amount and percent alongside the pre-formatted display strings, plus unit (comparison) pricing on every record.
  • Optional full detail. Description, ingredients, allergen statements, nutritional claims, storage and usage instructions and country of origin, switched on per run.
  • Department control. Filter by brand or theme, and drop whole departments from your output by each product's own reported category, even when a promo range cross-lists it from elsewhere.
  • Built for schedules. Incremental mode returns only new, updated, reappeared and expired products on recurring runs, and continuing one interrupted crawl never re-collects or re-charges what it already gathered.
  • Ready-to-use media and links. A direct product URL, its category page URL, a main image and the full ready-to-download image gallery on every record.

Choose what to collect

These inputs let you configure ALDI AU Scraper - Groceries, Special Buys & Prices. Open the actor on Apify to enter your values and review the current options.

Supported input fields
InputWhat it controls
modestring · requiredHow to find products. 'search' builds listings from search terms and/or categories with filters; 'url' scrapes ALDI product, category or search URLs you paste.

Choices: search, url

searchTermsarrayKeywords to search the ALDI catalogue, e.g. 'milk', 'coffee', 'air fryer'. Each term is paginated fully (up to Max products). Leave empty to use categories instead.
categoriesarrayCategory names or URL slugs to list, e.g. 'Special Buys', 'Limited Time Only', 'Lower Prices', 'Super Savers', 'Dairy Eggs & Fridge', 'meat-seafood/beef'. Also accepts a raw numeric category key. Special Buys and weekly-specials ranges are categories here. Leave empty to use search terms instead.
specialsCategorystringScrape a promotional range directly (search mode). ALDI Australia's promo ranges are Special Buys (Limited Time Only), Lower Prices and Super Savers. Adds the chosen range to the run alongside any search terms or categories. To scrape a specials listing in url mode instead, paste its ALDI listing URL. Leave as 'No specials filter' for a normal catalogue run.

Choices: , special-buys, lower-prices, super-savers

specialBuysDatesarrayScrape the Special Buys that go on sale on these dates (search mode), e.g. '2026-10-08', '8 Oct' or 'Wed 8 October'. Enter 'all' for every date currently listed on ALDI's Special Buys page, or 'upcoming' for the dates from today onward. Each date is added to the run alongside any search terms or categories, and the Brands/Themes filters still apply. Leave empty to skip.
excludeCategoriesarrayDepartment names to drop from the OUTPUT, e.g. 'Liquor', 'Limited Time Only', 'Front of Store'. Matched against each product's OWN reported department (its categoryPath), not just against what you listed in Categories/Specials; it also catches products that promo ranges like Lower Prices, Super Savers or The People's Picks cross-list from an excluded department. Leave empty to keep everything.
brandsarrayFilter by brand name as shown on ALDI, e.g. 'EXPRESSI', 'URBAN EATS'. Leave empty for all brands. In url mode this is the fallback: a pasted URL's own 'brand-name' query param overrides it for that URL. Every run lists the brands ALDI offers for each search in the OUTPUT record (availableFilters).
Show 19 more inputs
More input fields
InputWhat it controls
themesarrayFilter by ALDI theme label, e.g. 'BBQ', 'Gardening', 'Pet Essentials', 'Christmas', 'Halloween', 'Liquor'. Leave empty for all. In url mode this is the fallback: a pasted URL's own 'theme' query param overrides it for that URL. Every run lists the themes ALDI offers for each search in the OUTPUT record (availableFilters), and Special Buys runs save the current themes per on-sale date in SPECIAL_BUYS_CALENDAR.
sortBystringResult ordering, applied by ALDI itself before Max products is reached, so 'Price: low to high' with Max products 20 returns ALDI's 20 cheapest matches. In url mode this is the fallback: a pasted URL's own 'sort' query param overrides it for that URL.

Choices: relevance, price_asc, price_desc, name, name_desc

onSaleOnlybooleanOnly return products that are on a promotion: a Special Buy (has an on-sale date), on a promotional range (Limited Time Only, Lower Prices or Super Savers), or showing a was-price. Applies in search mode and url mode. Products filtered out are not returned and not charged.
minPricenumberOnly return products priced at or above this amount, in Australian dollars. Applies in search mode and url mode. Products filtered out are not returned and not charged. Leave empty for no minimum.
maxPricenumberOnly return products priced at or below this amount, in Australian dollars. Applies in search mode and url mode. Products filtered out are not returned and not charged. Leave empty for no maximum.
urlsarrayALDI URLs to scrape (url mode): product pages, category listings (incl. the bare /products page for the whole range), Special Buys on-sale-date pages (incl. the bare /special-buys landing page, which covers every date it currently lists), and search-result pages. Product URLs return a single detail record; every other shape returns its full result set (up to Max products). A pasted URL's own filter query params (brand-name, category-tree, theme, sort, page) are honoured straight off that URL and override the Brands/Themes/Sort by inputs above for that URL only; see the README for the full list of supported shapes.
fetchDetailsbooleanAdd full product-detail fields to every result: long description, ingredients, allergens, nutritional claims, usage and storage instructions, country of origin and the complete image gallery. Adds one request per product.
maxItemsintegerMaximum number of products to scrape across all terms/categories/URLs. Set 0 for unlimited.
maxPagesintegerOptional safety cap on the number of result pages per search term or category (60 products per page). Leave empty for no page limit; the run stops at Max products.
includeCategoryTreebooleanAlso save ALDI's full category tree (every department and aisle with its key, name, path, URL, parent and depth) to the run's key-value store as the record CATEGORY_TREE. Not added to the dataset and not charged. Off by default.
resumeFromRunIdstringPaste a previous run id from THIS actor to continue one interrupted crawl: this run skips every product id that run already collected, so a capped or aborted crawl can pick up where it left off without duplicate pushes/charges. A separate feature from Incremental mode below; see its description for when to use each. Leave empty for a normal run.
incrementalModebooleanFor a search/category/URL set you run on a schedule (daily/weekly): the actor remembers its own baseline for this exact search and returns only NEW / UPDATED / REAPPEARED / EXPIRED products next time, instead of the full catalogue again. Unlike Resume from run/dataset above (which continues ONE specific interrupted run), this remembers the search itself across separate scheduled runs. Off by default so a normal run's output is unchanged.
stateKeystringOnly used with Incremental mode. Leave empty to key the baseline automatically off this run's search terms/categories/specials/brands/themes/sort/URLs/fetchDetails (two different searches never share state). Set your own text here to deliberately share one baseline across otherwise-different inputs, or to isolate multiple monitoring campaigns that would otherwise hash to the same key.
emitUnchangedbooleanOnly used with Incremental mode. By default an UNCHANGED product (identical to last run) is NOT returned and NOT billed. Turn this on to also return every unchanged product every run; this returns and bills every tracked product, not just what changed.
emitExpiredbooleanOnly used with Incremental mode. When on, a product tracked by a previous run that no longer appears after a COMPLETE scan of this search is returned once with changeType EXPIRED, then dropped from the baseline. Skipped (with a log message) on a Max products-capped, resumed, or otherwise partial run, since an incomplete scan cannot tell 'gone' apart from 'not reached yet'. This returns and bills the expired rows in addition to NEW/UPDATED ones.
ignoreFieldsForChangesarrayOutput field names that should NOT make a product count as UPDATED, even when they changed. Measured empty by default on this actor (a live re-fetch of the same products found no rotating/volatile field), so nothing is ignored unless you add one here. Matches a field name at any nesting depth (for example inside nutritionalInformation). Ignored fields are still returned in the output.
mcpConnectorsarrayOptionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify, Settings, Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON; the complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com).
notionParentPageUrlstringURL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors.
maxNotifyListingsintegerCap on items written to each connector per run. Does not affect the dataset.

Fields in the output

The documented dataset includes the fields below. Availability can depend on the source page and selected mode.

skuSKU (text)
idID (text)
abstractSkuAbstract SKU (text)
brandBrand (text)
nameName (text)
titleTitle (text)
slugSlug (text)
urlURL (link)
pricePrice (number)
priceDisplayPrice (display) (text)
wasPriceWas price (number)
wasPriceDisplayWas price (display) (text)
Show 74 more fields
savingsAmountSavings amount ($) (number)
savingsPercentSavings (%) (number)
savingsDisplaySavings (display) (text)
promoLabelPromo label (text)
onSaleOn Sale (boolean)
promotionsPromotional ranges (array)
unitPriceUnit price (number)
unitPriceDisplayUnit price (display) (text)
unitOfMeasureUnit of measure (text)
unitMeasureUnit measure (text)
perUnitPricePer unit price (number)
perUnitPriceDisplayPer unit price (display) (text)
perUnitQuantityPer unit quantity (number)
perUnitQuantityUnitPer unit quantity unit (text)
priceAdditionalInfoPrice additional info (text)
bottleDepositBottle deposit ($) (number)
bottleDepositDisplayBottle deposit (display) (text)
feeTextFee text (text)
currencyCurrency (text)
currencySymbolCurrency symbol (text)
sellingSizeSelling size (text)
quantityUnitQuantity unit (text)
weightTypeWeight type (text)
purchaseQuantityPurchase quantity (object)
categoryCategory (text)
categoriesCategories (array)
categoryPathCategory path (text)
categoryUrlCategory URL (link)
departmentDepartment (text)
isSpecialBuySpecial Buy (boolean)
onSaleDateOn-sale date (date)
onSaleDateDisplayOn-sale date (display) (text)
notForSaleNot for sale (boolean)
notForSaleReasonNot for sale reason (text)
discontinuedDiscontinued (boolean)
discontinuedNoteDiscontinued note (text)
isAbstractIs abstract (boolean)
isDropshipDropship (boolean)
ageRestrictionAge restriction (number)
alcoholAlcohol content (text)
energyClassEnergy class (text)
imagesImages (array)
imagesCountImages count (number)
imageUrlMain image (image)
badgesBadges (array)
themesThemes (array)
descriptionDescription (text)
ingredientsIngredients (text)
allergensAllergens (array)
nutritionalClaimsNutritional claims (array)
allergenStatementsAllergen statements (array)
usageInstructionsUsage instructions (text)
storageInstructionsStorage instructions (text)
warningsWarnings (text)
countryOriginCountry of origin (text)
legalDisclaimerLegal disclaimer (text)
gradeGrade (text)
multiInformationsMulti informations (array)
variantsVariants (object)
metaTitleMeta title (text)
metaDescriptionMeta description (text)
metaKeywordsMeta keywords (text)
canonicalCanonical slug (text)
stockInformationAvailableStock information available (boolean)
detailFetchedDetail fetched (boolean)
positionPosition (number)
inputInput (text)
inputTypeInput type (text)
scrapedAtScraped at (date)
changeTypeChange (incremental mode) (text)
changedFieldsChanged fields (array)
previousValuesPrevious values (incremental mode) (object)
firstSeenAtFirst seen (date)
lastSeenAtLast seen (date)

Example output

An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.

{
  "id": "000000000011112222",
  "sku": "000000000011112222",
  "abstractSku": "000000000011112222A",
  "name": "Full Cream Milk 2L",
  "title": "SAMPLE BRAND Full Cream Milk 2L",
  "brand": "SAMPLE BRAND",
  "slug": "full-cream-milk-2l",
  "url": "https://www.aldi.com.au/product/full-cream-milk-2l-000000000011112222",
  "price": 7.29,
  "priceDisplay": "$7.29",
  "wasPrice": 8.99,
  "wasPriceDisplay": "$8.99",
  "savingsAmount": 1.7,
  "savingsPercent": 18.9,
  "savingsDisplay": "Save $1.70",
  "promoLabel": "Save $1.70",
  "onSale": true,
  "promotions": [
    "Lower Prices"
  ],
  "unitPrice": 3.65,
  "unitPriceDisplay": "$3.65 per 1 L",
  "unitOfMeasure": "L",
  "unitMeasure": "1L",
  "perUnitPrice": null,
  "perUnitQuantity": null,
  "perUnitQuantityUnit": null,
  "sellingSize": "2 L",
  "currency": "AUD",
  "category": "Milk",
  "categoryPath": "Dairy, Eggs & Fridge > Milk",
  "department": "Dairy, Eggs & Fridge",
  "categories": [
    {
      "id": "960000000",
      "name": "Dairy, Eggs & Fridge",
      "path": "dairy-eggs-fridge"
    },
    {
      "id": "1111111160",
      "name": "Milk",
      "path": "dairy-eggs-fridge/milk"
    }
  ],
  "isSpecialBuy": false,
  "notForSale": false,
  "images": [
    "https://cdn.aldi.com.au/products/full-cream-milk-2l.jpg"
  ],
  "imagesCount": 1,
  "imageUrl": "https://cdn.aldi.com.au/products/full-cream-milk-2l.jpg",
  "categoryUrl": "https://www.aldi.com.au/products/dairy-eggs-fridge/milk/k/1111111160",
  "themes": [],
  "description": "Full product description appears here when Fetch product details is on.",
  "ingredients": "Full-cream milk.",
  "allergens": [],
  "allergenStatements": [
    "Contains: Milk"
  ],
  "storageInstructions": "Keep refrigerated.",
  "countryOrigin": "Australia",
  "detailFetched": true,
  "position": 3,
  "input": "milk",
  "inputType": "searchTerm",
  "scrapedAt": "2026-10-06T01:02:03Z"
}

Ways to use this data

  • Price monitoring teams: track ALDI's everyday-low prices and Special Buys week over week to catch changes before shoppers do.
  • Grocery comparison sites: combine numeric price, unit price and savings percent across categories to power a comparison engine.
  • Range and promo research: pull Special Buys, Lower Prices or Super Savers directly to see what ALDI is currently promoting.
  • Nutrition and compliance review: collect ingredients, allergen statements and nutritional claims for a whole category at once with detail enrichment on.
  • Catalogue history: run Incremental mode on a schedule to build a running record of price changes, new listings and discontinued products.

Before you run

Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.

Questions about this actor

What data does ALDI AU Scraper return?

The documented output for ALDI AU Scraper includes sku, id, abstract sku, brand, name, title, slug and url. Availability of each field depends on the source page and the selected mode.

How much does ALDI AU Scraper cost?

It costs $1.70 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.

Can I get only new, changed or expired products on a schedule?

Yes. Schedule the actor from the Schedules tab with Incremental mode on. Each run then returns only NEW and UPDATED products by default; UNCHANGED ones are suppressed and not billed. Turn on Emit expired products to also get a one-time EXPIRED row for anything that disappeared, but only once a run completes a full, uncapped scan of every search term, category and URL you gave it; a capped, partial or resumed run skips EXPIRED detection for that run and logs why.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push a summary of each product into Notion, Linear or Airtable.

Ready to collect with ALDI AU Scraper?

Run it on Apify with your own input and export the results as JSON, CSV or Excel.