Coles, Woolworths & ALDI API — Australian Grocery Prices · Apify
Coles, Woolworths, ALDI Scraper — Australian Supermarket Prices avatar

Coles, Woolworths, ALDI Scraper — Australian Supermarket Prices

Pricing

from $0.70 / 1,000 products

Go to Apify Store
Coles, Woolworths, ALDI Scraper — Australian Supermarket Prices

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

Dustin Griffie

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

2

Monthly active users

9 days ago

Last modified

Features

Limited permissions

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 taskWhat it does
Australian milk prices: every brand at the big threeMilk at all three chains, with price, was-price and unit price per litre side by side
Get this week's Coles specialsColes' current specials with the saving and promo text
Download the ALDI Australia pantry rangeA whole ALDI category with prices and unit prices
Monitor grocery price changes weeklyOnly the products whose price or special changed since last week
Woolworths specials across every departmentHalf-price, Prices Dropped and multi-buys from every Woolworths department
ALDI Super Savers and Limited Time Only dealsALDI Super Savers and Limited Time Only lines with price and unit price
Price a 10-item family basket at all three supermarketsTen staples searched at all three chains, top matches with price and unit price
Watch exact products by ID and get only price changesExact product IDs or links; each run returns only price, special or stock changes
Woolworths drinks department with EAN barcodesWoolworths drinks with EAN barcode, brand, size, price and unit price
The Coles pet aisle: food and care pricesThe 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

  1. Pick the supermarkets.
  2. Enter search terms and/or paste Coles, Woolworths or ALDI URLs (search, category, specials or product pages), or product IDs.
  3. Optional: tick Specials only, turn on All current specials, or turn on the Price-change monitor.
  4. Click Start, then download the results as JSON, CSV or Excel, or read them through the API.

Input

FieldWhat it does
retailersAny of coles, woolworths, aldi. Search terms run at each selected supermarket.
searchTermsWords to search for, e.g. milk, coffee beans, nappies.
startUrlsColes, Woolworths or ALDI URLs: search results, category (/browse/..., /shop/browse/..., /products/.../k/...), specials (/on-special, /shop/browse/specials) or a product page.
productIdscoles:<id>, woolworths:<stockcode>, aldi:<sku>. A bare number works when only one supermarket is selected.
scrapeSpecialsAdds each selected supermarket's specials list (Coles On Special, every Woolworths department's specials, ALDI Super Savers and Limited Time Only).
specialsOnlyKeep only products that are on special (for searches and categories).
maxItemsPerTargetProducts per search term, category or specials list (default 100). In monitor mode this counts products checked.
maxItemsHard limit for the whole run (0 = none).
includeSponsoredKeep the sponsored placements Woolworths mixes into results (off by default).
monitorMode, monitorIncludeNew, monitorStoreNamePrice-change monitor (see below).
proxyConfiguration, fallbackToResidentialApify 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

FieldWhat it contains
retailer, productId, name, brand, sizeThe supermarket (coles, woolworths, aldi) and the product
price, wasPrice, savingsAmountShelf price in AUD and the saving when it's on special
isOnSpecial, promoType, promoText, multibuySpecial or multi-buy offer, such as Buy 2 for $6
unitPrice, unitPriceText, unitMeasureThe supermarket's comparison price, for example $2.10 / 1L
isAvailable, availabilityTextWhether it can be bought online now
category, categoryPath, barcodeCategory and (Woolworths only) the barcode
imageUrl, urlProduct image and product page
changeType, previousPrice, priceChange, priceChangePctMonitor mode only: what changed since the last run
  • Prices are in AUD. wasPrice and savingsAmount are set only when the supermarket shows a saving. multibuy holds offers like Buy 2 for $6 as { "quantity": 2, "unitPrice": 3, "text": "Buy 2 for $6" } (unitPrice = price each when you buy the quantity).
  • unitPrice is the supermarket's comparison price for unitMeasure (for example per 1L, 100g or 1EA).
  • barcode is 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, priceChange and priceChangePct.

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 monitorIncludeNew to 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.

EventFreeStarterScaleBusiness 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 includeSponsored to keep them (marked isSponsored: true).
  • Coles category pages list specials first, so a capped category run is weighted toward specials. Raise maxItemsPerTarget to 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.

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.