# Coles, Woolworths and Aldi Price Scraper for Australia

> Coles Woolworths price scraper with Aldi too: current and was price, unit price, specials, stock and barcode in one table. Search by keyword. No login.

URL: https://cliqtomedia.com/actors/au-supermarket-prices/

Category: E-commerce & prices · Status: live on Apify Store · Apify page: https://apify.com/cliqtomedia/au-supermarket-prices?fpr=cliqto

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.

## How to use it: 3 steps

1. **Make a free Apify account.** Apify 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 Start.** No 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 results.** When 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.

## 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.

## Price

Pay per event. Apify bills you, not us.

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

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

Prices checked on 24 October 2026. Current price: https://apify.com/cliqtomedia/au-supermarket-prices?fpr=cliqto

## 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.

## Data fields

- `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

- `searchTerms` (array): Products to search for, e.g. milk, coffee pods or Tim Tam. Each term is searched in every store picked below. Up to 50 terms.
- `stores` (array): Supermarkets to search. Category and product URLs always go to the store they belong to. Default: all three.
- `maxItems` (integer): How many products to save for each search term in each store, and for each category URL. Product URLs always return one product each.
- `onlyOnSpecial` (boolean): Keep only products that are discounted or on a multi-buy offer. Applies to searches and categories, not to product URLs. Reads up to 25 store pages per search or category to find specials; each page read is charged.
- `categoryUrls` (array): Category pages copied from the store website, e.g. https://www.coles.com.au/browse/dairy-eggs-fridge/milk, https://www.woolworths.com.au/shop/browse/dairy-eggs-fridge/milk or https://www.aldi.com.au/products/dairy-eggs-fridge/milk/k/1111111160. Coles https://www.coles.com.au/on-special also works. Up to 50.
- `productUrls` (array): Product pages copied from the store website, e.g. https://www.woolworths.com.au/shop/productdetails/888140/... or https://www.coles.com.au/product/coles-full-cream-milk-3l-8150288. Up to 500.

## 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

| 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

- 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

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.

## Sample 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`

```python
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)
```

```bash
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"]}'
```

```python
# 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)
```

run-sync waits up to 300 seconds; for longer runs start a run and use a webhook. LlamaIndex and MCP: https://cliqtomedia.com/actors/ai-agents/

## Use cases with this tool

- [Track prices in shops and marketplaces](https://cliqtomedia.com/actors/use-cases/price-monitoring/): Track prices and offers in shops and marketplaces. See changes before your customers do.

## Similar tools

- [AliExpress Scraper: Products, Prices & Reviews, No Login](https://cliqtomedia.com/actors/aliexpress-scraper/)
- [Idealo Price Scraper: All Shop Offers, 6 Countries, No Login](https://cliqtomedia.com/actors/idealo-price-scraper/)
- [Naver Shopping Scraper: Korea Products & Prices](https://cliqtomedia.com/actors/naver-shopping-scraper/)
- [Trendyol Scraper: Products, Prices & Reviews (No login)](https://cliqtomedia.com/actors/trendyol-scraper/)
- [eBay Sold Listings Scraper - Sold Prices & Dates](https://cliqtomedia.com/actors/ebay-sold-listings/)
- [Etsy Listings & Shop Export (Etsy Open API v3)](https://cliqtomedia.com/actors/etsy-listings-api/)
