Woolworths Australia prices, specials and unit prices as clean data

Last updated:

Woolworths has no public product API. This Actor collects public catalog data from Woolworths Australia's own product search: shelf price, was-price and specials, and the unit price (per kg, per litre, per 100 g). You give it search terms and get one clean row per product.

What you get

Row from a real run (search term milk):

json
{
  "stockcode": "888137",
  "name": "Woolworths Full Cream Milk",
  "brand": "Woolworths",
  "description": "Woolworths Full Cream Milk 2L",
  "packageSize": "2L",
  "price": 3.4,
  "wasPrice": 3.4,
  "isOnSpecial": false,
  "savingsAmount": 0,
  "cupPrice": 1.7,
  "cupMeasure": "1L",
  "cupString": "$1.70 / 1L",
  "isAvailable": true,
  "isInStock": true,
  "unit": "Each",
  "imageUrl": "https://cdn1.woolworths.media/content/wowproductimages/medium/888137.jpg",
  "productUrl": "https://www.woolworths.com.au/shop/productdetails/888137/woolworths-full-cream-milk",
  "searchTerm": "milk",
  "scrapedAt": "2026-10-02T06:14:38.625Z"
}

No customer data of any kind is collected.

Use cases

Run it in the Apify Console (no code)

  1. Open the Woolworths scraper and click Try for free.
  2. Enter search terms (milk, bread, eggs…), a maximum number of items per term, and a sort order.
  3. Click Start, then download CSV, Excel or JSON. Use Apify's Schedules to repeat the run daily.

Run it from code

Replace <owner>/woolworths-au-products with the Actor id shown on its Store page.

Python (apify-client ≥ 3)

python
import os
from apify_client import ApifyClient

client = ApifyClient(os.environ["APIFY_TOKEN"])

run = client.actor("<owner>/woolworths-au-products").call(
    run_input={"searchTerms": ["milk"], "maxItemsPerSearch": 3, "sortBy": "priceAsc"},
)
for item in client.dataset(run.default_dataset_id).list_items().items:
    print(item.get("name"), item.get("price"), item.get("cupString"))
# Woolworths Full Cream Milk 3.4 $1.70 / 1L
# Dairy Farmers Full Cream Milk Full Cream Milk 4.7 $2.35 / 1L
# Woolworths Full Cream Milk 4.95 $1.65 / 1L

Node.js (apify-client)

js
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('<owner>/woolworths-au-products').call({ searchTerms: ['bread', 'eggs'], maxItemsPerSearch: 50 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map((p) => `${p.name}: $${p.price} (${p.cupString})`));

curl (one call, results in the response)

bash
curl -s -X POST "https://api.apify.com/v2/acts/<owner>~woolworths-au-products/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"searchTerms":["milk"],"maxItemsPerSearch":3,"sortBy":"priceAsc"}'

Limits

Pricing

$1 per 1,000 products ($0.001 per row), pay per event, with no subscription.

Open the Woolworths scraper on Apify