Woolworths & ALDI Scraper AU | Prices & Specials $0.90/1k avatar

Woolworths & ALDI Scraper AU | Prices & Specials $0.90/1k

Pricing

from $0.50 / 1,000 product price records

Go to Apify Store
Woolworths & ALDI Scraper AU | Prices & Specials $0.90/1k

Woolworths & ALDI Scraper AU | Prices & Specials $0.90/1k

Scrape Woolworths and ALDI Australia grocery prices, was-prices, unit (cup) prices, specials and GTINs by search term or the weekly specials. Price-change monitoring mode for scheduled daily runs. No login, no browser.

Pricing

from $0.50 / 1,000 product price records

Rating

0.0

(0)

Developer

ProgrammX

ProgrammX

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

16 days ago

Last modified

Share

Keywords: Woolworths scraper, ALDI Australia scraper, Australian supermarket prices, grocery price API, Woolworths specials, half price specials, ALDI Super Savers, unit price, cup price, GTIN barcode, price monitoring, grocery price comparison, AU grocery data

Get Woolworths and ALDI Australia product prices, was-prices, unit (cup) prices, specials and GTIN barcodes as clean JSON, CSV or Excel. You can search by keyword, or leave the search empty to get this week's specials (Woolworths Half Price and Lower Shelf Price, ALDI Super Savers and Lower Prices). Turn on price-change monitoring to get only the products whose price or special status changed since your last run. No login, no browser, no cookies to paste.

Who uses it and why

  • Price-comparison and budgeting apps: one normalised row format for both retailers, with unit prices for like-for-like comparison.
  • CPG brands and agencies: track your own and your competitors' promotions every week (half price, lower shelf price, savings in AUD).
  • Researchers and journalists: build grocery inflation and shrinkflation series from daily price snapshots, keyed by GTIN (Woolworths) or SKU.
  • Deal sites and newsletters: a Wednesday specials feed, ready to publish.

What you get (one row per product per retailer)

retailer, productId (Woolworths Stockcode or ALDI SKU), gtin (Woolworths), name, brand, size, price, wasPrice, unitPrice, unitMeasure, unitPriceText, isOnSpecial, isHalfPrice, savings, promoLabel, inStock, category, url, image, searchTerm, source, scrapedAt. Monitoring mode adds changeType (new or changed), previousPrice and previousIsOnSpecial.

Input

FieldTypeDefaultWhat it does
retailersarray["woolworths","aldi"]Which supermarkets to scrape.
searchTermsstring list["milk","coffee"]Keywords searched on every retailer. Leave empty for the weekly specials feed.
specialsOnlybooleanfalseOnly products on special (Woolworths specials filter; ALDI Super Savers, Lower Prices or a was-price).
maxItemsPerSearchinteger50Products read per retailer per search term (or per specials category).
maxItemsinteger50Hard cap on rows pushed and charged in the run, shared fairly across retailers and terms.
onlyChangedbooleanfalseMonitoring: emit only new products, or products whose price, was-price or special status changed since the previous run.
onlyNewbooleanfalseMonitoring: emit only products never seen before.
proxyConfigurationproxyno proxyOptional Apify Proxy (RESIDENTIAL works best for Woolworths).

Example: the full Woolworths and ALDI specials for this week

{ "retailers": ["woolworths", "aldi"], "searchTerms": [], "maxItemsPerSearch": 2000, "maxItems": 5000 }

Output sample (real rows from a test run on 2026-10-03)

[
{"retailer":"woolworths","productId":"195108","gtin":"9300605157460","name":"Nescafe Cappuccino Coffee Sachets 10 pack","brand":"Nescafe","size":"10 pack","price":4,"wasPrice":8,"unitPrice":0.4,"unitMeasure":"1EA","unitPriceText":"$0.40 / 1EA","isOnSpecial":true,"isHalfPrice":true,"savings":4,"promoLabel":"Save $4.00","inStock":true,"category":"Tea & Coffee > Coffee","url":"https://www.woolworths.com.au/shop/productdetails/195108/nescafe-cappuccino-coffee-sachets","searchTerm":"coffee","scrapedAt":"2026-10-03T15:31:46.721Z"},
{"retailer":"aldi","productId":"000000000000398691","gtin":null,"name":"Light Milk 2L","brand":"FARMDALE","size":"2 L","price":3.39,"wasPrice":null,"unitPrice":1.7,"unitMeasure":"1 L","unitPriceText":"$1.70 per 1 L","isOnSpecial":true,"promoLabel":"Lower Prices","category":"Dairy, Eggs & Fridge > Milk","url":"https://www.aldi.com.au/product/farmdale-light-milk-2l-000000000000398691","searchTerm":"milk","scrapedAt":"2026-10-03T15:31:49.387Z"}
]

