# ALDI Australia Scraper: Prices, Special Buys, State Prices (`themineworks/aldi-australia-scraper`) Actor

ALDI Australia products and prices by keyword, category, full catalogue, Special Buys or product link: price, unit price, Lower Prices and Super Savers flags, Special Buys on sale date, brand, category, pack size, images. Prices by state or store. Monitor mode returns price changes only. No login.

- **URL**: https://apify.com/themineworks/aldi-australia-scraper.md
- **Developed by:** [The Mine Works](https://apify.com/themineworks) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.62 / 1,000 products

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## ALDI Australia Scraper: Prices, Special Buys, State Prices

[![3,322 ALDI Australia products with price, unit price and promotion flags in 65 seconds](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/aldi-australia-scraper-hero.png)](https://console.apify.com/actors/l0sMwbIWlvtJQT4rq/input?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

From **The Mine Works**, makers of [Home Depot Scraper](https://apify.com/themineworks/home-depot-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) and [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), with over 245,000 runs across 280+ public actors.

Updated 28 Oct 2026: first release. Keywords, categories by name, slug, ID or link, the full catalogue, every current Special Buys date and theme, product links and SKUs; prices for chosen states, postcodes or stores; Lower Prices, Super Savers and Limited Time Only flags; monitor mode that returns only price changes; one flat row per product. Bookmark this Actor on its Store page so it is one click away next time.

### Why choose this actor?

- **State and store prices, not one national number.** ALDI prices fresh produce, meat and liquor by store. Give `regions` such as `WA` and `VIC` and every row carries the price of that store with `store_id`, `store_name` and `store_state`. In our test, 19 of the 30 fresh fruit lines sold in both states had a different price in Perth and Melbourne (Afourer Mandarins 750g: $3.99 in WA, $3.69 in VIC).
- **The numbers a price analyst compares, in columns.** `price`, `unit_price` and `unit_price_unit` (`2.38` per `100 g`), `pack_size`, `was_price` when ALDI shows one, and the promotion groups ALDI uses instead of strike-through prices: `lower_price`, `super_saver`, `limited_time_only`. In a full catalogue run, the unit price was filled on 81% of rows (ALDI publishes none for liquor and most Special Buys) and the promotion flags on 100%.
- **Special Buys with their date and theme.** `special_buy`, `on_sale_date` (`2026-11-04`), `on_sale_label` (`On Sale Wed 04 Nov` or `While Stocks Last`), `special_buy_theme` (`Liquor`, `Christmas Sweets`) and, for a store, the stock level ALDI shows (`red`, `Low/no stock`).
- **Monitor mode for price tracking.** Run it on a schedule with `monitorMode` on and you get only the products whose price changed since the last run, with `previous_price`, `price_change` and `price_change_percent`. Unchanged products are not delivered and not charged.
- **Pay per product, nothing for errors.** Links that are not ALDI links, SKUs ALDI does not have, the summary row, duplicates and unchanged products in monitor mode are never charged. The promotion flags, nutrition and ingredients panel images, description and ingredients text cost nothing extra. No ALDI account.

[![Run it on Apify](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/button-run.png)](https://console.apify.com/actors/l0sMwbIWlvtJQT4rq/input?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Part of The Mine Works E-commerce and marketplaces family:** [Ozon.ru Scraper](https://apify.com/themineworks/ozon-product-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [⭐ Amazon Reviews Scraper](https://apify.com/themineworks/amazon-reviews?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Amazon Product Scraper](https://apify.com/themineworks/amazon-products?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Etsy Listings Scraper](https://apify.com/themineworks/etsy-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [AliExpress Scraper](https://apify.com/themineworks/aliexpress-products?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Kleinanzeigen.de Scraper](https://apify.com/themineworks/kleinanzeigen-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral).

### Try it in one minute

Paste this into the input (JSON view) and press Start. It returns the first 30 ALDI products for "milk" with price, unit price and promotion flags. It took 6 seconds in our test run:

```json
{
  "searchQueries": ["milk"],
  "maxItems": 30
}
```

Put several keywords on separate lines to run several searches at once, add a category in `categories`, tick `fullCatalogue` for every product ALDI lists, or tick `specialBuys` for every current and upcoming Special Buy. A product that two of your searches find is delivered once.

Apify's free plan includes $5 of credit every month, which covers about 1,800 products at this actor's price.

#### Copy to your AI assistant

```text
themineworks/aldi-australia-scraper on Apify. Reads ALDI Australia (aldi.com.au) by keyword, category, the full catalogue, Special Buys or product link and returns one flat row per product with price, unit price, pack size, brand, category path, promotion flags (Lower Prices, Super Savers, Limited Time Only), Special Buys on sale date and theme, availability, images and link, with no login. Prices can be read for states, postcodes or ALDI stores. Call ApifyClient("TOKEN").actor("themineworks/aldi-australia-scraper").call(run_input={"searchQueries": ["milk"], "maxItems": 100, "regions": ["WA"]}), then client.dataset(run["defaultDatasetId"]).list_items().items. Give searchQueries (list of keywords), categories (names such as "Milk", slugs such as "dairy-eggs-fridge/milk", IDs or aldi.com.au/products/.../k/<id> links, or "all"), productUrls (aldi.com.au/product/ links or 18 digit SKUs; category, search and Special Buys links work too), fullCatalogue (true for every product, about 3,300) and/or specialBuys (true for every advertised Special Buys date and theme). Optional: regions (up to 10 of NSW, VIC, QLD, SA, WA, ACT, a 4 digit postcode or a store id like G525; each is read separately), maxItems (default 100, 1 to 10,000, per keyword or category and store), sortBy (relevance, name_asc, name_desc, price_asc, price_desc), promotionFlags (default true), includeDetails (default false; description, ingredients, allergens, nutritional claims, storage and usage text, country of origin), includeStoreStock (default false; Special Buys stock at the store, needs regions), monitorMode (default false; only products whose price changed since the last run with the same monitorName), monitorName (default "default"), monitorWatch ("price" or "all"), includeNewProducts (default true). Product rows have no _type field and carry sku, abstract_sku, name, brand, category, subcategory, category_path, category_ids, category_url, price, price_display, currency, unit_price, unit_price_unit, unit_price_display, price_per_unit_display, was_price, was_price_display, savings_display, price_note, bottle_deposit, pack_size, selling_unit, sold_by_weight, promotions, lower_price, super_saver, limited_time_only, on_promotion, special_buy, on_sale_date, on_sale_label, special_buy_theme, availability, discontinued, age_restricted, minimum_age, alcohol_percent, image_url, images, nutrition_image_url, ingredients_image_url, url, description, ingredients, allergens, nutritional_claims, storage_instructions, usage_instructions, country_of_origin, warnings, details_scraped, store_stock_level, store_stock, store_id, store_name, store_state, store_postcode, price_scope, found_by, search_keyword, search_category, search_category_id, special_buys_date, sort_by, results_in_list, position, change_type, changed_fields, previous_price, previous_was_price, price_change, price_change_percent, previous_scraped_at, scraped_at. Each run also writes one row with _type "summary", one with _type "info" when products were delivered, and a row with _type "error" for each input that could not be read; none of these is charged. Full spec: GET https://api.apify.com/v2/acts/themineworks~aldi-australia-scraper/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral
```

### Key features

- **Every way into the range**: keywords, categories (a top category includes its subcategories), the full catalogue, Special Buys by date and theme, and product links or SKUs, in any mix, in one run.
- **Regional prices**: states, postcodes or store ids, up to 10 per run; a state or postcode uses the nearest ALDI store. Without regions you get ALDI's default online prices (in our test they matched a central Sydney store on 1,378 of the 1,379 products compared).
- **Promotion flags**: ALDI shows Lower Prices, Super Savers and Limited Time Only as categories, not on the product. The actor reads those groups and puts the answer on every row.
- **Special Buys**: every advertised on sale date and theme, with the label ALDI shows and, with a store, the stock level.
- **Monitor mode**: only products whose price or was price changed since the last run, or with `monitorWatch: "all"` also promotion and Special Buys label changes. Separate watch lists by `monitorName`.
- **Product text on request**: description, ingredients, allergens, nutritional claims, storage and usage instructions and country of origin with `includeDetails`. The nutrition and ingredients panel images come on every row anyway.
- **Pipeline friendly**: one product link or SKU per run from Clay, n8n or an AI agent, or 5,000 SKUs in one run, 60 per call.

### How to use it

#### Basic: products for a keyword

```json
{
  "searchQueries": ["coffee pods", "nappies"],
  "maxItems": 200
}
```

Each keyword returns ALDI's search results in relevance order, up to 200 products each.

#### A whole category, cheapest first

```json
{
  "categories": ["Dairy, Eggs & Fridge"],
  "sortBy": "price_asc",
  "maxItems": 1000
}
```

Categories work by name, by slug (`dairy-eggs-fridge/milk`), by ID (`1111111160`) or by link (`https://www.aldi.com.au/products/dairy-eggs-fridge/milk/k/1111111160`). The promotion groups are categories too: `Lower Prices`, `Super Savers`, `Limited Time Only`.

#### The full catalogue in every state

```json
{
  "fullCatalogue": true,
  "regions": ["NSW", "VIC", "QLD", "SA", "WA", "ACT"]
}
```

About 3,300 products per state, each row with its store and state. Compare `price` on `sku` across `store_state` to see where ALDI prices differ.

#### Special Buys with store stock

```json
{
  "specialBuys": true,
  "regions": ["2010"],
  "includeStoreStock": true
}
```

Every Special Buys date and theme ALDI advertises, priced for the store nearest postcode 2010, with that store's stock level for the Special Buys already on sale. For one date or theme, paste its link in `productUrls` instead: `https://www.aldi.com.au/special-buys/2026-11-04?theme=Liquor`.

#### Daily price change alerts

```json
{
  "categories": ["Fruits & Vegetables", "Meat & Seafood"],
  "regions": ["WA"],
  "maxItems": 1000,
  "monitorMode": true,
  "monitorName": "fresh-wa",
  "includeNewProducts": false
}
```

Save it as a task and schedule it daily. The first run saves the baseline and charges nothing per product; every later run returns only the products whose price moved, with `change_type` `price_up` or `price_down` and the change in dollars and percent.

#### One product at a time from Clay, n8n or an AI agent

```json
{
  "productUrls": ["https://www.aldi.com.au/product/choceur-milk-mouse-milk-chocolate-168g-000000000538441002"],
  "includeDetails": true
}
```

A link or the 18 digit SKU alone (`000000000538441002`) returns that product's row; a SKU ALDI does not have returns an error row and costs nothing.

### Input parameters

| Field | Type | What it does |
|---|---|---|
| `searchQueries` | list | Keywords as typed in the aldi.com.au search box. Up to 100 searches per run. |
| `categories` | list | Category names, slugs, IDs or links; `all` for the full catalogue. |
| `fullCatalogue` | boolean | Every product ALDI lists (3,322 on 28 Oct 2026). Not limited by `maxItems`. |
| `specialBuys` | boolean | Every current and upcoming Special Buys date and theme. |
| `productUrls` | list | Product links or SKUs, 60 per call. Category, search and Special Buys links work here too. |
| `regions` | list | Up to 10 states (NSW, VIC, QLD, SA, WA, ACT), postcodes or store ids (G525). Empty: default prices. |
| `maxItems` | integer | Most products per keyword or category and store, 1 to 10,000. Default 100. |
| `sortBy` | select | relevance, name_asc, name_desc, price_asc, price_desc. Empty: relevance for keywords, name A to Z otherwise. |
| `promotionFlags` | boolean | Lower Prices, Super Savers and Limited Time Only flags on every row. Default on. |
| `includeDetails` | boolean | Description, ingredients, allergens, claims, storage, usage, origin. One extra call per product. |
| `includeStoreStock` | boolean | Store stock level for Special Buys on sale (needs `regions`). |
| `monitorMode` | boolean | Only products whose price changed since the last run. |
| `monitorName` | text | Name of the watch list the monitor remembers. Default `default`. |
| `monitorWatch` | select | `price` (price and was price) or `all` (also promotions and Special Buys label). |
| `includeNewProducts` | boolean | Monitor mode: return products not seen before. Off: save them silently as the baseline. |
| `proxyConfiguration` | proxy | Apify datacenter proxy by default. |

### What data do you get?

| Group | Fields |
|---|---|
| Product | `sku`, `abstract_sku`, `name`, `brand`, `pack_size`, `selling_unit`, `sold_by_weight`, `url` |
| Category | `category`, `subcategory`, `category_path`, `category_ids`, `category_url` |
| Price | `price`, `price_display`, `currency`, `unit_price`, `unit_price_unit`, `unit_price_display`, `price_per_unit_display`, `was_price`, `was_price_display`, `savings_display`, `price_note`, `bottle_deposit` |
| Promotions | `promotions`, `lower_price`, `super_saver`, `limited_time_only`, `on_promotion` |
| Special Buys and availability | `special_buy`, `on_sale_date`, `on_sale_label`, `special_buy_theme`, `availability`, `discontinued`, `store_stock_level`, `store_stock` |
| Restrictions | `age_restricted`, `minimum_age`, `alcohol_percent` |
| Images | `image_url`, `images`, `nutrition_image_url`, `ingredients_image_url` |
| Product text (`includeDetails`) | `description`, `ingredients`, `allergens`, `nutritional_claims`, `storage_instructions`, `usage_instructions`, `country_of_origin`, `warnings`, `details_scraped` |
| Store | `store_id`, `store_name`, `store_state`, `store_postcode`, `price_scope` |
| Search context | `found_by`, `search_keyword`, `search_category`, `search_category_id`, `special_buys_date`, `sort_by`, `results_in_list`, `position`, `scraped_at` |
| Monitor mode | `change_type`, `changed_fields`, `previous_price`, `previous_was_price`, `price_change`, `price_change_percent`, `previous_scraped_at` |

Fill rates in our full catalogue run of 3,322 products: price, link, availability and promotion flags 100%, image 99.9%, brand 93%, category path 85% (most Special Buys have no category on ALDI), unit price and pack size 81%, nutrition panel image 63%, ingredients panel image 26%, Special Buys 22%. With `includeDetails`, the description was filled on 41 of 41 sampled products and the ingredients text on 10 of 41 (ALDI writes it for some products only; the panel image covers most of the rest).

#### Stable fields for automations

- `sku` is ALDI's own 18 digit product number with leading zeros. Keep it as text and feed it back into `productUrls` unchanged.
- `store_id` plus `sku` identifies one price. Without regions, `store_id` is absent and `price_scope` is `default`.
- `availability` is one of `regular_range`, `special_buy_upcoming`, `special_buy_on_sale`, `special_buy_while_stocks_last`, `discontinued`.
- `change_type` (monitor mode) is one of `new`, `price_down`, `price_up`, `was_price_changed`, `promotion_changed`, `availability_changed`.
- Empty fields are left out of a row rather than sent as null.

#### Output examples

A product from the full catalogue, in the Lower Prices group:

```json
{
  "sku": "000000000399489001",
  "name": "3 Blade Razor System 8 Pack",
  "brand": "PRINCE",
  "category_path": "Health & Beauty > Hair Removal",
  "price": 4.49,
  "currency": "AUD",
  "unit_price": 0.56,
  "unit_price_unit": "1 each",
  "pack_size": "8 each",
  "promotions": ["Lower Prices"],
  "lower_price": true,
  "on_promotion": true,
  "special_buy": false,
  "availability": "regular_range",
  "image_url": "https://dm.apac.cms.aldi.cx/is/image/aldiprodapac/product/jpg/scaleWidth/1000/6ffad96e-6673-41ea-895d-d1b4ac9c603f/prince-3-blade-razor-system-8-pack",
  "url": "https://www.aldi.com.au/product/prince-3-blade-razor-system-8-pack-000000000399489001",
  "price_scope": "default",
  "found_by": "full_catalogue",
  "position": 15
}
```

Fresh fruit priced for a Perth store, with `includeDetails`:

```json
{
  "sku": "000000000000380169",
  "name": "Afourer Mandarins 750g",
  "category_path": "Fruits & Vegetables > Fresh Fruits",
  "price": 3.99,
  "unit_price": 5.32,
  "unit_price_unit": "1 kg",
  "pack_size": "750 g",
  "store_id": "G094",
  "store_name": "Beaufort Street Tenth Avenue Central",
  "store_state": "WA",
  "store_postcode": "6052",
  "price_scope": "store",
  "description": "Easy to peel and wonderfully sweet, Afourer mandarins are a juicy and convenient snack for busy days.",
  "found_by": "category"
}
```

A Special Buy with the stock at a Sydney store:

```json
{
  "sku": "000000000000466274",
  "name": "Flame Roast Smoked Salmon 150g",
  "brand": "THE FISHMONGER",
  "price": 9.99,
  "unit_price": 66.6,
  "unit_price_unit": "1 kg",
  "special_buy": true,
  "on_sale_date": "2026-10-28",
  "on_sale_label": "While Stocks Last",
  "special_buy_theme": "Limited Time Only Meat",
  "availability": "special_buy_while_stocks_last",
  "store_id": "G525",
  "store_state": "NSW",
  "store_stock_level": "red",
  "store_stock": "Low/no stock",
  "found_by": "special_buys"
}
```

A price change in monitor mode:

```json
{
  "sku": "000000000000364044",
  "name": "Red Seedless Grapes per kg",
  "price": 12.99,
  "previous_price": 12.49,
  "price_change": 0.5,
  "price_change_percent": 4,
  "change_type": "price_up",
  "changed_fields": ["price"],
  "store_id": "G094"
}
```

An error row for a SKU ALDI does not have (nothing charged):

```json
{ "_type": "error", "error_type": "not_found", "identifier": "999999999999999999", "reason": "ALDI Australia has no product with SKU 999999999999999999." }
```

The summary row (`_type` `summary`, also saved as `OUTPUT` in the key value store) of the full catalogue run, shortened:

```json
{
  "_type": "summary",
  "products_delivered": 3322,
  "charged_for": 3322,
  "api_calls_lists": 56,
  "api_calls_promotion_flags": 12,
  "http_requests": 68,
  "http_blocked": 0,
  "http_megabytes": 9.9,
  "run_seconds": 65
}
```

### Pricing

Pay per event: you pay for the products you receive, plus a flat $0.001 per run, whatever memory you choose. Regional prices, promotion flags, product text, store stock and monitor mode cost nothing extra.

| Event | When it is charged | Free plan | Bronze (Starter) | Silver (Scale) | Gold (Business) |
|---|---|---|---|---|---|
| `product-scraped` | Once per product row stored in your dataset | $2.70 per 1,000 | $2.29 per 1,000 | $1.94 per 1,000 | $1.62 per 1,000 |
| `run-start` | Once per run, after the first product row is stored | $0.001 | $0.001 | $0.001 | $0.001 |

The price of one product is the price per 1,000 divided by 1,000. A product read for two stores is two rows.

Never charged:

- inputs that are not keywords, categories, SKUs or ALDI links, and regions that are not a state, postcode or store id (each gets an error row);
- SKUs ALDI does not have, and category names it does not know;
- a product that a second search of the same run finds again for the same store;
- products past your `maxItems`;
- unchanged products in monitor mode, and new products when `includeNewProducts` is off;
- the summary, info and error rows;
- a run that delivers no product: the start fee is charged only after the first product row is stored;
- anything past your "Max cost per run". The actor checks the budget before each batch of rows and stops while the total is still below your limit, so the run ends SUCCEEDED with a partial result and a status message saying so.

### Run it on a schedule

1. Open the actor in Apify Console, set your input and click **Save as a new task**.
2. In the task, open **Schedules**, click **Add schedule** and pick how often (every day at 07:00, every Wednesday for the Special Buys drop and so on).
3. Turn on `monitorMode` to get only the price changes each time, or leave it off and compare runs on `sku` and `store_id` yourself.
4. Optional: add an integration (Google Sheets, Slack, a webhook) so each run lands where your team works.

### FAQ

#### What does this actor read?

ALDI Australia's own product service, the one aldi.com.au calls to show search results, category pages, Special Buys and product pages. It reads what any visitor sees without an account: names, prices, unit prices, pack sizes, categories, Special Buys dates, images and product text.

#### Are ALDI prices really different by state?

For most packaged groceries, no. For fresh produce, meat, liquor and some Special Buys, yes. In our test of the full range, a Perth store differed from ALDI's default prices on 66 products and a Melbourne store on 28, mostly fruit, vegetables, meat and wine. The range differs too: each store lists some products the others do not.

#### Why is `was_price` usually empty?

ALDI Australia rarely shows a strike-through price. It marks cheaper products by putting them in its Lower Prices, Super Savers and Limited Time Only groups instead, which this actor reports in `promotions` and the three flags. When ALDI does show a was price, it is in `was_price`.

#### How does monitor mode know what changed?

After each run it stores the price of every product it delivered, per store, in a named key value store of your Apify account (`aldi-au-monitor-<monitorName>`). The next run with the same `monitorName` compares against it. A product held back by your max cost is not stored, so the next run still reports it. Products that leave the range are not reported.

#### How many products can I get?

The full catalogue was 3,322 products on 28 Oct 2026. A keyword or category returns every product ALDI lists for it, up to `maxItems`. ALDI serves the first 9,999 products of any one list.

#### How long does a run take?

About 6 seconds for 30 products, 65 seconds for the full catalogue of 3,322 in our tests. `includeDetails` adds one call per product (80 products took 53 seconds).

#### Do I need an ALDI account, cookies or a proxy?

No account and no cookies. The default Apify datacenter proxy is enough: it was answered on 487 of 488 calls in our tests on the first try and on the last one after a retry, with no call refused.

#### Can I use it from Claude, ChatGPT or Cursor (MCP)?

Yes. Add the Apify MCP server (`https://mcp.apify.com`) to your assistant and ask it to run `themineworks/aldi-australia-scraper`, or paste the "Copy to your AI assistant" block above into the chat.

#### Which formats can I download?

JSON, CSV, Excel, XML and HTML from the run's Dataset tab or the API. The Prices, Special Buys and Price changes views show the columns for each job.

#### Is it legal to scrape ALDI Australia?

The actor reads public product and price data that ALDI shows to anyone without logging in, and no personal data. ALDI's robots.txt asks crawlers to stay away from the `/results`, `/brands` and `/tools` pages of www.aldi.com.au; this actor does not load those pages, it calls the product service directly. Decide for yourself whether that is acceptable for your use. You are responsible for how you use the data and for following ALDI's terms and the law that applies to you. This is general information, not legal advice. ALDI is a trademark of ALDI Stores; this actor is independent and not affiliated with it.

### Integrations

- **Google Sheets**: send each run's products to a sheet with Apify's Google Sheets integration; one row per product fits a sheet as is.
- **Clay, Make, Zapier and n8n**: call the actor once per record with a product link or SKU, or start a category run and read its dataset, for example "ALDI WA fresh produce price changes every morning to Slack".
- **Webhooks**: have Apify call your URL when a run succeeds, then fetch the dataset.
- **API and SDKs**: run it from Python or JavaScript with the Apify client, or with a plain HTTP call (see "Copy to your AI assistant" above).
- **MCP clients**: Claude, ChatGPT, Cursor and VS Code can run it as a tool through the connector URL in the FAQ.

### More from The Mine Works

**E-commerce and marketplaces**

- [Ozon.ru Scraper](https://apify.com/themineworks/ozon-product-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [⭐ Amazon Reviews Scraper](https://apify.com/themineworks/amazon-reviews?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Amazon Product Scraper](https://apify.com/themineworks/amazon-products?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Etsy Listings Scraper](https://apify.com/themineworks/etsy-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [AliExpress Scraper](https://apify.com/themineworks/aliexpress-products?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Kleinanzeigen.de Scraper](https://apify.com/themineworks/kleinanzeigen-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Carsales.com.au Scraper](https://apify.com/themineworks/carsales-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [eBay Product Listings Scraper](https://apify.com/themineworks/ebay-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Shopify Store Scraper](https://apify.com/themineworks/shopify-store-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [🛒 TikTok Shop Scraper](https://apify.com/themineworks/tiktok-shop-products?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Walmart Product & Price Scraper](https://apify.com/themineworks/walmart-product-price-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Vinted Scraper](https://apify.com/themineworks/vinted-listings-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Social media and video**

- [Threads Scraper](https://apify.com/themineworks/threads-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Reddit Scraper](https://apify.com/themineworks/reddit-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Threads Search Scraper](https://apify.com/themineworks/threads-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Instagram Profile Scraper](https://apify.com/themineworks/instagram-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Leads and business directories**

- [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Skip Trace Lookup](https://apify.com/themineworks/skip-trace-lookup?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Maps Email Scraper](https://apify.com/themineworks/maps-leads?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [2GIS Places Scraper](https://apify.com/themineworks/2gis-places-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Marketing, SEO and reviews**

- [Facebook Ad Library Scraper](https://apify.com/themineworks/meta-ad-library-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Ads Transparency Scraper](https://apify.com/themineworks/google-ads-transparency?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Similarweb Scraper](https://apify.com/themineworks/similarweb-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google News Scraper](https://apify.com/themineworks/google-news?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**LinkedIn**

- [LinkedIn Company Scraper](https://apify.com/themineworks/linkedin-company-details?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Post Scraper](https://apify.com/themineworks/linkedin-post-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Employees Scraper](https://apify.com/themineworks/linkedin-employees?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Profile Scraper](https://apify.com/themineworks/linkedin-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Real estate**

- [Zillow Rentals Scraper](https://apify.com/themineworks/zillow-rental-listings?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zillow Sold Comps Scraper](https://apify.com/themineworks/zillow-recently-sold?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [India Real Estate MCP](https://apify.com/themineworks/india-real-estate-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Housing.com Scraper](https://apify.com/themineworks/housing-com-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Science, health and government data**

- [Academic Research MCP](https://apify.com/themineworks/academic-research-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [CourtListener Scraper](https://apify.com/themineworks/courtlistener-court-records?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Socrata Open Data Scraper](https://apify.com/themineworks/socrata-open-data?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [OpenAlex Scraper](https://apify.com/themineworks/openalex-scholarly-works?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Jobs and hiring**

- [Foundit Monster India Jobs](https://apify.com/themineworks/foundit-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Hirist Jobs Scraper](https://apify.com/themineworks/hirist-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [India Jobs MCP](https://apify.com/themineworks/india-jobs-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Naukri Jobs Scraper](https://apify.com/themineworks/naukri-jobs?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Company and business data**

- [Company Domain Finder](https://apify.com/themineworks/company-domain-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GST Taxpayer Lookup](https://apify.com/themineworks/gst-taxpayer-lookup?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Company KYB Resolver](https://apify.com/themineworks/company-identity-resolver?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [SEC EDGAR Filings Scraper](https://apify.com/themineworks/sec-edgar-filings?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Food and local services**

- [NoBroker Scraper](https://apify.com/themineworks/nobroker-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Swiggy Restaurant Scraper](https://apify.com/themineworks/swiggy-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zomato Scraper](https://apify.com/themineworks/zomato-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Developer and AI tools**

- [Website to Markdown Crawler](https://apify.com/themineworks/rag-crawler?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Skill Finder](https://apify.com/themineworks/github-skill-discovery?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Repo Scraper](https://apify.com/themineworks/github-repo-intelligence?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Trending Scraper](https://apify.com/themineworks/github-trending-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**More tools**

- [G2 Reviews Scraper](https://apify.com/themineworks/g2-reviews-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Naver Blog Scraper](https://apify.com/themineworks/naver-blog-posts-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [WeChat Article Scraper 微信公众号文章](https://apify.com/themineworks/wechat-article-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Taobao Products Scraper 淘宝 天猫](https://apify.com/themineworks/taobao-products-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

### Support

Found a search that returns fewer products than aldi.com.au, or a field that comes back empty when the site shows it? Open an issue in the Issues tab with the input and the run ID, and we will look at it. For a field you need or a new source, email dmineworks@gmail.com.

*Search ALDI Australia by keyword, category, Special Buys or SKU and get every product back as one row, with price, unit price, promotion flags, Special Buys dates and the prices of the states you choose, no login.*

# Actor input Schema

## `searchQueries` (type: `array`):

Products as you would type them in the aldi.com.au search box, one per line. Example: milk, coffee pods, nappies. Each keyword reads ALDI's search results, 60 per call, up to Max products per keyword. A search link (https://www.aldi.com.au/results?q=milk) works here too. Up to 100 searches per run.

## `categories` (type: `array`):

ALDI categories by name (Milk, Dairy, Eggs & Fridge), slug (dairy-eggs-fridge/milk), ID (1111111160) or link (https://www.aldi.com.au/products/dairy-eggs-fridge/milk/k/1111111160). A top category includes its subcategories. The promotion groups work too: Lower Prices, Super Savers, Limited Time Only. Write all to read the full catalogue.

## `fullCatalogue` (type: `boolean`):

On: every product ALDI Australia lists (3,322 on 28 Oct 2026), 60 per call, each with its own category path. Max products per keyword does not limit it; use the run's max cost to cap the spend.

## `specialBuys` (type: `boolean`):

On: every Special Buys date and theme ALDI currently advertises (for example Wed 4 Nov: Liquor, Christmas Sweets), each product with its on sale date and theme. For one date or theme, paste its link in Product links instead (https://www.aldi.com.au/special-buys/2026-11-04?theme=Liquor).

## `productUrls` (type: `array`):

ALDI product links (https://www.aldi.com.au/product/choceur-milk-mouse-milk-chocolate-168g-000000000538441002) or SKUs (000000000538441002), 60 per call. Category, search and Special Buys links work here too. Built for one record at a time from Clay, n8n or an AI agent.

## `regions` (type: `array`):

ALDI prices fresh produce, meat and liquor by store. Give states (NSW, VIC, QLD, SA, WA, ACT), postcodes (6000) or ALDI store ids (G525), up to 10. A state or postcode uses the nearest ALDI store. Every search is read once per store and each row carries the store id, name and state. Empty: ALDI's default online prices.

## `maxItems` (type: `integer`):

The most products to return for each keyword, category or Special Buys link, per store, 1 to 10,000. The full catalogue, all Special Buys and product links are not limited by this. Example: 500.

## `sortBy` (type: `string`):

Order of the results, as on aldi.com.au. Empty: relevance for keywords, name A to Z for categories, the catalogue and Special Buys (stable between runs).

## `promotionFlags` (type: `boolean`):

On: each row says which of ALDI's promotion groups the product is in (promotions, lower_price, super_saver, limited_time_only, on_promotion). ALDI shows these groups as categories, not on the product, so the actor reads the three groups once per store (about 12 calls). No extra charge.

## `includeDetails` (type: `boolean`):

On: one extra call per product for the description, ingredients, allergens, nutritional claims, storage and usage instructions and country of origin. The nutrition and ingredients panel images come on every row without this. No extra charge, but the run takes longer.

## `includeStoreStock` (type: `boolean`):

On, with regions: each Special Buys row gets the stock level ALDI shows for that store (green, yellow, orange or red, and text such as Low/no stock). ALDI publishes store stock for Special Buys only. One extra call per Special Buy.

## `monitorMode` (type: `boolean`):

On: the actor remembers the last price of every product it delivered (per store, under the monitor name) and returns only products whose price or was price changed, with previous_price, price_change and price_change_percent, plus new products. Unchanged products are not delivered and not charged. Run it on a schedule with the same input.

## `monitorName` (type: `string`):

Keeps separate price memories for separate watch lists, for example dairy-wa. Letters, numbers and dashes. Only used in monitor mode.

## `monitorWatch` (type: `string`):

Price: price and was price only. All: also a product moving in or out of Lower Prices, Super Savers or Limited Time Only, and a change of its Special Buys label (On Sale Wed 04 Nov to While Stocks Last).

## `includeNewProducts` (type: `boolean`):

On: products the monitor has not seen before are returned with change_type new (on the first run, that is every product). Off: they are saved as the baseline and not returned or charged, so the first run costs nothing per product.

## `proxyConfiguration` (type: `object`):

Apify datacenter proxy by default, which ALDI answered on every call in our tests.

## Actor input object example

```json
{
  "searchQueries": [
    "milk"
  ],
  "fullCatalogue": false,
  "specialBuys": false,
  "maxItems": 30,
  "promotionFlags": true,
  "includeDetails": false,
  "includeStoreStock": false,
  "monitorMode": false,
  "monitorName": "default",
  "monitorWatch": "price",
  "includeNewProducts": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchQueries": [
        "milk"
    ],
    "maxItems": 30,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("themineworks/aldi-australia-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchQueries": ["milk"],
    "maxItems": 30,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("themineworks/aldi-australia-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQueries": [
    "milk"
  ],
  "maxItems": 30,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call themineworks/aldi-australia-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,themineworks/aldi-australia-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/l0sMwbIWlvtJQT4rq/builds/7szWYtFWfafPWQidk/openapi.json
