ALDI Australia Scraper: Prices, Special Buys, State Prices
Pricing
from $1.62 / 1,000 products
ALDI Australia Scraper: Prices, Special Buys, State Prices
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.
Pricing
from $1.62 / 1,000 products
Rating
0.0
(0)
Developer
The Mine Works
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
From The Mine Works, makers of Home Depot Scraper and B2B Leads Finder, 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
regionssuch asWAandVICand every row carries the price of that store withstore_id,store_nameandstore_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_priceandunit_price_unit(2.38per100 g),pack_size,was_pricewhen 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 NovorWhile 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
monitorModeon and you get only the products whose price changed since the last run, withprevious_price,price_changeandprice_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.
Part of The Mine Works E-commerce and marketplaces family: Ozon.ru Scraper, ⭐ Amazon Reviews Scraper, Amazon Product Scraper, Etsy Listings Scraper, AliExpress Scraper, Kleinanzeigen.de Scraper.
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:
{"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
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 bymonitorName. - 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
{"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
{"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
{"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
{"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
{"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
{"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
skuis ALDI's own 18 digit product number with leading zeros. Keep it as text and feed it back intoproductUrlsunchanged.store_idplusskuidentifies one price. Without regions,store_idis absent andprice_scopeisdefault.availabilityis one ofregular_range,special_buy_upcoming,special_buy_on_sale,special_buy_while_stocks_last,discontinued.change_type(monitor mode) is one ofnew,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:
{"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:
{"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:
{"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:
{"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):
{ "_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:
{"_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
includeNewProductsis 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
- Open the actor in Apify Console, set your input and click Save as a new task.
- 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).
- Turn on
monitorModeto get only the price changes each time, or leave it off and compare runs onskuandstore_idyourself. - 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
- ⭐ Amazon Reviews Scraper
- Amazon Product Scraper
- Etsy Listings Scraper
- AliExpress Scraper
- Kleinanzeigen.de Scraper
- Carsales.com.au Scraper
- eBay Product Listings Scraper
- Shopify Store Scraper
- 🛒 TikTok Shop Scraper
- Walmart Product & Price Scraper
- Vinted Scraper
Social media and video
Leads and business directories
Marketing, SEO and reviews
Real estate
Science, health and government data
Jobs and hiring
Company and business data
Food and local services
Developer and AI tools
More tools
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.