(Some fields, such as image and source, are left out of this sample to keep it short.)

Pricing (pay per result)

You pay only for the product rows you get. In monitoring mode, unchanged products are skipped and not charged.

Apify planPrice per 1,000 results
Free$0.90
Bronze$0.80
Silver$0.70
Gold$0.50

Apify's standard actor-start fee also applies. Example: a daily price-change check on 20 search terms usually returns a few dozen changed rows, which costs a few cents a day.

How to schedule daily (price-change monitoring)

  1. Save a task with your searchTerms (or an empty list for the specials) and "onlyChanged": true.
  2. In Schedules, add the task with a daily cron such as 0 7 * * * (Australia/Sydney).
  3. For the weekly specials feed, schedule searchTerms: [] on Wednesdays (30 6 * * 3). The weekly specials cycle starts on Wednesday; this day is UNVERIFIED for ALDI.
  4. Connect a webhook, Google Sheets, Slack or Zapier integration to the dataset to get only what changed.

The first monitoring run returns every product as new. Later runs return only changes. State lives in the named key-value store au-grocery-price-feed-state (keys prices-woolworths and prices-aldi). Delete that store to reset.

Use it from the API, n8n, Make, Zapier or an AI agent

  • API: start a run and get the results in one call:
    curl -X POST "https://api.apify.com/v2/acts/programmx~au-grocery-price-feed/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{"searchTerms": ["milk", "coffee"], "maxItems": 50}'
    The response is the dataset as JSON; add &format=csv for CSV. This endpoint waits up to 5 minutes; for longer runs, start the run asynchronously and read the dataset when it finishes.
  • n8n, Make and Zapier: use the Apify node or app, choose Run Actor, pick this actor and paste the input JSON.
  • Google Sheets, Slack, email and webhooks: add an integration on the actor or task in Apify Console.
  • AI agents: add this actor to Apify's MCP server (https://mcp.apify.com) and call it from any MCP client.

FAQ

Do I need a Woolworths or ALDI account?

No. The actor uses the same public product data that the websites show to guest shoppers.

Which store's prices do I get?

Woolworths returns prices for its default online store (guest session). Postcode-specific pricing is not supported yet. ALDI AU prices are national walk-in prices (ALDI AU does not sell groceries online, so there is no stock data).

Why is gtin empty for ALDI?

ALDI's API does not publish barcodes. Use productId (the SKU) as the key.

What does ALDI "Lower Prices" mean?

It is ALDI's own range of products with permanently lowered prices. ALDI rarely shows a was-price, so wasPrice is usually null for ALDI.

What counts as isOnSpecial?

Woolworths: the site's special flag, or a "Lower shelf price" label (Woolworths lists Lower Shelf Price under its specials menu). ALDI: products in the Super Savers or Lower Prices ranges, or with a was-price.

Are unavailable products included?

No. Listings with no current price (for example, temporarily unavailable at Woolworths) are skipped and not charged. RUN_STATS.skippedNoPrice counts them.

Is Coles supported?

Not yet. Coles is protected by a JavaScript bot challenge that needs a real browser. It is on the roadmap.

Is scraping this data allowed?

The actor only reads publicly visible prices, without logging in. You are responsible for how you use the data. Check the retailers' terms for your use case.

How much does a daily price tracker cost?

Example on the Free plan: a daily onlyChanged run over 20 search terms that returns 50 changed products costs 50 × $0.0009 = $0.045 a day, about $1.35 a month.

Can I export Woolworths and ALDI prices to CSV or Google Sheets?

Yes. Each run's dataset downloads as CSV, Excel or JSON, and the Google Sheets integration can append every run to a sheet.

Can an AI agent use this actor?

Yes. Apify's MCP server (https://mcp.apify.com) can expose this actor as a tool to Claude, Cursor, VS Code and other MCP clients, so an agent can fetch fresh prices on request.

Limitations

  • Woolworths: prices are for the default guest store. Very deep pagination (thousands of results for one term) has not been tested; use specific terms or the specials feed.
  • ALDI: deep pagination stops around 1,000 results per query, so the specials categories and keyword searches are used instead of a full-catalogue walk.
  • Coles is not included (roadmap).
  • Woolworths sits behind Akamai Bot Manager. The actor warms up a guest session first and retries with a fresh session if that fails. If the warm-up keeps failing, the remaining Woolworths searches in that run are skipped (logged in RUN_STATS.errors) and the ALDI searches still run. Very heavy use from a single datacenter IP may get blocked; a residential proxy helps.