Coles, Woolworths, Aldi & IGA Prices Scraper (Australia)
Pricing
from $0.50 / 1,000 products
Coles, Woolworths, Aldi & IGA Prices Scraper (Australia)
Australian supermarket prices from Coles, Woolworths, Aldi and IGA in one table: search, categories or the full catalog, specials (half price, multibuy), watchlists, store prices, barcodes and a changed-only price watcher. No login, no browser.
Pricing
from $0.50 / 1,000 products
Rating
0.0
(0)
Developer
Jay Novello
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
0
Monthly active users
a day ago
Last modified
Categories
Share
Australian supermarket prices from Coles, Woolworths, Aldi and IGA in one run and one table. Search by keyword, crawl a category or the whole catalog, pull every half-price and multibuy special, price-check a watchlist, get store-specific prices, and add barcodes, ingredients and nutrition panels. A built-in price watcher outputs only what changed since the last run. No login, no browser, no API key. $0.50 per 1,000 products, with no per-run fee and no compute charges on top.
Real example
Run on Apify on October 14, 2026 (07:53 UTC). Search mode, keyword full cream milk 2l, all four retailers, 6 products each, Coles store 357 (North Perth), product details on. It finished in 23 seconds and returned 24 products, every one with a barcode or nutrition data where the retailer publishes it.
| Retailer | # | Product | Size | Price | Unit price | Store | Barcode |
|---|---|---|---|---|---|---|---|
| Coles | 1 | Coles Full Cream Milk | 2L | $3.40 | $1.70 per 1L | Coles North Perth | 9300601186938 |
| Coles | 3 | Masters Full Cream Milk | 2L | $4.30 | $2.15 per 1L | Coles North Perth | 9310232957012 |
| Woolworths | 1 | Woolworths Full Cream Milk | 2L | $3.40 | $1.70 per 1L | national online price | 9300633556143 |
| Woolworths | 6 | Pauls Zymil Lactose Free Full Cream Milk | 2L | $5.95 (was $6.90, price drop) | $2.98 per 1L | national online price | 9310036048985 |
| Aldi | 1 | Full Cream Milk 2L | 2L | $3.39 | $1.70 per 1L | national shelf price | (Aldi publishes none) |
| Aldi | 4 | Lactose Free Full Cream Milk 2L | 2L | $4.79 | $2.40 per 1L | national shelf price | (Aldi publishes none) |
| IGA | 3 | Pauls Full Cream Milk | 1L | $2.50 (was $2.60) | $2.50 per 1L | Ashcroft's IGA Erskine Park | (IGA publishes none) |
| IGA | 4 | A2 Milk Full Cream Milk | 3L | $10.50 | $3.50 per 1L | Ashcroft's IGA Erskine Park | (IGA publishes none) |
House-brand 2L milk came out within a cent everywhere: Aldi $3.39, Coles $3.40 and Woolworths $3.40. Unit prices come in one format for every retailer (unitPrice plus unitOfMeasure such as 1L, 100g, 1kg or each), so you can sort a mixed table directly.
Other runs on the same day:
- Half-price specials at Coles, Woolworths and IGA, 200 each: 600 products in 46 seconds. The deepest cuts were a Philips Sonicare toothbrush at Coles ($35, was $70) and an Oral-B Pro Expert at Woolworths ($59.50, was $119).
- Load test: the whole Dairy, Eggs & Fridge category at Coles (2,265 products) and Woolworths (1,726) in 3 minutes 34 seconds, 103 requests, no blocks.
- Price watcher:
milkandtim tamsat all four retailers. The first run output 138 products markednew; the second run a few minutes later output nothing, skipped 138 unchanged products and charged $0.
One full row from the first run (nutrition cut to 3 of 10 lines):
{"type": "product","retailer": "coles","productId": "439693","name": "Coles Full Cream Milk","brand": "Coles","size": "2L","price": 3.4,"wasPrice": null,"saving": null,"isOnSpecial": false,"specialType": null,"promoText": null,"unitPrice": 1.7,"unitOfMeasure": "1L","unitPriceText": "$1.70 per 1L","inStock": true,"barcode": "9300601186938","categories": ["Dairy, Eggs & Fridge", "Milk", "Full Cream Milk"],"imageUrl": "https://cdn.productimages.coles.com.au/productimages/4/439693.jpg","url": "https://www.coles.com.au/product/coles-full-cream-milk-2l-439693","storeId": "357","storeName": "Coles North Perth","priceScope": "store","currency": "AUD","searchQuery": "full cream milk 2l","position": 1,"details": {"barcode": "9300601186938","description": "Coles Australian Dairy Full Cream Milk, 2L. Fresh full cream milk sourced from Australian farmers for wholesome goodness. Better together with Australian Farmers.","ingredients": "Homogenised and Pasteurised Full Cream Milk","allergens": "Contains Milk","nutrition": [{"name": "Energy (kJ)", "per100": "260 kJ", "perServing": "650 kJ"},{"name": "Protein", "per100": "3.5 g", "perServing": "8.75 g"},{"name": "Sugars - Total", "per100": "4.4 g", "perServing": "11 g"}],"servingSize": "250mL","servingsPerPack": "8.00","countryOfOrigin": "Australian Milk"},"scrapedAt": "2026-10-14T07:53:52Z"}
What you can do
| Mode | Input | Output |
|---|---|---|
search | Keywords, e.g. milk, tim tams, nappies size 4 | Products in each retailer's own ranking (position) |
category | Category names, IDs or URLs, or all for the full catalog | Every product in the category, de-duplicated |
specials | all, halfPrice, multibuy or onlineOnly | Products on special with was price, saving and promo text |
products | Product URLs or IDs (coles:439693, woolworths:888140, Woolworths barcodes) | A price check of your watchlist, in input order |
categories | Nothing | Each retailer's category tree with IDs and product counts |
stores | A postcode or suburb | Nearby stores with store IDs for store pricing |
Turn on Only changed prices and schedule the same input daily to get a feed of price drops, price rises, specials that started or ended, and stock changes. Each row then carries changeType, previousPrice and priceChange. Unchanged products are not output and not charged.
Retailer coverage
| Coles | Woolworths | Aldi | IGA | |
|---|---|---|---|---|
| Prices | Per store (default: Coles online store 7674, Melbourne) | National online price | National shelf price | Per store (default: 32600, Erskine Park NSW) |
Full catalog (all) | ~31,900 lines | 22,000+ lines (Everyday Market excluded) | ~3,250 lines incl. Special Buys | ~13,800 lines per store |
| Specials | half price, multibuy, online only, price drops | half price, multibuy, online only, lower shelf price | Special Buys (with on-sale date), Super Savers, Lower Prices | half price and % off, with start and end dates |
| Barcode | With product details, or in products mode | Always | Not published | Not published |
| Details | Ingredients, allergens, nutrition, country of origin | Ingredients, allergens, nutrition, health star rating | Description, ingredients, allergens | Ingredients, nutrition, allergens, country of origin |
| Stock | Yes | Yes | Not published | Yes |
| Store finder | Postcode or suburb | Postcode or suburb | Postcode or suburb | Postcode, suburb, state or all 536 stores |
Input examples
Compare one keyword across all four supermarkets:
{"mode": "search", "queries": ["milk", "bread", "eggs"], "maxItemsPerQuery": 50}
Every half-price product at Coles and Woolworths, unlimited:
{"mode": "specials", "specialsType": "halfPrice", "retailers": ["coles", "woolworths"], "maxItemsPerQuery": 0}
Daily price-change feed for a full category at one Coles store:
{"mode": "category", "retailers": ["coles"], "categories": ["Dairy, Eggs & Fridge"], "colesStoreId": "357","maxItemsPerQuery": 0, "onlyChanged": true, "watcherName": "coles-357-dairy"}
Watchlist with barcodes and nutrition:
{"mode": "products", "includeDetails": true,"products": ["https://www.coles.com.au/product/coles-full-cream-milk-2l-439693", "woolworths:888140", "iga:726347"]}
Pricing
Pay per event. Platform usage (compute, proxy, storage) is included.
| Event | Price | When |
|---|---|---|
| Product | $0.50 per 1,000 | Each product row output |
| Product details add-on | $1.00 per 1,000 | Only with Include product details, and only when details were found |
| Store or category | $0.50 per 1,000 | Each row in stores or categories mode |
| Actor start | $0.00005 | Once per run |
Examples: 1,000 products from a search or specials list cost $0.50. The whole Coles catalog (about 31,900 products) costs about $16. A daily watcher over 2,000 products where 150 change costs $0.08 a day. Error rows and blocked requests are never charged. Other Coles and Woolworths actors charge $1.00 to $6.00 per 1,000 results on the free plan, several of them plus a per-run fee.
Accuracy and limits
- Store prices. Coles and IGA prices depend on the store. Every row says which store the price is for (
storeId,storeName,priceScope). Woolworths and Aldi show one national online or shelf price to anonymous visitors, so their rows saypriceScope: "national". Woolworths store-level prices need a login and are not collected. - Small Coles stores. Coles Central and Coles Local Express stores have no online range; choosing one returns an uncharged error row. Pick a full-size supermarket from stores mode.
- Aldi sells in store only, so its rows have no stock flag, and Aldi publishes no barcodes. Aldi has no half-price, multibuy or online-only specials; those types return an uncharged error row for Aldi.
- Coles "other" specials. Coles lists some products as specials without a previous price; they come out with
specialType: "other"and nowasPrice. - Sponsored products appear in Coles and Woolworths results as they do on the website; each product appears once per list.
- Woolworths Everyday Market (over a million third-party listings) is left out unless you turn on Include Woolworths Everyday Market.
- Proxy. Coles blocks most direct connections from cloud servers, so keep the default Apify proxy on. When a site refuses repeatedly, the run stops that list with an error row instead of hanging, and keeps what was already delivered.
- Prices change during the day and specials usually change on Wednesdays.
scrapedAtis the time each row was read.
FAQ
Do I need an account at the supermarkets? No. The actor reads the same public prices any visitor sees, without a login.
How do I get prices for my local store? Run mode stores with your postcode, copy the Coles or IGA storeId, and put it in Coles store ID or IGA store ID.
How do I match the same product across retailers? Use barcode: Woolworths always has it and Coles has it with product details or in products mode. Otherwise match on brand, name and size.
Can I get a price history? Schedule the actor with Only changed prices on. Each run outputs only the changes, so the datasets together form the history. Use a different Watcher name per schedule.
Can I call it from code or an AI agent? Yes. For example:
curl -X POST "https://api.apify.com/v2/acts/varnmill~au-supermarket-prices/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"mode": "search", "queries": ["coffee beans"], "maxItemsPerQuery": 20}'
What if a search finds nothing or a product id is unknown? The run still succeeds and the dataset gets an uncharged error row that explains why, so schedules and integrations keep running. A run fails only when a supermarket blocks or errors and nothing comes back.
Do I have to set mode? Not if you fill only one kind of input. products, categories or location on their own select that mode, and product URLs typed into queries are price-checked as products. Common field names from other scrapers also work: query, keyword(s), searchTerms, productUrls, startUrls, category, postcode.
Something is wrong or missing? Open an issue on the actor page. Issues are checked daily.
Watcher scheduling: use a separate watcherName for each independent workflow and keep its filters/location consistent. Runs using the same name wait up to 50 seconds for the previous run; if it is still busy, retry after it finishes. Local and cloud baselines are separate. A failed or interrupted delivery can appear again on retry, so deduplicate downstream by product or creative ID and observation time. Existing names keep their baselines, but a baseline previously shared by colliding names cannot be disentangled automatically.
Changelog
-
0.1.7 (2026-10-19): Watcher runs with the same name now wait for each other before loading and saving their baseline. Losing the lock stops the run without saving stale state. Cancelled runs keep only confirmed output in watcher state.
-
0.1.6 (2026-10-19): Spending-limit fix. When your maximum charge per run runs out, a product and its details add-on are charged together or not at all, and only delivered products are counted and remembered by the watcher, so a product cut off by the limit shows up again on the next run. Watcher names with spaces or other special characters now get their own record (existing watchers carry over); state is merged before saving. Full overlap serialization was added in 0.1.7.
-
0.1.5 (2026-10-17): Runs no longer fail when a search finds nothing or a product id is unknown (uncharged error rows instead). The mode is now picked from the filled fields, and common field names from other scrapers (
query,productUrls,startUrls,postcodeand more) are accepted. An unusable proxy group now falls back to the datacenter proxy. -
0.1 (2026-10-14): First release. Coles, Woolworths, Aldi and IGA; search, category and full catalog, specials, products, categories and stores modes; store pricing for Coles and IGA; product details add-on; changed-only price watcher.