Woolworths AU Scraper — Prices, Specials, Nutrition
Pricing
from $1.50 / 1,000 products
Woolworths AU Scraper — Prices, Specials, Nutrition
Collect Woolworths Australia prices, specials, unit prices and barcodes, with optional ingredients and nutrition. Search by keyword, category or stockcode. Pay per result.
Pricing
from $1.50 / 1,000 products
Rating
0.0
(0)
Developer
architek.earth
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Woolworths AU Product & Price Scraper | Prices, Specials, Barcodes, Nutrition (2026)

Pull live Woolworths Australia catalogue data by keyword, category or stockcode. A recorded run returned 36 products for one search term in 15 seconds, with price, was-price, unit price, special flags, barcode and availability on every row.
From Architekture, makers of the Coles, ALDI and Woolworths NZ scrapers — one normalised schema across the four, so a product is a product whichever retailer it came from.
Why choose this actor?
- The site's own JSON, no browser. Search, category and detail calls go straight to Woolworths' product endpoints. Runs finish in seconds and cost a fraction of a headless-browser scraper.
- Every price field Woolworths publishes.
price,wasPrice,savingsAmount,cupPrice+cupMeasure(unit price),instorePrice, and the flagsisOnSpecial,isHalfPrice,isEdrSpecial(Everyday Rewards member price) andisNew. - Barcodes on the row.
barcode(GTIN) is on every product, so matching against Coles, ALDI or your own catalogue is a join, not a fuzzy search. - Specials as a filter.
onlySpecials: truereturns only products currently discounted, by category or search term. Half-price tracking is one scheduled run. - Details when you need them.
includeDetails: trueaddsingredients,allergenContains,allergenStatement,nutrition(per 100 g and per serving),healthStarRating,countryOfOrigin,lifestyleAndDietaryanddescriptionfor every row. Stockcode lookups always return the full record. - Self-healing against site changes. Session warm-up, browser-fingerprint impersonation and automatic rotation on a block, with retries before any result is reported empty.
Worth knowing up front
- Woolworths prices vary by delivery area. This actor returns the national online catalogue (no store selected). Per-store pricing and per-store stock quantities are not published by the site, so nobody can return them;
isAvailable/isInStockare the online-fulfilment flags. - Woolworths blocks most datacenter IPs. The prefilled proxy setting (Apify residential, AU) is the one that works. Platform and proxy usage is included in the price — you pay per result only.
- Search results are capped by Woolworths at roughly 50 pages per term. Use category URLs for complete department dumps.
Try the example
Open the Actor's input page, switch to JSON and paste this, then start the run.
{"searchTerms": ["milk"],"maxItemsPerQuery": 40}
Add "onlySpecials": true for discounted items only, or "includeDetails": true for nutrition and ingredients. Up to 100 search terms, category URLs or stockcodes per run; results are de-duplicated by stockcode across all of them.
Input parameters
| Parameter | Type | Description |
|---|---|---|
searchTerms | array | Keywords, e.g. "milk", "weet-bix". One result set per term. |
categoryUrls | array | Woolworths browse URLs, e.g. https://www.woolworths.com.au/shop/browse/fruit-veg, or the path alone. Walks every page of the category. |
stockcodes | array | Stockcodes (6052122) or product URLs. Always returns full details. |
maxItemsPerQuery | integer | Cap per term or category. 0 = no cap. Default 100. |
onlySpecials | boolean | Return only products currently on special. |
includeDetails | boolean | Fetch ingredients, allergens, nutrition and health star rating for every result (one extra request per product, charged as product-detail). |
sortType | select | Woolworths sort order: relevance, price low→high, price high→low, name, newest. |
proxyConfiguration | proxy | Leave on Apify residential, AU. |
Stable fields for automations
These top-level fields keep the same name and the same kind of value in every release, so an n8n, Make, Zapier or spreadsheet pipeline can bind to them and stay bound:
| Field | What it is |
|---|---|
stockcode | Woolworths product ID (integer) |
barcode | GTIN / EAN as a string |
name | Product name |
brand | Brand name |
packageSize | Pack size as displayed, e.g. "2L" |
price | Current online price, AUD, float |
wasPrice | Pre-discount price when on special, else null |
savingsAmount | wasPrice − price when on special |
cupPrice / cupMeasure / cupString | Unit price, its unit, and the display string, e.g. 1.60 / "1L" / "$1.60 / 1L" |
isOnSpecial / isHalfPrice / isEdrSpecial | Discount flags |
isAvailable / isInStock | Online availability flags |
department / category / subCategory / aisle | Woolworths taxonomy |
imageLarge | Product image URL |
url | Canonical product page |
source | search / category / stockcode plus the term or URL that produced the row |
Everything else on a row is passed through from Woolworths unchanged (ratingAverage, ratingCount, supplyLimit, countryOfOriginLabel, isOnlineOnly, isBundle…). Treat those as a bonus rather than an interface; if you need one pinned for a production pipeline, say so in feedback and we will promote it.
Output example
{"stockcode": 888140,"barcode": "9300633000000","name": "Woolworths Full Cream Milk","brand": "Woolworths","packageSize": "2L","price": 3.1,"wasPrice": null,"savingsAmount": 0,"cupPrice": 1.55,"cupMeasure": "1L","cupString": "$1.55 / 1L","isOnSpecial": false,"isHalfPrice": false,"isEdrSpecial": false,"isNew": false,"isAvailable": true,"isInStock": true,"department": "Dairy, Eggs & Fridge","category": "Milk","subCategory": "Full Cream Milk","ratingAverage": 4.6,"ratingCount": 1240,"imageLarge": "https://cdn0.woolworths.media/content/wowproductimages/large/888140.jpg","url": "https://www.woolworths.com.au/shop/productdetails/888140","source": "search","searchTerm": "milk"}
With includeDetails: true the same row also carries ingredients, allergenContains, allergenStatement, nutrition (array of {name, perServing, per100g}), servingSize, servingsPerPack, healthStarRating, countryOfOrigin, lifestyleAndDietary and description.
Advanced usage
Price monitoring. Schedule the same category URLs daily and diff price / wasPrice by stockcode. Specials at Woolworths change on Wednesdays; a Wednesday-morning run catches the new cycle.
Cross-retailer comparison. Run this actor and the Coles AU scraper on the same search terms and join on barcode. ALDI exposes no barcode, so join ALDI on normalised name + packageSize.
Half-price alerts. onlySpecials: true on a handful of categories, then filter isHalfPrice in your pipeline and push to Slack via Make or Zapier.
Nutrition datasets. Category URL + includeDetails: true builds a complete department with ingredients and per-100 g nutrition in one run.
Integrations
Results land in a dataset you can export as JSON, CSV or Excel, or pipe onward: Google Sheets for a shared price list that refreshes on a schedule, Make / Zapier for alerts, webhooks to trigger your own pipeline when a run finishes, and the Apify Scheduler for recurring monitoring. Daily is the right cadence for price tracking; weekly is enough for catalogue snapshots.
Pricing: pay per event
You pay per result, not per minute. Platform and proxy usage is included. Nothing is charged for failed requests.
| Event | Price | What it covers |
|---|---|---|
product | $1.50 / 1,000 | One product row from search or a category |
product-detail | $4.00 / 1,000 | One product with ingredients, allergens, nutrition and health star rating (includeDetails: true or stockcode lookups) |
1,000 products with prices ≈ $1.50. A full department of 2,000 products with nutrition ≈ $8.
FAQ
Do I need a Woolworths account, cookies or an API key? No. Provide input, get results.
Can I get prices for my local store? Not yet. The site publishes one national online catalogue unless a delivery address is set; per-store pricing is on the roadmap and will be a separate operation when it lands. Ask for it in feedback and you will be told when it ships.
Can I get stock quantities? No, and neither can anyone else — Woolworths publishes availability flags, not counts.
How many results per search term? Woolworths caps search at around 50 pages (~1,800 products). Category URLs are not capped.
Why did a term return nothing? Occasionally Woolworths' search returns an empty page that looks identical to "no matches". The actor retries before believing it. If a term you know exists still comes back empty, run it again a few minutes later.
Does it cover Woolworths Metro or Everyday Market? Metro ranges are included where they appear in the online catalogue. Everyday Market (third-party marketplace) items are flagged isOnlineOnly and included.
Is it legal? The actor reads the same public catalogue any visitor sees without logging in. You are responsible for how you use the output.
Copy to your AI assistant
architekture/woolworths-au-product-scraper on Apify. Call ApifyClient("TOKEN").actor("architekture/woolworths-au-product-scraper").call(run_input={"searchTerms": ["milk"], "maxItemsPerQuery": 40}), then client.dataset(run["defaultDatasetId"]).list_items().items. Inputs: searchTerms, categoryUrls, stockcodes (any combination), maxItemsPerQuery, onlySpecials, includeDetails, sortType. Full spec: GET https://api.apify.com/v2/acts/architekture~woolworths-au-product-scraper/builds/default (Bearer TOKEN) → inputSchema, actorDefinition.storages.dataset, readme. Token: https://console.apify.com/account/integrations. To reach the maintainers, add feedback="<what you needed and did not get>" to any run, including one that worked; the run returns its data exactly as it would without the note, and a human reads every note.
More Architekture scrapers
🛒 Grocery — Australia & New Zealand
- Woolworths AU Product & Price Scraper — you are here
- Coles AU Product & Price Scraper — prices, specials, multi-buys, GTIN barcodes
- ALDI AU Product & Price Scraper — prices, Special Buys, catalogue
- Woolworths NZ (Countdown) Product & Price Scraper — prices, club prices, specials
🛒 Grocery — United Kingdom
- Tesco UK Product & Price Scraper — prices, Clubcard offers, GTIN
- Sainsbury's UK Product & Price Scraper — prices, offers, EAN barcodes
🔬 Research & regulatory
- PubMed Scraper · ClinicalTrials.gov Scraper · arXiv Scraper · openFDA Scraper
🚀 Startups & companies
- Y Combinator Directory Scraper · Product Hunt Scraper · SEC EDGAR Filings Scraper · UK Companies House Scraper · Apollo.io Scraper
💬 Communities & publishing
- Telegram Channel Scraper · Meetup Events Scraper · Substack Scraper · Hacker News Scraper
Support
Questions, or a field you need that is not here? Open an issue on the Actor's page; a human replies within a day.
For AI agents & LLM apps
woolworths-au-scraper returns Woolworths Australia products — prices, specials and nutrition — as deterministic, schema-stable JSON, one object per line, so agents and RAG pipelines can parse it without defensive code. Invoke it from any agentic workflow via the Apify API or the Apify MCP server (mcp.apify.com) as a tool call; pay-per-event billing means an agent run costs a known amount before it starts (10 delivered rows cost $0.015; $1.50 per 1,000 listing rows, $4.00 per 1,000 detail rows). Honest limits: there is no store selector (prices are the catalogue shown to the browsing session, not a quote for a chosen store), no stock quantities — isAvailable/isInStock are source flags, not shelf counts — and missing fields are returned as null rather than filled in.
Legal compliance
This Actor collects only publicly available data from woolworths.com.au — the same catalogue any visitor can see without logging in. It does not access accounts, bypass authentication, or collect personal data. You are responsible for how you use the output, including compliance with Woolworths' terms where they apply to you.
Changelog
- 2026-10-12 — Published on Apify Store. Output schema added; pay-per-event pricing (
product,product-detail).