Coles, Woolworths, ALDI Scraper — Australian Supermarket Prices
Pricing
from $0.70 / 1,000 products
Coles, Woolworths, ALDI Scraper — Australian Supermarket Prices
Australian supermarket prices from Coles, Woolworths and ALDI: price, was-price, unit price, specials and multi-buys, stock, brand, size, category, barcode and image by search, category, specials list or product. Price tracker mode returns only changes.
Pricing
from $0.70 / 1,000 products
Rating
0.0
(0)
Developer
Dustin Griffie
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
2
Monthly active users
9 days ago
Last modified
Categories
Features
Share
Get Australian supermarket prices from Coles, Woolworths and ALDI Australia in one run, through the Apify UI or as an API. For every product you get the shelf price, was-price, unit price, special or multi-buy offer, availability, brand, pack size, category, image and link. Search all three supermarkets for the same terms to compare prices, pull a whole category or the weekly specials, or use it as a price tracker: watch a list of products and get only the prices that changed.
Australian supermarket price scraper use cases
- Compare prices for "milk", "coffee beans" or any search term at Coles, Woolworths and ALDI side by side.
- Download a category such as Coles Pantry, Woolworths Dairy, Eggs & Fridge or ALDI Freezer: paste the category URL.
- Get this week's specials: half-price, price drops and multi-buys, with the saving and promo text.
- Look up specific products by URL or ID (
coles:7265535,woolworths:88436,aldi:000000000000399309). - Monitor prices: schedule the same input daily or weekly. Monitor mode returns only products whose price, was-price, special or stock changed, and you pay only for those.
Ready-to-run example tasks (open one and click Start):
| Example task | What it does |
|---|---|
| Australian milk prices: every brand at the big three | Milk at all three chains, with price, was-price and unit price per litre side by side |
| Get this week's Coles specials | Coles' current specials with the saving and promo text |
| Download the ALDI Australia pantry range | A whole ALDI category with prices and unit prices |
| Monitor grocery price changes weekly | Only the products whose price or special changed since last week |
| Woolworths specials across every department | Half-price, Prices Dropped and multi-buys from every Woolworths department |
| ALDI Super Savers and Limited Time Only deals | ALDI Super Savers and Limited Time Only lines with price and unit price |
| Price a 10-item family basket at all three supermarkets | Ten staples searched at all three chains, top matches with price and unit price |
| Watch exact products by ID and get only price changes | Exact product IDs or links; each run returns only price, special or stock changes |
| Woolworths drinks department with EAN barcodes | Woolworths drinks with EAN barcode, brand, size, price and unit price |
| The Coles pet aisle: food and care prices | The Coles pet aisle — food, litter and care — with price, was-price and unit price |
Other uses: grocery price comparison apps and websites, CPI and food-inflation research, brand and category managers checking shelf prices and promotions, deal and coupon sites, and household budgeting tools.
How to scrape Coles, Woolworths and ALDI prices
- Pick the supermarkets.
- Enter search terms and/or paste Coles, Woolworths or ALDI URLs (search, category, specials or product pages), or product IDs.
- Optional: tick Specials only, turn on All current specials, or turn on the Price-change monitor.
- Click Start, then download the results as JSON, CSV or Excel, or read them through the API.
Input
| Field | What it does |
|---|---|
retailers | Any of coles, woolworths, aldi. Search terms run at each selected supermarket. |
searchTerms | Words to search for, e.g. milk, coffee beans, nappies. |
startUrls | Coles, Woolworths or ALDI URLs: search results, category (/browse/..., /shop/browse/..., /products/.../k/...), specials (/on-special, /shop/browse/specials) or a product page. |
productIds | coles:<id>, woolworths:<stockcode>, aldi:<sku>. A bare number works when only one supermarket is selected. |
scrapeSpecials | Adds each selected supermarket's specials list (Coles On Special, every Woolworths department's specials, ALDI Super Savers and Limited Time Only). |
specialsOnly | Keep only products that are on special (for searches and categories). |
maxItemsPerTarget | Products per search term, category or specials list (default 100). In monitor mode this counts products checked. |
maxItems | Hard limit for the whole run (0 = none). |
includeSponsored | Keep the sponsored placements Woolworths mixes into results (off by default). |
monitorMode, monitorIncludeNew, monitorStoreName | Price-change monitor (see below). |
proxyConfiguration, fallbackToResidential | Apify datacenter proxy by default, with an automatic switch to Australian residential proxies if a supermarket keeps blocking. |
Example:
{"retailers": ["coles", "woolworths", "aldi"],"searchTerms": ["milk", "coffee beans"],"startUrls": [{ "url": "https://www.coles.com.au/browse/pantry" }],"productIds": ["woolworths:88436"],"maxItemsPerTarget": 50}
Coles, Woolworths and ALDI data output example
One row per product. This Woolworths row comes from a real run on November 3, 2026 (search milk at all three supermarkets), shown in full:
{"recordType": "product","retailer": "woolworths","productId": "88436","name": "Dairy Farmers Full Cream Milk 2L","brand": "Dairy Farmers","size": "2L","price": 4.2,"wasPrice": 4.7,"savingsAmount": 0.5,"isOnSpecial": true,"promoType": "SPECIAL","promoText": "Save $0.50","multibuy": null,"unitPrice": 2.1,"unitPriceText": "$2.10 / 1L","unitMeasure": "1L","isAvailable": true,"availabilityText": "Available","category": "Dairy Farmers","categoryPath": "Dairy, Eggs & Fridge > Dairy > Dairy Farmers","barcode": "9310199012717","imageUrl": "https://cdn1.woolworths.media/content/wowproductimages/large/088436.jpg","url": "https://www.woolworths.com.au/shop/productdetails/88436/dairy-farmers-full-cream-milk-full-cream-milk","searchQuery": "milk","sourceType": "search","position": 7,"scrapedAt": "2026-11-04T05:21:01.785Z"}
Rows from Coles and ALDI in the same run have the same fields (selected fields shown):
[{"retailer": "coles", "productId": "1062455", "name": "Strawberry Flavoured Milk", "brand": "Oak", "size": "750 mL", "price": 3.9, "wasPrice": 4.9, "isOnSpecial": true, "promoText": "save $1.00", "unitPriceText": "$5.20/ 1L", "isAvailable": true, "url": "https://www.coles.com.au/product/oak-strawberry-flavoured-milk-750-ml-1062455"},{"retailer": "aldi", "productId": "000000000538441002", "name": "Milk Mouse - Milk Chocolate 168g", "brand": "CHOCEUR", "size": "168 g", "price": 3.99, "wasPrice": null, "isOnSpecial": false, "promoText": null, "unitPriceText": "$2.38 per 100 g", "isAvailable": true, "url": "https://www.aldi.com.au/product/choceur-milk-mouse-milk-chocolate-168g-000000000538441002"}]
Key output fields
| Field | What it contains |
|---|---|
retailer, productId, name, brand, size | The supermarket (coles, woolworths, aldi) and the product |
price, wasPrice, savingsAmount | Shelf price in AUD and the saving when it's on special |
isOnSpecial, promoType, promoText, multibuy | Special or multi-buy offer, such as Buy 2 for $6 |
unitPrice, unitPriceText, unitMeasure | The supermarket's comparison price, for example $2.10 / 1L |
isAvailable, availabilityText | Whether it can be bought online now |
category, categoryPath, barcode | Category and (Woolworths only) the barcode |
imageUrl, url | Product image and product page |
changeType, previousPrice, priceChange, priceChangePct | Monitor mode only: what changed since the last run |
- Prices are in AUD.
wasPriceandsavingsAmountare set only when the supermarket shows a saving.multibuyholds offers like Buy 2 for $6 as{ "quantity": 2, "unitPrice": 3, "text": "Buy 2 for $6" }(unitPrice= price each when you buy the quantity). unitPriceis the supermarket's comparison price forunitMeasure(for example per 1L, 100g or 1EA).barcodeis only published by Woolworths.- In monitor mode each row also has
changeType(new,price,wasPrice,special_started,special_ended,promo,back_in_stock,unavailable),previousPrice,priceChangeandpriceChangePct.
Status rows (recordType: "status") explain every input that gave no products: invalid, not_found, no_results, partial or failed, with a message. They are free. Run totals, request counts and the proxy used per supermarket are in the RUN_STATS key-value record.
The Output tab has ready-made views: Products, Specials, Price changes (monitor) and Statuses.
Price-change monitor
Turn on monitorMode and schedule the same input (for example weekly). The Actor remembers the last price of every product in a named key-value store (monitorStoreName). Each run returns only:
- products whose price, was-price, special/promo or availability changed, with the previous price and the change, and
- products seen for the first time (turn off
monitorIncludeNewto skip them).
Unchanged products are not saved and not charged. Use a different monitorStoreName for each watch list.
How much does it cost to scrape Coles, Woolworths and ALDI?
Pay per event: you pay only for products saved to the dataset.
| Event | Free | Starter | Scale | Business and up |
|---|---|---|---|---|
product: one product row | $0.001 | $0.0009 | $0.0008 | $0.0007 |
| Actor start | $0.00005 | $0.00005 | $0.00005 | $0.00005 |
Example: 1,000 products cost $1.00 on the Free plan and $0.70 on the Business plan. Status rows, duplicates, skipped sponsored items and unchanged products in monitor mode are free. The Actor respects your Max cost per run and stops cleanly at the limit without saving anything it can't charge for.
Tips & limits
- Prices are the supermarkets' national online prices with no store or postcode selected. In-store prices and some regional prices (for example in WA, NT or Tasmania) can differ. Store- or postcode-specific pricing is not supported.
- ALDI prices are the ALDI Australia website's walk-in (in-store) prices. ALDI rarely shows was-prices. ALDI Special Buys (weekly non-food deals) pages aren't supported; Super Savers and Limited Time Only are.
- Woolworths mixes sponsored products into results. They are skipped by default so they don't repeat across searches; turn on
includeSponsoredto keep them (markedisSponsored: true). - Coles category pages list specials first, so a capped category run is weighted toward specials. Raise
maxItemsPerTargetto get the whole category. - A product found by several inputs is saved (and charged) once per run.
- Speed: about 1,000 products per 30–50 seconds with the default settings.
Legal & disclaimer
This Actor reads publicly available product and price information from coles.com.au, woolworths.com.au and aldi.com.au, the same data any visitor sees without signing in. It is not affiliated with, endorsed by or sponsored by Coles Group, Woolworths Group or ALDI. "Coles", "Woolworths" and "ALDI" are trademarks of their owners and are used only to describe the data source.
You are responsible for using the data lawfully and in line with each website's terms of use and the laws that apply to you. Keep request volumes reasonable, don't republish product images or descriptions as your own, and don't use the data to mislead consumers. Prices change often; always check the supermarket's website before relying on a price. If in doubt, ask a lawyer.
FAQ about scraping Australian supermarket prices
How much does it cost per 1,000 products? $1.00 per 1,000 products on the Free plan, $0.90 on Starter, $0.80 on Scale and $0.70 on Business and up. For example, the whole ALDI range (about 3,300 products) costs about $3.30 on the Free plan. In monitor mode you pay only for products that changed, so a weekly watch list of 500 products where 50 change costs about $0.05 a week.
Do I need a proxy? No setup is needed. The Actor uses Apify's datacenter proxy (included in the price) and switches to Australian residential proxies automatically if a supermarket starts blocking (keep Fall back to residential proxies on).
Can I get every product a supermarket sells? Yes: run its top-level categories with a high maxItemsPerTarget. For example, the whole ALDI range is about 3,300 products.
How do I schedule a weekly price check? Save your input as a task, turn on the Price-change monitor and add an Apify schedule, for example every Wednesday when the new specials start. Each run returns only what changed, and you can get the results by email, webhook, Make, Zapier or n8n.
What are the limits? Prices are the national online prices with no store or postcode selected, so in-store and some regional prices (WA, NT, Tasmania) can differ. ALDI Special Buys pages aren't supported. Barcodes are only published by Woolworths. Speed is about 1,000 products per 30–50 seconds.
How do I export the data? From the Output tab or the API, as JSON, CSV, Excel, XML or HTML. Each view (Products, Specials, Price changes) can be exported on its own.
Which integrations work? The Apify REST API, the Python and JavaScript clients, Make, Zapier, n8n, Google Sheets or Google Drive exports, webhooks and the Apify MCP server for AI agents.
Why is a product missing, or why did I get a status row? A product may be out of the national online range, sponsored (Woolworths, skipped by default) or already saved by another input in the same run. no_results means the search found nothing at that supermarket, not_found means a product ID or URL doesn't exist any more, and invalid means a URL isn't a supported Coles, Woolworths or ALDI page. Status rows are free.
How is it different from other supermarket scrapers? One run covers Coles, Woolworths and ALDI with the same fields, so the prices are comparable without extra work. It has a built-in price-change monitor, and you pay per product saved, with status rows, duplicates and unchanged products free.
Is it legal to scrape supermarket prices? The Actor reads publicly available product and price information, the same data any visitor sees without signing in. Scraping public data is generally allowed in Australia and many other countries, but terms and laws differ, so see Legal & disclaimer above and check the rules that apply to you.