Coles, Woolworths, Aldi & IGA Prices Scraper (Australia) avatar

Coles, Woolworths, Aldi & IGA Prices Scraper (Australia)

Pricing

from $0.50 / 1,000 products

Go to Apify Store
Coles, Woolworths, Aldi & IGA Prices Scraper (Australia)

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

Jay Novello

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

0

Monthly active users

a day ago

Last modified

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#ProductSizePriceUnit priceStoreBarcode
Coles1Coles Full Cream Milk2L$3.40$1.70 per 1LColes North Perth9300601186938
Coles3Masters Full Cream Milk2L$4.30$2.15 per 1LColes North Perth9310232957012
Woolworths1Woolworths Full Cream Milk2L$3.40$1.70 per 1Lnational online price9300633556143
Woolworths6Pauls Zymil Lactose Free Full Cream Milk2L$5.95 (was $6.90, price drop)$2.98 per 1Lnational online price9310036048985
Aldi1Full Cream Milk 2L2L$3.39$1.70 per 1Lnational shelf price(Aldi publishes none)
Aldi4Lactose Free Full Cream Milk 2L2L$4.79$2.40 per 1Lnational shelf price(Aldi publishes none)
IGA3Pauls Full Cream Milk1L$2.50 (was $2.60)$2.50 per 1LAshcroft's IGA Erskine Park(IGA publishes none)
IGA4A2 Milk Full Cream Milk3L$10.50$3.50 per 1LAshcroft'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: milk and tim tams at all four retailers. The first run output 138 products marked new; 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

ModeInputOutput
searchKeywords, e.g. milk, tim tams, nappies size 4Products in each retailer's own ranking (position)
categoryCategory names, IDs or URLs, or all for the full catalogEvery product in the category, de-duplicated
specialsall, halfPrice, multibuy or onlineOnlyProducts on special with was price, saving and promo text
productsProduct URLs or IDs (coles:439693, woolworths:888140, Woolworths barcodes)A price check of your watchlist, in input order
categoriesNothingEach retailer's category tree with IDs and product counts
storesA postcode or suburbNearby 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

ColesWoolworthsAldiIGA
PricesPer store (default: Coles online store 7674, Melbourne)National online priceNational shelf pricePer store (default: 32600, Erskine Park NSW)
Full catalog (all)~31,900 lines22,000+ lines (Everyday Market excluded)~3,250 lines incl. Special Buys~13,800 lines per store
Specialshalf price, multibuy, online only, price dropshalf price, multibuy, online only, lower shelf priceSpecial Buys (with on-sale date), Super Savers, Lower Priceshalf price and % off, with start and end dates
BarcodeWith product details, or in products modeAlwaysNot publishedNot published
DetailsIngredients, allergens, nutrition, country of originIngredients, allergens, nutrition, health star ratingDescription, ingredients, allergensIngredients, nutrition, allergens, country of origin
StockYesYesNot publishedYes
Store finderPostcode or suburbPostcode or suburbPostcode or suburbPostcode, 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.

EventPriceWhen
Product$0.50 per 1,000Each product row output
Product details add-on$1.00 per 1,000Only with Include product details, and only when details were found
Store or category$0.50 per 1,000Each row in stores or categories mode
Actor start$0.00005Once 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 say priceScope: "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 no wasPrice.
  • 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. scrapedAt is 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, postcode and 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.