Woolworths Products Scraper | Prices, Specials and Nutrition avatar

Woolworths Products Scraper | Prices, Specials and Nutrition

Pricing

from $0.51 / 1,000 products

Go to Apify Store
Woolworths Products Scraper | Prices, Specials and Nutrition

Woolworths Products Scraper | Prices, Specials and Nutrition

Woolworths scraper for Australian grocery prices: get 100 products in 8 seconds, 46 fields each, from just 1 keyword. Price, was price, unit price, specials and multibuys, barcode, brand, categories, ingredients, allergens, nutrition panel and Health Star Rating. No Woolworths account needed.

Pricing

from $0.51 / 1,000 products

Rating

0.0

(0)

Developer

SilentFlow

SilentFlow

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Woolworths Products Scraper | Prices, Specials and Nutrition (2026)

Woolworths products, 46 fields each, from any keyword.

From SilentFlow. Creators of Facebook Search Scraper and Pinterest Scraper, with 590,000+ combined lifetime runs.

Every Woolworths Australia product as one clean row: today's price and the was price, the unit price per litre or kilo, the special or multibuy on the shelf, the barcode, the ingredients and allergens, the nutrition panel per 100 g and per serve, the Health Star Rating, stock and photos. Our test runs returned 100 products for milk in 8 to 15 seconds, with no Woolworths account.

Why choose this actor?

Copying Woolworths prices into a spreadsheet one product at a time? Finding out on Thursday that a rival brand went half price on Wednesday? Getting a price list with no barcode, no unit price and no ingredients, then going back to the site for every line?

  • 42 fields filled per product, not 24. On the default run (100 products for milk), 42 of the 50 data fields carry a value on at least half the rows, against the 24 fields the most used Woolworths actor announces. Every row had a barcode and a brand, 96 had a unit price, 96 the full nutrition panel, 94 the ingredients and allergens.
  • Specials and pack data on the same row. Each row carries the price, the was price, the savings and the discount percent, the half-price flag, the offer printed on the shelf (a multibuy such as 2 for a set price) as text and as numbers, and the free-from and dietary claims next to the allergens. In our specials test, 34 chocolate specials sorted by unit price came back in 2 seconds: 30 reduced prices at 38.2% off on average, 16 of them half price, and 4 multibuys.
  • Nothing to choose before you start. No field is required: type a keyword, paste a woolworths.com.au link or a list of stockcodes and barcodes, and press Start. The most used Woolworths actor asks you to choose an operation first. In our test, a keyword, two stockcodes, a barcode and a product link in the same form gave 20 rows in 25 seconds, country of origin included.

Try Woolworths Products Scraper

Try your first 100 products

Paste this input in the JSON tab of the Input page and press Start. It searches Woolworths for milk and reads the results page by page, in Woolworths' own order, until it has 100 products.

{
"keywords": ["milk"],
"maxItems": 100
}

It runs on the Apify Free plan. Each product becomes one row of your dataset: open the Output tab to see the table, switch to the Specials view for was prices, savings and offers or to the Catalog view for barcodes, departments and Health Star Ratings, or export the rows as JSON, CSV or Excel.

How it works

Copy to your AI assistant

Paste this block into Claude, ChatGPT or Cursor to give it the full picture of this scraper:

You have access to the Woolworths Products Scraper on Apify: silentflow/woolworths-products-scraper
It reads Woolworths Australia (woolworths.com.au) without an account and returns one row per product,
with its online price, was price, unit price, special, barcode, ingredients, allergens and nutrition.
Input schema (no field is required, at least one of keywords, startUrls or productIds is needed):
- keywords (array of strings): what you would type in the Woolworths search box ("milk", "tim tam",
"coffee beans", a brand). Every page of results is read, up to maxItems. A woolworths.com.au link here is read as a link.
- startUrls (array of {url}): woolworths.com.au pages. Category and aisle pages /shop/browse/{...},
specials pages /shop/browse/specials/{...}, search pages /shop/search/products?searchTerm=...,
product pages /shop/productdetails/{stockcode}/{...}. A sortBy in the link is kept.
- productIds (array of strings): Woolworths stockcodes (888140), barcodes of 12 to 14 digits (9300633556150)
or product links. Each one gives one row with its country of origin.
- maxItems (integer, default 100): max rows for the whole run, across keywords, links and ids. Duplicates count once.
- sort (string, default "relevance"): relevance, price_asc, price_desc, unit_price_asc, unit_price_desc,
name_asc, name_desc, newest.
- specialsOnly (boolean, default false): keep only products on special (reduced price, half price, multibuy).
- includeDetails (boolean, default false): add countryOfOrigin, countryOfOriginLabel and
australianIngredientsPercent to rows found by keyword or link (about one second more per product).
Output per product (54 fields, null when absent):
- id (string, stockcode), url (string), name, brand, barcode (strings)
- description, size, unit, variety, department (strings), categories, subcategories (arrays of strings)
- ingredients (string), allergens, mayContain, freeFrom, dietaryClaims (arrays of strings)
- healthStarRating (number, 0.5 to 5), storageInstructions (string)
- nutrition (object: servingSize, servingsPerPack, per100g {nutrient: value}, perServing {nutrient: value})
- countryOfOrigin, countryOfOriginLabel (strings), australianIngredientsPercent (number)
- price, wasPrice, savings (numbers, AUD), discountPercent (number), isOnSpecial, isHalfPrice (booleans)
- promotion (string, the offer on the shelf), multibuyQuantity (integer), multibuyPrice (number, AUD)
- unitPrice (number), unitPriceMeasure (string, "1L", "100G"), unitPriceText (string), currency ("AUD")
- inStock, isAvailable, isNew, isOnlineOnly (booleans), supplyLimit (number, most units per order)
- isDeliveryAvailable, isPickupAvailable, isExpressAvailable (booleans), nextAvailableAt (RFC 3339 UTC)
- isMarketplace (boolean, Everyday Market), seller (string), isSponsored (boolean)
- imageUrl (string), images (array of strings)
- searchQuery (string), sourceUrl (string), position (integer, rank in its search or shelf), scrapedAt (RFC 3339)
Use apify-client for Python or JavaScript: client.actor("silentflow/woolworths-products-scraper").call(run_input=...).

How to scrape Woolworths products

Three inputs, from the simplest to the most complete. Each one runs as is.

Price a whole search in one run

Type the words a shopper would type. The run reads the results page by page, 36 products per page, and stops at Max products.

{
"keywords": ["tim tam", "coffee beans"],
"maxItems": 200
}

Pull this week's chocolate specials, cheapest per 100 g first

Keep only the products on special and read them by unit price, so the best value comes first. Multibuys (2 for a set price) count as specials, as on the site.

{
"keywords": ["chocolate"],
"specialsOnly": true,
"sort": "unit_price_asc",
"maxItems": 40
}

Track an aisle, the half-price page and a fixed basket together

Mix links, stockcodes and barcodes in the same run. The ids come back with their country of origin; switch on the last option to add it to the other rows too.

{
"startUrls": [
{ "url": "https://www.woolworths.com.au/shop/browse/dairy-eggs-fridge/milk/lactose-free-milk?sortBy=CUPAsc" },
{ "url": "https://www.woolworths.com.au/shop/browse/specials/half-price" }
],
"productIds": ["888140", "6079070", "9310199012717"],
"includeDetails": true,
"maxItems": 80
}

Input parameters

ParameterTypeDefaultDescription
keywordsarray of strings["milk"] in the formWhat you would type in the Woolworths search box. Every page of results is read, up to Max products.
startUrlsarray of linksnonewoolworths.com.au category, aisle, specials, search or product pages, as your browser shows them.
productIdsarray of stringsnoneStockcodes (the number in a product link), barcodes printed on the pack, or product links.
maxItemsinteger100Maximum rows for the whole run, across all inputs. A product found twice is saved once.
sortstringrelevancerelevance, price_asc, price_desc, unit_price_asc, unit_price_desc, name_asc, name_desc or newest. A link that carries its own sortBy keeps it.
specialsOnlybooleanfalseKeep only products on special: reduced prices with their was price, half price and multibuys. Applies to keywords and links.
includeDetailsbooleanfalseAdd the country of origin, the origin label and the share of Australian ingredients to rows found by keyword or link. About one second more per product.

Accepted formats.

  • Keywords: plain words, any case: a product (milk), a brand (Cadbury), a brand with a product (tim tam, pauls zymil). A barcode typed as a keyword finds its product too.
  • Category and aisle links: https://www.woolworths.com.au/shop/browse/dairy-eggs-fridge, .../dairy-eggs-fridge/milk, .../dairy-eggs-fridge/milk/full-cream-milk, at any depth. ?sortBy=PriceAsc, CUPAsc and the other site orders are kept.
  • Specials links: https://www.woolworths.com.au/shop/browse/specials/half-price, .../specials/half-price/pantry, .../specials/lower-shelf-price, .../specials/buy-more-save-more and the rest of the Specials menu.
  • Search links: https://www.woolworths.com.au/shop/search/products?searchTerm=coffee is read like the keyword coffee.
  • Product links and ids: https://www.woolworths.com.au/shop/productdetails/888140/woolworths-full-cream-milk, or 888140 alone. Everyday Market products have 10-digit stockcodes (1116200841).
  • Barcodes: 12 to 14 digits (9300633556150), found through the Woolworths search; a barcode Woolworths does not sell is named in the log.

A link that is not from woolworths.com.au, or a category path Woolworths does not have, is skipped and named in the log.

What data can you extract from Woolworths?

Each row is one product, flat, with the same 54 fields every time and null where Woolworths has no value.

GroupFields
Identity (5)id, url, name, brand, barcode
Content (18)description, size, unit, variety, department, categories, subcategories, ingredients, allergens, mayContain, freeFrom, dietaryClaims, healthStarRating, storageInstructions, nutrition, countryOfOrigin, countryOfOriginLabel, australianIngredientsPercent
Price (13)price, wasPrice, savings, discountPercent, isOnSpecial, isHalfPrice, promotion, multibuyQuantity, multibuyPrice, unitPrice, unitPriceMeasure, unitPriceText, currency
Availability (9)inStock, isAvailable, isNew, isOnlineOnly, supplyLimit, isDeliveryAvailable, isPickupAvailable, isExpressAvailable, nextAvailableAt
Seller (3)isMarketplace, seller, isSponsored
Media (2)imageUrl, images
Meta (4)searchQuery, sourceUrl, position, scrapedAt

price is today's online price. wasPrice is the shelf price before the special: the same as price when there is no special, higher when there is one, and savings and discountPercent measure the gap. promotion is the offer as Woolworths prints it on the tile (a multibuy with its unit price, a lower shelf price with the date of the old one, a bonus), and a multibuy also comes as numbers in multibuyQuantity and multibuyPrice. unitPrice is the price per unitPriceMeasure (1L, 100G, 1KG, 1EA), the figure to compare packs of different sizes.

nutrition holds the nutrition information panel of the pack: the serving size, the servings per pack, then one entry per nutrient per 100 g and per serve (energyKj, protein, fatTotal, fatSaturated, carbohydrate, sugars, sodium, and calcium, fibre or vitamins when the pack lists them). On the default run, 96 of 100 milks carried it, with about 10 nutrients per 100 g on average. allergens lists what the product contains, mayContain the trace warnings, freeFrom the free-from statements (Gluten Free, Lactose Free), and dietaryClaims the lifestyle claims (Vegetarian, Source of Protein). healthStarRating is filled when the pack prints one: 49 of 100 milks did.

countryOfOrigin and countryOfOriginLabel come from the product page: Australia and Product of Australia, Vietnam and Made in Vietnam. australianIngredientsPercent is the share of Australian ingredients when the label gives it. In our test with this option on, 17 of 20 rows got a country; the 3 without were Everyday Market products sold by partners, which carry no Australian origin label.

id is the Woolworths stockcode and url the permanent product page; both stay the same as long as the product is listed. images are Woolworths' own full-size product photos, imageUrl the main one. nextAvailableAt is the next delivery date Woolworths offers for the product, in RFC 3339 UTC, like scrapedAt. position is the product's rank in its search or shelf, sponsored tiles included, and isSponsored tells which tiles are paid placements.

Output example

A real row from the default run, complete:

{
"id": "155909",
"url": "https://www.woolworths.com.au/shop/productdetails/155909/pauls-zymil-lactose-free-full-cream-milk",
"name": "Pauls Zymil Lactose Free Full Cream Milk 3L",
"brand": "Pauls",
"barcode": "9310036070382",
"description": "Pauls Zymil Full Cream Milk is 100% Australian milk, lactose free dairy milk that is easy to digest.\n\nPauls Zymil Full Cream Milk is lactose free milk that is easy to digest*.\n\nMilk is a natural source of protein, vitamins and minerals essential for good health, but if milk doesn't always agree with you, then Pauls Zymil could be your answer. Pauls Zymil is lactose free and made from real milk, so it has all the natural goodness of regular milk.\n\n*As part of a varied and healthy diet, consuming Zymil instead of regular milk helps ease digestion in those who are sensitive to lactose.",
"size": "3L",
"unit": "Each",
"variety": "Milk",
"department": "Dairy, Eggs & Fridge",
"categories": ["Milk"],
"subcategories": ["Full Cream Milk", "Soy & Speciality Milk"],
"ingredients": "Full cream milk, enzyme (lactase).",
"allergens": ["Milk"],
"mayContain": null,
"freeFrom": ["Egg Free", "Fish Free", "Gluten Free", "Lactose Free", "Soy Free", "Wheat Free"],
"dietaryClaims": ["Gluten Free", "Low Salt", "Source of Protein", "Vegetarian"],
"healthStarRating": null,
"storageInstructions": "Keep refrigerated between 1C and 5C. Store in an upright position.",
"nutrition": {
"servingSize": "250.0 ML",
"servingsPerPack": "12.0",
"per100g": {
"calcium": "131.0mg",
"carbohydrate": "4.9g",
"energyKj": "271.0kJ",
"fatSaturated": "2.2g",
"fatTotal": "3.4g",
"protein": "3.4g",
"sodium": "41.0mg",
"sugars": "4.9g"
},
"perServing": {
"calcium": "329.0mg",
"carbohydrate": "12.3g",
"energyKj": "677.0kJ",
"fatSaturated": "5.5g",
"fatTotal": "8.5g",
"protein": "8.5g",
"sodium": "103.0mg",
"sugars": "12.3g"
}
},
"countryOfOrigin": null,
"countryOfOriginLabel": null,
"australianIngredientsPercent": null,
"price": 8.95,
"wasPrice": 9.8,
"savings": 0.85,
"discountPercent": 8.7,
"isOnSpecial": true,
"isHalfPrice": false,
"promotion": null,
"multibuyQuantity": null,
"multibuyPrice": null,
"unitPrice": 2.98,
"unitPriceMeasure": "1L",
"unitPriceText": "$2.98 / 1L",
"currency": "AUD",
"inStock": true,
"isAvailable": true,
"isNew": false,
"isOnlineOnly": false,
"supplyLimit": 4,
"isDeliveryAvailable": true,
"isPickupAvailable": true,
"isExpressAvailable": true,
"nextAvailableAt": "2026-10-24T00:00:00Z",
"isMarketplace": false,
"seller": "Woolworths",
"isSponsored": false,
"imageUrl": "https://cdn1.woolworths.media/content/wowproductimages/large/155909.jpg",
"images": [
"https://cdn1.woolworths.media/content/wowproductimages/large/155909.jpg",
"https://cdn1.woolworths.media/content/wowproductimages/large/155909_2.jpg"
],
"searchQuery": "milk",
"sourceUrl": "https://www.woolworths.com.au/shop/search/products?searchTerm=milk",
"position": 33,
"scrapedAt": "2026-10-22T18:26:33Z"
}

Advanced usage

Watch the half-price page of one aisle

Point the run at one part of the Specials menu. Every row carries its was price, savings and discount, so the table is a ready-made weekly specials report.

{
"startUrls": [
{ "url": "https://www.woolworths.com.au/shop/browse/specials/half-price/pantry" }
],
"maxItems": 300
}

Rank a category by price per litre

Sort an aisle by unit price to see which pack is the best value, whatever its size. Read unitPrice and unitPriceMeasure side by side.

{
"startUrls": [
{ "url": "https://www.woolworths.com.au/shop/browse/dairy-eggs-fridge/milk" }
],
"sort": "unit_price_asc",
"maxItems": 100
}

Track your own range every morning by barcode

Paste the barcodes of your products and schedule the run daily in Apify. Each run adds one dated row per product (scrapedAt), so price and special history builds up in your dataset or your warehouse.

{
"productIds": ["9310036070382", "9300633556150", "9310199012717"],
"maxItems": 50
}

