Australian Supermarkets Scraper - Woolworths & ALDI Prices
Pricing
from $0.27 / 1,000 products
Australian Supermarkets Scraper - Woolworths & ALDI Prices
Search Woolworths and ALDI the way you would on their websites, or paste category and product links, and get one row per product: price, was-price, unit price, size, special, availability, image and link. Coles isn't covered yet. No account needed.
Pricing
from $0.27 / 1,000 products
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Search Woolworths and ALDI the way you would on their websites, or paste a category or product link, and get one row per product: name, brand, size, price, was-price and saving, unit price, availability, image and link. Both stores answer the same search in one run, so a price comparison is a sort away.
Two things to know first. Coles isn't covered yet; Coles links are skipped and not charged. And Woolworths shows prices for the store picked by your suburb. Nobody picks one here, so you get the prices Woolworths shows when no suburb is set, and each row says which store that was (storeId). Your local shelf can differ.
| Input | Search words, or Woolworths and ALDI category, product and search links |
| Output | One row per product: name, brand, size, price, was-price, saving, unit price, special, availability, categories, barcode (Woolworths), image, link |
| Ceiling | 2,000 products per search or category, 20,000 per run |
| Speed | Roughly 600 to 1,100 Woolworths products a minute; ALDI is quicker |
| Account needed | None from you |
| Price | $0.28 per 1,000 products, flat on every plan. The free plan's $5 a month covers about 17,800 |
๐ What Australian Supermarkets Scraper does
You give it what you'd type into the search box, full cream milk or vegemite, and it runs that search at Woolworths and at ALDI and returns every product each store lists, in the store's own order. Or paste links: a category page returns the products in it, a product page returns that product.
Prices are numbers, not text: 4.5, not "$4.50". Specials come with the old price and the saving worked out. The unit price comes both ways, 2.25 plus 1L, and as the shelf label prints it, $2.25 / 1L, so you can compare a 2L bottle with a 3L one without doing the sums.
Woolworths also lists products that other businesses sell through its website. On a search for milk that was two listings in three, mostly bulk packs and things that aren't groceries. You get Woolworths' own range unless you tick Include other sellers at Woolworths.
๐ What data you get from each Woolworths and ALDI product
| What you get | Field |
|---|---|
| Which store, and what found it | store, searchTerm, inputUrl, position |
| The store's product number, name, brand and pack size | productId, name, brand, size |
| Price, old price, saving and the special's wording | price, wasPrice, savings, onSpecial, promotion |
| Unit price, as a number and as printed | unitPrice, unitPriceUnit, unitPriceText |
| Sold by weight (the price is for a typical pack) | soldByWeight |
| Availability | available, inStock, availableFrom |
| The store's own aisles for the product | categories |
| Barcode, Woolworths only | barcode |
| Sponsored listing and marketplace seller flags, Woolworths only | sponsored, marketplace |
| The store whose prices these are, Woolworths only | storeId |
| Product page and picture | url, imageUrl |
โถ๏ธ How to scrape Woolworths and ALDI prices
- Open Australian Supermarkets Scraper and click Try for free.
- Type your searches into Search words, one per line, and tick the stores under Stores to search.
- Or paste links copied from woolworths.com.au or aldi.com.au into Category or product links.
- Set Products per search or category while you're testing, since you pay per product.
- Click Start, then download the table as CSV, Excel or JSON, or read it through the Apify API.
Start it with everything empty and you get one labelled sample row, free, so you can see the columns first.
๐ฐ How much does it cost to scrape Woolworths and ALDI prices?
$0.28 per 1,000 products. Flat on every Apify plan, no volume tiers. On the free plan, the $5 Apify gives you each month covers about 17,800 products.
You pay for products delivered and nothing else. A search that finds nothing, a misspelt search, a product link that no longer exists, a Coles link and the sample row are all free. A product the store lists twice in one search, which Woolworths does with sponsored products, is returned and charged once.
๐ฅ What you give it
{"searchTerms": ["full cream milk", "vegemite"],"stores": ["woolworths", "aldi"],"urls": ["https://www.woolworths.com.au/shop/browse/dairy-eggs-fridge/milk","https://www.aldi.com.au/products/dairy-eggs-fridge/k/960000000"],"maxResultsPerSearch": 100}
| Field | Default | What it is |
|---|---|---|
searchTerms | none | Searches, one per line, run at each ticked store. Up to 200. |
stores | both | woolworths, aldi, or both. Applies to search words only. |
urls | none | Woolworths or ALDI links: a category page, a product page or a search results page. Up to 500. |
includeMarketplace | false | Also return products other businesses sell through the Woolworths website. |
maxResultsPerSearch | 100 | The most products from one search at one store, or from one category link. Up to 2,000. |
maxResults | 5000 | The most products in the whole run. Up to 20,000. |
A link from anywhere else gets a free row saying it was skipped, and the rest of the run carries on.
๐ค What you get back
A real row from a run on 3 October 2026:
{"recordType": "product","store": "Woolworths","searchTerm": "milk","inputUrl": null,"position": 9,"productId": "44528","name": "Norco Full Cream Milk 2L","brand": "Norco","size": "2L","price": 4.5,"wasPrice": 5.05,"onSpecial": true,"savings": 0.55,"promotion": "Save $0.55","unitPrice": 2.25,"unitPriceUnit": "1L","unitPriceText": "$2.25 / 1L","soldByWeight": false,"available": true,"inStock": true,"availableFrom": null,"categories": ["Dairy, Eggs & Fridge", "Milk", "Full Cream Milk"],"url": "https://www.woolworths.com.au/shop/productdetails/44528/norco-full-cream-milk","imageUrl": "https://cdn1.woolworths.media/content/wowproductimages/large/044528.jpg","barcode": "9322042000048","sponsored": false,"marketplace": false,"storeId": "1101","currency": "AUD","scrapedAt": "2026-10-03T16:03:05.288Z"}
| Field | How to read it |
|---|---|
price | Dollars, as the store shows it today. For meat ALDI sells by weight it's the price of a typical pack, and unitPrice is the per-kilo price. A product Woolworths lists as unavailable comes back with price: null and available: false. |
wasPrice, savings | Only on a special; null otherwise. |
position | Where the product sat in that store's results for that search, from 1. |
inStock | Woolworths says; ALDI doesn't publish stock, so it's null there. |
availableFrom | ALDI's date for Special Buys that go on sale on a set day. |
storeId | The Woolworths store these prices belong to. Listings from other sellers carry their own number. null for ALDI, which lists one price per product online. |
sponsored | Woolworths mixes paid listings into its results. They're real products at real prices; filter them out if you only want the plain search. |
marketplace | true on a listing from another seller, which only appears when you ask for them. |
๐งพ Reading the output
Three kinds of row can land in your dataset, and recordType tells them apart.
| Row | How to spot it | Billed |
|---|---|---|
| A product | recordType: "product" | yes |
| The sample row | recordType: "sample", _sample: true | no |
| A note about one search or link | recordType: "diagnostic", _diagnostic: true, an errorCode | no |
Filter on recordType == "product" and you have your products. The notes say:
| Code | What it means |
|---|---|
NO_RESULTS | The store has nothing for that search or link. |
DIFFERENT_SEARCH | The store didn't recognise the words and showed results for its own correction instead, named in suggestion. Nothing from that search is returned or charged; search for the suggestion if it's what you meant. |
NOT_FOUND | The product link no longer leads to a product. |
NOT_COVERED | A Coles link. Coles isn't covered yet. |
BAD_INPUT | A setting or link that can't be used, or a Woolworths category that doesn't exist. |
NOT_ANSWERED | The store didn't answer that search this time. Run it again later. |
PARTIAL | A later page of results didn't come back. What came before it is in the dataset. |
NOT_LOOKED_UP | The run stopped before reaching it: your spending limit, the run's total, or its timeout. |
MAX_CHARGE_TOO_LOW | Your spending limit for the run doesn't cover one product. |
RUN_REPORT in the run's storage lists every search and link with its outcome and how many products the store said it had.
๐ก What people use it for
- Comparing a shopping list across both stores. Run the list as search words, then sort each search by
unitPrice. - Tracking prices over time. Schedule the same searches weekly and keep the rows;
productIdstays the same between runs. - Watching specials in one aisle. Paste a category link and keep the rows where
onSpecialis true. - Feeding a budgeting or meal-planning app that needs real prices, unit prices and pictures.
A weekly price check in three steps:
- Put your regular items into Search words with Products per search or category at 10.
- Schedule the run for the same time every week.
- Join each week's rows on
storeandproductIdand look atpriceandwasPrice.
๐ง What it does not do
- No Coles. Coles links get a free row and nothing else.
- No choice of suburb or store. Woolworths prices are the ones it shows with no suburb set, and
storeIdsays which store that is. - No stock counts. Woolworths says in stock or not; ALDI says nothing about stock.
- No reviews, nutrition panels or ingredients.
- No online orders at ALDI. ALDI Australia doesn't sell groceries online, so its rows are the prices it lists on its website.
- Search results follow the store's own search, sponsored listings included. A broad word like milk brings back milk chocolate and meal-replacement shakes too.
- Long Woolworths searches come up a little short. Its result pages repeat some products, so a search it says has 689 products returned 621 different ones. Reading past its last page brings back nothing new.
๐งญ Which supermarket scraper do you need?
| If you want | Use |
|---|---|
| Woolworths and ALDI products and prices | This one |
| An alert when a product page on an online shop changes price or stock | Product Price & Stock Monitor |
| Supermarket locations and ratings from Google Maps | Google Maps Scraper |
| What shoppers say about one store | Google Maps Reviews Scraper |
| The same kind of product rows from Amazon | Amazon Scraper |
| Products and prices from a Shopify shop | Shopify Products Scraper |
โ Questions people ask
Do I need a Woolworths or ALDI account?
No. It reads what anyone can see on the two websites without logging in.
Why is a Woolworths price different from what I see in the app?
The app shows prices for the store your suburb or delivery area picks. This reads the prices Woolworths shows when no suburb is set, and storeId names that store. To check a row, open its link in a private browser window without choosing a suburb.
Can it scrape Coles prices?
Not yet. Coles links are accepted and skipped with a free note, so a list that mixes all three stores still runs.
Can I call it from code or connect it to an AI assistant?
Yes. The API tab has ready-made code for Python, JavaScript and the command line. For Claude, ChatGPT or another MCP client, connect https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/australian-supermarkets-scraper. Either way the run happens on your Apify account at the same price.
Is it legal to scrape supermarket prices?
It reads public product pages, the same ones any shopper sees, and no personal data. Apify's write-up on the legality of web scraping is a good starting point, and we are not lawyers.
๐ If something breaks
Open the Issues tab on the actor page. Include your searches or links and the run ID, and the log is enough for us to see what happened.