Grocery & delivery
ALDI Australia Scraper
aldi.com.au
ALDI Australia does not sell groceries online, but aldi.com.au lists its range with the prices you pay in store and announces each Special Buys drop before its sale date. A dedicated plugin endpoint reads the same JSON the ALDI website loads and returns products already parsed. mode=search takes a query, and mode=category a category link or key, including ALDI's Lower Prices, Super Savers and Limited Time Only groups. mode=specials lists one Special Buys drop, the current one or the one on a date you pass, optionally narrowed to one theme such as Gardening, together with every drop ALDI has announced and its themes. Each product comes with its SKU, name, brand, size and link, the price and any was-price, the unit price, the bottle deposit where one applies, the Special Buys on-sale date, badges, availability, an online-sale flag, an age-restricted flag, the image and its categories. Sort by relevance, price or name, and collect up to 600 products per call at 60 per page. mode=product takes a SKU or product link and adds the description, ingredients, allergens, claims, storage and usage, country of origin and all images. Prices are ALDI's in-store prices in AUD. No ALDI account, login or API key is involved.
What you can extract
- SKU, name, brand, size and product link
- Price as a number and as shown, was-price, and the unit price (for example $1.70 per 1 L)
- Bottle deposit where one applies, badges, availability, online-sale and age-restricted flags
- Image, categories and category keys
- Search and category listings, including ALDI's Lower Prices, Super Savers and Limited Time Only groups, sorted by relevance, price or name; up to 600 products per call
- Special Buys: the products of one drop with their on-sale date, narrowed by theme, plus every announced drop with its themes
- Product detail: description, ingredients, allergens, claims, storage, usage, country of origin and all images
Dedicated endpoints
/groceries/aldi-au ALDI Australia search, categories, Special Buys and products
mode=search with query, mode=category with category (a category link or key) and mode=specials (category is a Special Buys date or link, blank for the current drop, and theme narrows it) return products with id (SKU), name, brand, size, url, price, priceText, wasPrice, currency (AUD), onSale, unitPrice (price, per, text), bottleDeposit, specialBuy (on-sale date and label), badges, available, soldOnline, ageRestricted, image, categories and categoryKeys, plus totalResults, totalPages and nextPage; mode=specials adds promotions, every drop ALDI has announced with its themes. sort is relevance, price_asc, price_desc, name_asc or name_desc, and max_results (1-600, 60 per page) with page pages through. mode=product with product (a SKU or link) returns product with description, ingredients, allergens, claims, storage, usage, countryOfOrigin and images. Prices are ALDI's in-store prices.
How to scrape it
curl -X POST \
-H "X-ScrapeUnblocker-Key: $SU_API_KEY" \
"https://api.scrapeunblocker.com/groceries/aldi-au?mode=search&query=milk"import requests
resp = requests.post(
"https://api.scrapeunblocker.com/groceries/aldi-au",
headers={"X-ScrapeUnblocker-Key": SU_API_KEY},
params={"mode": "search", "query": "milk"},
)
print(resp.text)import { ScrapeUnblockerClient } from 'scrapeunblocker';
const su = new ScrapeUnblockerClient({ apiKey: process.env.SU_API_KEY });
const results = await su.aldiAuSearch('milk', { sort: 'price_asc' });
const product = await su.aldiAuProduct('000000000000398691');
console.log(results);
console.log(product); Requests are POST and take their parameters in the query string. Browser rendering always happens - there is no flag to enable.
Example response
{
"mode": "search",
"query": "milk",
"category": null,
"specialBuys": null,
"sort": "relevance",
"totalResults": 89,
"totalPages": 2,
"page": 1,
"pageSize": 60,
"nextPage": 2,
"resultsCollected": 60,
"products": [
{
"id": "000000000000398691",
"name": "Light Milk 2L",
"brand": "FARMDALE",
"size": "2 l",
"url": "https://www.aldi.com.au/product/farmdale-light-milk-2l-000000000000398691",
"price": 3.39,
"priceText": "$3.39",
"wasPrice": null,
"currency": "AUD",
"onSale": false,
"savings": null,
"unitPrice": { "price": 1.7, "per": "1 L", "text": "$1.70 per 1 L" },
"bottleDeposit": null,
"specialBuy": null,
"badges": [],
"available": true,
"soldOnline": false,
"ageRestricted": false,
"image": "https://dm.apac.cms.aldi.cx/is/image/aldiprodapac/product/jpg/scaleWidth/1000/93645b60-eb11-4046-b28e-2b441f8585a4/farmdale-light-milk-2l",
"categories": [ "Dairy, Eggs & Fridge", "Milk" ],
"categoryKeys": [ "960000000", "1111111160" ]
},
{
"id": "000000000000398689",
"name": "Full Cream Milk 2L",
"brand": "FARMDALE",
"size": "2 l",
"url": "https://www.aldi.com.au/product/farmdale-full-cream-milk-2l-000000000000398689",
"price": 3.39,
"priceText": "$3.39",
"wasPrice": null,
"currency": "AUD",
"onSale": false,
"savings": null,
"unitPrice": { "price": 1.7, "per": "1 L", "text": "$1.70 per 1 L" },
"bottleDeposit": null,
"specialBuy": null,
"badges": [],
"available": true,
"soldOnline": false,
"ageRestricted": false,
"image": "https://dm.apac.cms.aldi.cx/is/image/aldiprodapac/product/jpg/scaleWidth/1000/a17bcc6d-7a5f-49b9-adeb-224d162553d4/farmdale-full-cream-milk-2l",
"categories": [ "Dairy, Eggs & Fridge", "Milk" ],
"categoryKeys": [ "960000000", "1111111160" ]
}
],
"pagesFetched": 1,
"spellingSuggestion": null
} Frequently asked questions
Is it legal to scrape ALDI Australia?
Collecting publicly available ALDI Australia data such as product names, prices, unit prices and Special Buys is lawful in many jurisdictions, but the rules depend on your country, the data you collect and how you use it. ScrapeUnblocker returns the public product data; what you collect and how you use it is your responsibility.
How do I scrape ALDI Australia without getting blocked?
ALDI's catalogue API, the one the aldi.com.au website loads its products from, answers plain HTTP clients from any country, so the /groceries/aldi-au plugin asks it directly from ISP exits spread over every country ScrapeUnblocker has, not a few Australian IPs. A refused or failed request moves to a fresh session on another exit, and when none answers, the request comes through the full chain behind /getPageSource. No browser is involved. In ScrapeUnblocker's benchmark it returned data on 100% of 1,057 calls (searches with a different term each and product pages), about 1.2s per call.
What ALDI Australia data can I get?
For each product in a search, category or Special Buys listing: the SKU, name, brand, size and link, the price as a number and as ALDI shows it, any was-price, the unit price, the bottle deposit where one applies, the Special Buys on-sale date and label, badges, availability, online-sale and age-restricted flags, the image, its categories and category keys. mode=product adds the description, ingredients, allergens, claims, storage, usage, country of origin and all images.
How do I get ALDI Special Buys?
Call mode=specials. With no category it lists the current Special Buys drop; pass a drop's date (such as 2026-10-14) or its aldi.com.au/special-buys link as category for another, and theme, such as Gardening, to keep one theme of it. The answer also carries promotions, every drop ALDI has announced with its date and themes, so you can see what is coming and ask for it. A date with no drop answers 404.
Are these ALDI online prices or in-store prices?
In-store prices. ALDI Australia does not sell groceries online, so the prices on aldi.com.au, and in the plugin's answers, are the prices ALDI charges in its stores, in AUD. ALDI answers every country ScrapeUnblocker has exits in, so no Australian address is needed: leave proxy_country blank to spread the load, or set it, for example AU, to pin one.
How much does it cost to scrape ALDI Australia?
Each listing page fetched is billed as one request: ALDI serves 60 products per page, so the default search is 1 request and max_results=600 up to 10, and pagesFetched shows the exact number. A product is one request. 1 request = 1 credit, EUR 1.00 per 1,000 on pay as you go, down to about EUR 0.55 per 1,000 on the Ultimate plan. Blocks and timeouts are not billed, and the free trial includes 500 requests with no card.
Related scrapers
ALDI Australia and other names and marks of aldi.com.au belong to their owner and are used here only to identify the website this API works with. ScrapeUnblocker is an independent service, not affiliated with, endorsed by or sponsored by the owner of aldi.com.au.
Start scraping this site today
Free tier included. No credit card required to test it.