Coles logoWoolworths logoAldi logo

Online shops · Live on Apify

Coles, Woolworths and Aldi Price Scraper for Australia

Search Coles, Woolworths and Aldi Australia at once and get one price table. Each row has the price, was price, unit price and specials. No store account needed.

About $0.45 for 1,000 products$0.00045 per product + $0.002 per run. Apify bills you, not us.One product in a run of its own: about $0.0024.Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed.

Run it on Apify Opens apify.com, the website where our tools run. Sign up free with Google or email, no card needed.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure

What you get, for example

storecoles
productId3034279
nameBig M Banana Flavoured Milk | 600mL

How to use it: 3 steps

  1. Make a free Apify accountApify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
  2. Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example: milk in Search terms. Each start is one run.
  3. Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.

What it does

Get Coles, Woolworths and Aldi Australia prices in one table. Search by keyword, or paste category or product links. Each row has the price, was price, unit price, special and promo text, stock, brand, size and link. No login or API key. A 20-product Woolworths search costs $0.014 on the Free plan.

  • Search terms: each term is searched in every store you pick.
  • Category links: a category page from a store website, for example Coles milk.
  • Product links: one product page per link.

Good for

  • Compare the price of the same product type in Coles, Woolworths and Aldi.
  • Watch specials and was prices for a list of products or a category.
  • Get unit prices (per litre, per kg, per 100 g) for fair comparison.
  • Build price history: schedule the same input and keep each run's rows.

Not a good fit

  • Prices for one store branch or postcode, or delivery prices.
  • Nutrition facts, ingredients or product descriptions. They are not collected.
  • Other stores, such as IGA, or stores outside Australia.
  • Login, loyalty prices (Flybuys, Everyday Rewards) or carts.

Who uses it

Shoppers and bloggers

Compare the same product type across three supermarkets.

Brands and suppliers

Watch specials and was prices for your products.

App developers

Feed a price app or dashboard with fresh rows by API.

Price

Pay per event: you pay for each result the tool saves, plus a small start fee for each run. The price includes Apify platform costs. Apify bills you, not us. Prices below are for the Apify free plan.

What you pay forPriceWhen
Start fee$0.002Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more.
Product saved$0.00045 (from $0.00038 on paid Apify plans)One product row saved to the dataset.
Store page read$0.003One search, category or product page read from Woolworths, Coles or Aldi, including a product link the store reports as not found. Blocked or failed requests are not charged.

Examples

  • One product: about $0.0024.
  • 1,000 products: about $0.45.
  • Every day 100 products, for 30 days: about $1.41 a month.

Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed. That is enough for about 11,000 products.

Prices checked on 24 October 2026. See the current price on Apify.

Questions

Are these my local store prices?

No. Prices for one branch or postcode are not collected.

Does it include loyalty prices?

No. Flybuys and Everyday Rewards prices are not included.

Does it cover IGA?

No. Only Coles, Woolworths and Aldi Australia.

Can I get nutrition facts?

No. Nutrition, ingredients and descriptions are not collected.

Do I need a store account or API key?

No. The Actor reads public pages. You only need an Apify account.

Can I get price history?

Each run gives the current prices. Schedule the same input and keep the datasets to build your own history.

Why is the same product in two rows?

You searched for two terms and the product matched both. Each search keeps its own rows. Remove duplicates by store + productId if you need one row per product.

Details

Step by step on Apify
  1. Open the Input tab.
  2. Keep Search terms as milk and Stores as Woolworths (the prefill).
  3. Keep Max products per search or category at 20.
  4. Click Start.
  5. Open the Prices view of the dataset. Check store, name, price and unitPriceText.
Use cases
TaskInputKey fieldsNext step
Compare three supermarketssearchTerms + all three storesstore, price, unitPrice, unitOfMeasureSort by unitPrice in a spreadsheet
Track specials in a categorycategoryUrls + onlyOnSpecial: trueprice, wasPrice, savings, promoTextSchedule a daily run
Watch a fixed product listproductUrlsproductId, price, onSpecial, inStockCompare rows from each run by store + productId
Feed a price app or dashboardAny modename, brand, size, image, urlRead the dataset by API
Tips for better results
  • Sort by unit price for a fair comparison between pack sizes.
  • Use search terms when you can. Product links are slower, about 1 second each.
  • Schedule the same input daily to build your own price history.
Limits and good to know

