How to use it: 3 steps
- 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.
- Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example:
milkin Search terms. Each start is one run. - 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 for | Price | When |
|---|---|---|
| Start fee | $0.002 | Charged 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.003 | One 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
- Open the Input tab.
- Keep Search terms as
milkand Stores asWoolworths(the prefill). - Keep Max products per search or category at
20. - Click Start.
- Open the Prices view of the dataset. Check
store,name,priceandunitPriceText.
Use cases
| Task | Input | Key fields | Next step |
|---|---|---|---|
| Compare three supermarkets | searchTerms + all three stores | store, price, unitPrice, unitOfMeasure | Sort by unitPrice in a spreadsheet |
| Track specials in a category | categoryUrls + onlyOnSpecial: true | price, wasPrice, savings, promoText | Schedule a daily run |
| Watch a fixed product list | productUrls | productId, price, onSpecial, inStock | Compare rows from each run by store + productId |
| Feed a price app or dashboard | Any mode | name, brand, size, image, url | Read 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
inStockis alwaysnull. Aldi shows few specials on its website, sowasPriceandpromoTextare usuallynullandonlyOnSpecialoften 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 insize - 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_ERRORuntil 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.
{
"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.
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 -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"]}'# 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)
| Field | Type | Meaning |
|---|---|---|
store | string | woolworths, coles or aldi. |
productId | string | The store's own product ID (stockcode or SKU). |
name | string | Product name as the store shows it. |
brand | string | Brand, such as Big M. |
size | string | Pack size, such as 3L or 800g. |
price | number | Current price in AUD. |
wasPrice | number | Price before the discount. Only when the product is on special. |
savings | number | wasPrice minus price. |
unitPrice | number | Price per comparison unit. |
unitOfMeasure | string | Comparison unit, such as 1L, 1kg or 100g. |
unitPriceText | string | Unit price as the store shows it, such as $1.65 / 1L. |
onSpecial | boolean | true when the product is discounted or on a multi-buy offer. |
promoText | string | Offer text, such as Save $0.45 or Pick any 3 for $7.50. |
category | string | Store category, such as Dairy, Eggs & Fridge > Milk. |
inStock | boolean | Online availability. Always null for Aldi, because Aldi does not sell online. |
isSponsored | boolean | true for a paid (sponsored) position in search results. |
barcode | string | GTIN barcode. Woolworths shows it; Coles and Aldi usually do not. |
url | string | Product page link. |
image | string | Product image link. |
currency | string | Always AUD. |
sourceType | string | search, category or product: the input that gave this row. |
query | string | The search term, for search rows. |
sourceUrl | string | The category or product link, for those rows. |
position | integer | Place in the store's results (before the specials filter). |
fetchedAt | string | Time the row was read, ISO UTC. |
Input settings (6)
The main fields of the input form. With the API you send them as JSON.
| Setting | Name in the API | Type | Example value |
|---|---|---|---|
| Search terms | searchTerms | array | ["milk"] |
| Stores | stores | array | ["woolworths"] |
| Max products per search or category | maxItems | integer | 20 |
| Only products on special | onlyOnSpecial | boolean | false |
| Category URLs | categoryUrls | array | |
| Product URLs | productUrls | array |
Use cases with this tool
Each guide shows all the steps and the other tools.