Audit where a brand's products come from

Search a brand and switch on the country of origin. You get countryOfOrigin, the label printed on the pack and the share of Australian ingredients for each product.

{
"keywords": ["pauls"],
"includeDetails": true,
"maxItems": 60
}

Build an allergen and nutrition table for an app

Read several product types in one run and keep the allergens, freeFrom, dietaryClaims, healthStarRating and nutrition columns. Duplicates across keywords are saved once.

{
"keywords": ["gluten free bread", "lactose free milk", "protein bar", "oat milk"],
"maxItems": 400
}

FAQ

What is Woolworths? Woolworths is one of Australia's largest supermarket chains. Its online store, woolworths.com.au, lists groceries, household goods and the Everyday Market of partner sellers, with the prices, specials and pack information this actor reads.

What does one row contain? One product: its stockcode and link, name, brand and barcode, size and department, the price, was price, unit price and special, the ingredients, allergens and nutrition panel, the Health Star Rating when the pack has one, stock and delivery options, the seller and the photos. 54 fields, with null where Woolworths gives no value.

Do I need a Woolworths account? No. The actor reads the same public product information any visitor sees on woolworths.com.au. No login, no Everyday Rewards card, no API key.

How many products can I get? As many as you set in Max products, across all your keywords, links and ids. A search or a shelf is read page by page, 36 products per page, until it ends or the cap is reached, up to 10,800 products per keyword or link. A search for milk lists about 2,700 products.

Are these the prices I pay? They are the prices woolworths.com.au shows online at the time of the run, with the was price and the offer of the current special. Woolworths changes its specials every week, so schedule the run to follow them. Prices in a given store can differ from the online ones.

Can I combine the sort, the specials filter and several inputs? Yes. They add up: specialsOnly with unit_price_asc and the keyword chocolate returns the chocolate specials from the best value per 100 g. Keywords, links and ids can all sit in the same run; the cap counts them together and a product found twice is saved once.

Why is healthStarRating or nutrition empty on some rows? Woolworths only shows what the pack prints. A Health Star Rating is optional in Australia (49 of 100 milks had one in our test), and non-food products such as appliances or cleaning products have no nutrition panel or ingredients.

What is Everyday Market, and how do I spot it? Everyday Market is Woolworths' marketplace of partner sellers, mostly homewares, appliances and toys. Those rows have isMarketplace set to true and the partner's name in seller; Woolworths' own products show Woolworths. Partner products often have no barcode or brand, and no country of origin label.

How do I find a stockcode? It is the number in the product link: 888140 in woolworths.com.au/shop/productdetails/888140/woolworths-full-cream-milk. You can also paste the link itself, or the barcode printed on the pack.

Are the links and images permanent? url is the permanent product page and id the stockcode, both stable while the product is listed. images are Woolworths' own product photos. Prices, specials and stock are live values: each row is stamped with scrapedAt so you know when it was read.

More SilentFlow scrapers

๐Ÿ›’ E-commerce

๐Ÿ’ผ Jobs

๐Ÿ  Real estate

๐Ÿ“ฃ Social media

๐Ÿข Business data

โœˆ๏ธ Travel

๐ŸŽฏ Lead generation

๐Ÿ”Ž SEO

๐Ÿ“ˆ Marketing

๐ŸŽฌ Video

๐Ÿ“ฐ News

๐Ÿงฐ More tools

Support

Need something this scraper doesn't do yet? We ship features fast.

  • Feature requests go straight to our backlog
  • Enterprise needs? We do custom integrations and high-volume plans
  • Pricing questions? Check the Monetization tab on the actor page

Response time: usually under 24 hours.

This Actor extracts publicly available product data from Woolworths Australia (woolworths.com.au). It does not bypass any login, paywall or CAPTCHA, and never uses a Woolworths account. The rows describe products, prices and pack information, and hold no personal data about shoppers. Users are responsible for complying with Woolworths' terms of service and applicable laws, including data protection laws such as GDPR, CCPA and PIPL where relevant. The data returned is informational; check prices, allergens and nutrition on the pack or with Woolworths before a purchase, a health decision or a regulated use.

Woolworths Products Scraper by SilentFlow: Woolworths prices, specials, barcodes and nutrition, ready for your spreadsheet.