Data comes from the public websites of Woolworths, Coles and Aldi Australia. Their website terms limit automated access and commercial use of their content. You are responsible for checking that your use of the data is allowed. This Actor is an independent tool. It is not made by or endorsed by Woolworths, Coles or Aldi.

  • Online prices. Prices are the default online prices of each store. Local store and postcode prices can differ
  • Aldi. Aldi does not sell online, so inStock is always null. Aldi shows few specials on its website, so wasPrice and promoText are usually null and onlyOnSpecial often returns no Aldi rows
  • Names. Each store writes names its own way. Coles adds the size after a bar, for example Coles Full Cream Milk | 3L; the size is also in size
  • Coles product links. Coles finds a product by the number at the end of the link. If the name part of the link is wrong but the number exists, you get that product
  • Sponsored results. Store search results can include paid positions. They are kept and marked with isSponsored: true
  • Not complete. Store search decides which products match a term. The Actor does not promise every product of a store
  • Changes. If a store changes its website, a run can fail with SOURCE_ERROR until the Actor is updated

For developers

Sample result

One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.

one result · JSON
{
  "store": "coles",
  "productId": "3034279",
  "name": "Big M Banana Flavoured Milk | 600mL",
  "brand": "Big M",
  "size": "600mL",
  "price": 3.45,
  "wasPrice": 3.9,
  "savings": 0.45,
  "unitPrice": 5.75,
  "unitOfMeasure": "1L",
  "unitPriceText": "$5.75 / 1L",
  "onSpecial": true,
  "promoText": "Save $0.45",
  "category": "Dairy, Eggs & Fridge > Milk",
  "inStock": false,
  "isSponsored": false,
  "barcode": null,
  "url": "https://www.coles.com.au/product/big-m-banana-flavoured-milk-600ml-3034279",
  "image": "https://cdn.productimages.coles.com.au/productimages/3/3034279.jpg",
  "currency": "AUD",
  "sourceType": "search",
  "query": "milk",
  "sourceUrl": null,
  "position": 15,
  "fetchedAt": "2026-10-14T11:29:52.330Z"
}

Use it from code

Actor ID: cliqtomedia/au-supermarket-prices. You need your Apify API token from Apify Console → Settings → API & Integrations.

Python · apify-client
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/au-supermarket-prices").call(run_input={
    "searchTerms": [
        "milk"
    ],
    "stores": [
        "woolworths"
    ]
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
cURL
curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~au-supermarket-prices/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"searchTerms": ["milk"], "stores": ["woolworths"]}'
LangChain · langchain-apify
# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool

tool = ApifyActorsTool("cliqtomedia/au-supermarket-prices")
result = tool.invoke({"run_input": {"searchTerms": ["milk"], "stores": ["woolworths"]}})
print(result)

The cURL call waits for the results, up to 300 seconds. For longer runs, start a run (/runs) and get the results with a webhook or by checking the run. Apify API docs. LlamaIndex, MCP for AI agents and the JavaScript client: AI agents & MCP.

Data fields (25)
FieldTypeMeaning
storestringwoolworths, coles or aldi.
productIdstringThe store's own product ID (stockcode or SKU).
namestringProduct name as the store shows it.
brandstringBrand, such as Big M.
sizestringPack size, such as 3L or 800g.
pricenumberCurrent price in AUD.
wasPricenumberPrice before the discount. Only when the product is on special.
savingsnumberwasPrice minus price.
unitPricenumberPrice per comparison unit.
unitOfMeasurestringComparison unit, such as 1L, 1kg or 100g.
unitPriceTextstringUnit price as the store shows it, such as $1.65 / 1L.
onSpecialbooleantrue when the product is discounted or on a multi-buy offer.
promoTextstringOffer text, such as Save $0.45 or Pick any 3 for $7.50.
categorystringStore category, such as Dairy, Eggs & Fridge > Milk.
inStockbooleanOnline availability. Always null for Aldi, because Aldi does not sell online.
isSponsoredbooleantrue for a paid (sponsored) position in search results.
barcodestringGTIN barcode. Woolworths shows it; Coles and Aldi usually do not.
urlstringProduct page link.
imagestringProduct image link.
currencystringAlways AUD.
sourceTypestringsearch, category or product: the input that gave this row.
querystringThe search term, for search rows.
sourceUrlstringThe category or product link, for those rows.
positionintegerPlace in the store's results (before the specials filter).
fetchedAtstringTime the row was read, ISO UTC.
Input settings (6)

The main fields of the input form. With the API you send them as JSON.

SettingName in the APITypeExample value
Search termssearchTermsarray["milk"]
Storesstoresarray["woolworths"]
Max products per search or categorymaxItemsinteger20
Only products on specialonlyOnSpecialbooleanfalse
Category URLscategoryUrlsarray
Product URLsproductUrlsarray

Use cases with this tool

Each guide shows all the steps and the other tools.

Start on Apify

Make a free Apify account: you get $5 of free usage every month. Missing a tool? Suggest it. We read every idea, but we do not promise to build it.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure