Woolworths Products Scraper avatar

Woolworths Products Scraper

Pricing

from $0.96 / 1,000 item extracteds

Go to Apify Store
Woolworths Products Scraper

Woolworths Products Scraper

Search Woolworths Australia and export product IDs, brands, pack sizes, current and unit prices, promotions, availability, categories, images, and timestamped source records.

Pricing

from $0.96 / 1,000 item extracteds

Rating

0.0

(0)

Developer

Automation Lab

Automation Lab

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Search Woolworths Australia and turn current Woolworths products into structured, timestamped records for grocery price and assortment monitoring.

The Actor accepts ordinary product, brand, or grocery-category searches and exports stable product IDs, GTIN barcodes, brands, pack sizes, online prices, unit prices, promotion fields, availability, categories, images, product links, and source timestamps.

It is unofficial and is not affiliated with Woolworths Group.

What does this Actor do?

The Actor runs the supplied searches against the public Woolworths Australia storefront.

For every accepted product card it normalizes:

  • identity and barcode fields;
  • display name, brand, and pack size;
  • current, prior, savings, and unit-price fields;
  • special and half-price indicators;
  • online availability and stock signals;
  • department, category, and subcategory fields;
  • large product image and canonical product URL;
  • the source search and collection timestamp.

Results go to the run's default Apify dataset, ready for JSON, CSV, Excel, XML, RSS, or API delivery.

Who is it for?

Retail and pricing analysts

Build comparable grocery baskets and observe current price or promotion changes across scheduled snapshots.

FMCG and brand teams

Measure which products appear for branded or category searches and retain product identity, category, and sponsored-placement signals.

Data engineers

Feed normalized Woolworths product records into a warehouse, spreadsheet, dashboard, or price-history pipeline.

Researchers and developers

Collect small, source-attributed product samples without maintaining browser automation or parsing storefront markup.

Why use this Woolworths products scraper?

  • Monitoring-ready records: each item includes a stable stock code, source URL, and scrapedAt timestamp.
  • Price context: current price, prior price, savings amount, unit price, and promotion state are kept together.
  • Useful product context: brand, pack size, category, availability, image, and canonical URL are included.
  • Bounded runs: maxItems provides an explicit cost and volume ceiling.
  • Multiple searches: submit up to 20 terms in one run and deduplicate products by Woolworths stock code.
  • Organic-only option: exclude sponsored cards when search-position analysis should use organic results only.
  • Australian routing included: the Actor manages the storefront session and Australian proxy route automatically.

What data can I extract?

FieldMeaning
querySearch term that produced the record
productIdStable Woolworths stock code
barcodeGTIN barcode when published
nameDisplay name, normally including size
brandProduct brand when exposed
packSizeSource pack-size label
priceCurrent online price in AUD
unitPriceNumeric comparison price
unitMeasureComparison unit such as 1L
unitPriceFormattedSource-formatted unit-price label
promotionSpecial, half-price, was-price, savings, label, and type fields
availableCurrent purchasable-online signal
inStockCurrent online stock signal
onlineOnlyOnline-only product flag
sponsoredSponsored search-card flag
supplyLimitPublished purchase limit when exposed
departmentWoolworths SAP department
categoryWoolworths SAP category
subcategoryWoolworths SAP subcategory
imageUrlLarge product image URL
productUrlCanonical Woolworths product URL
sourceUrlSearch URL used for the snapshot
scrapedAtISO 8601 collection timestamp

Fields that Woolworths does not expose for a product are returned as null rather than invented.

Getting started

  1. Open the Actor in Apify Console.
  2. Add one or more terms to Search terms.
  3. Choose a Maximum products limit.
  4. Keep Include sponsored products enabled for the complete returned search feed, or disable it for organic-only records.
  5. Click Start.
  6. Open the Results dataset view.
  7. Export the records or connect the dataset API to your workflow.

A practical first run is:

{
"queries": ["milk", "bread", "eggs"],
"maxItems": 30,
"includeSponsored": true
}

Input parameters

queries

Required array of 1–20 strings.

Each value must contain 2–100 characters and may be a product, brand, dietary need, or grocery-category search.

Examples include milk, Arnott's Tim Tam, oat milk, and vegan cheese.

maxItems

Optional integer from 1 to 5,000.

The limit applies across all searches after product-ID deduplication.

Default: 100.

includeSponsored

Optional boolean.

Set it to false when you want organic product cards only.

Default: true.

Example output

A current product record has this shape:

{
"query": "milk",
"productId": "888140",
"barcode": "9300633556150",
"name": "Woolworths Full Cream Milk 3L",
"brand": "Woolworths",
"packSize": "3L",
"price": 4.95,
"currency": "AUD",
"unitPrice": 1.65,
"unitMeasure": "1L",
"unitPriceFormatted": "$1.65 / 1L",
"promotion": {
"isOnSpecial": false,
"isHalfPrice": false,
"wasPrice": 4.95,
"savingsAmount": 0,
"label": null,
"type": null
},
"available": true,
"inStock": true,
"onlineOnly": false,
"sponsored": false,
"supplyLimit": 36,
"department": "FRESH CONVENIENCE",
"category": "DAIRY - MILK",
"subcategory": "DAIRY - MILK",
"imageUrl": "https://cdn0.woolworths.media/content/wowproductimages/large/888140.jpg",
"productUrl": "https://www.woolworths.com.au/shop/productdetails/888140/woolworths-full-cream-milk",
"sourceUrl": "https://www.woolworths.com.au/shop/search/products?searchTerm=milk",
"scrapedAt": "2026-09-19T06:36:48.932Z"
}

Prices and availability are snapshots, not historical records supplied by Woolworths.

Schedule repeated runs and retain datasets in your own destination when you need history.

How much does it cost to monitor Woolworths product prices?

The Actor uses pay-per-event pricing.

A run has one Start event and one Item processed event for every product saved to the default dataset.

The current BRONZE prices are:

  • Start: $0.005 per run;
  • Item extracted: $0.0016 per saved product.

At those prices, estimated Actor charges are:

Saved productsEstimated charge
10$0.021
100$0.165
1,000$1.605

Higher subscription tiers receive the lower item rates shown in Apify Console.

These examples estimate Actor event charges only.

Actual platform billing can also reflect plan rules, limits, refunds, fraud, disputes, taxes, corrections, and clawbacks.

Use maxItems to set a predictable output ceiling.

Recurring price monitoring workflow

  1. Choose a stable list of basket, brand, or category terms.
  2. Keep includeSponsored consistent between runs.
  3. Schedule the Actor daily or weekly.
  4. Export each dataset with its scrapedAt value.
  5. Join snapshots on productId.
  6. Compare price, promotion, available, and category fields.
  7. Alert only after your own validation rules confirm a meaningful change.

The Actor emits current snapshots; it does not merge past runs or send alerts itself.

Spreadsheet and data-pipeline integrations

Use Apify integrations to send the dataset to Google Sheets, Make, Zapier, Slack, webhooks, or a custom destination.

For warehouses, poll the default dataset endpoint after the run succeeds.

For idempotent loads, use the run ID plus productId as a composite ingestion key.

For time-series tables, store scrapedAt alongside every measurement rather than overwriting the prior record.

Run through the Apify API with cURL

Set your token in an environment variable rather than putting it in source code.

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~woolworths-australia-grocery-products-prices/runs" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"queries":["milk","bread"],"maxItems":50,"includeSponsored":true}'

Wait for the run to finish, then read its default dataset.

Run with JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor(
'automation-lab/woolworths-australia-grocery-products-prices',
).call({
queries: ['milk', 'bread'],
maxItems: 50,
includeSponsored: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Run with Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor(
'automation-lab/woolworths-australia-grocery-products-prices'
).call(run_input={
'queries': ['milk', 'bread'],
'maxItems': 50,
'includeSponsored': True,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

Use with MCP and AI assistants

Connect Claude Code to the Apify MCP server:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/woolworths-australia-grocery-products-prices"

Claude Desktop, Cursor, and VS Code setup

Claude Desktop, Cursor, and VS Code can use this equivalent MCP configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/woolworths-australia-grocery-products-prices"
}
}
}

Example prompts:

  • “Search Woolworths for milk, bread, and eggs and return 50 current product records.”
  • “Collect organic Arnott's Tim Tam search results without sponsored products.”
  • “Run the plant-based grocery searches weekly and compare product IDs and prices with the previous dataset.”

Always inspect the proposed input and cost ceiling before allowing an assistant to start a large run.

Reliability, retries, and failure behavior

Woolworths protects its Australian storefront and may reject mismatched network identities.

The Actor creates an Australian residential session, bootstraps storefront cookies, and reuses that identity for the catalog request.

On a transport, challenge, or invalid-response failure, it rotates the complete session and retries up to three times.

If all attempts fail, the run fails with a non-zero status instead of returning a misleading empty success.

Malformed inputs also fail before network requests begin.

Limits and data interpretation

  • The supported discovery mode is keyword search.
  • Search ranking and sponsored placement can change between runs.
  • Woolworths may return related or corrected products for low-confidence queries.
  • Prices and availability can depend on the fulfilment store selected by the public storefront session.
  • available and inStock are source signals, not a reservation or guarantee.
  • Categories are returned only when Woolworths publishes the relevant SAP attributes.
  • Product detail nutrition, ingredients, reviews, and historical prices are outside this Actor's contract.
  • The Actor does not download images; it exports their source URLs.
  • Large limits take longer and consume more residential proxy transfer.

Tips for better results

Use specific branded terms when you need a narrow product family.

Use several separate category terms when you need a broad basket.

Keep the same input, schedule, and sponsored setting for comparable recurring snapshots.

Deduplicate downstream on productId, not product name.

Treat null values as “not exposed in this response,” not as false or zero.

Start with 25–100 products before increasing the limit.

AI, privacy, and data retention

The Actor does not call an AI model and does not send data to an AI provider.

User-supplied search terms and public catalog requests transit Apify's Australian residential proxy infrastructure and Woolworths Australia.

The Actor creates no external cache or database of its own.

Run datasets, key-value stores, and logs follow the retention settings of the user's Apify account and can be deleted with Apify storage controls.

Optional MCP clients may process inputs and results under the user's own model and client configuration.

Responsible use and legality

This Actor accesses publicly visible Woolworths Australia product-search data.

You are responsible for ensuring that your use complies with Woolworths terms, Apify policies, applicable laws, and contractual restrictions.

Do not use the Actor to overload the source, evade access controls for private data, reproduce protected content unlawfully, or make automated purchasing decisions without validation.

Product names, images, brands, and other source content may be protected by intellectual-property rights.

Collect only what you need and apply appropriate retention and access controls.

Troubleshooting

The run fails after several session attempts

Check the run log for bootstrap, HTTP, or response-shape errors.

Retry later with a small input; do not loop failed runs rapidly.

The Actor manages its own required Australian proxy route, so custom proxy configuration is not needed.

Woolworths can correct or broaden low-confidence searches.

Use more specific terms and validate query, name, and brand downstream.

I received fewer records than maxItems

The limit is a ceiling, not a guaranteed count.

The source may have fewer results, sponsored filtering may remove items, and duplicate product IDs across queries are saved only once.

Some category or barcode fields are null

Those fields are conditional on the public source response.

The Actor does not infer missing values.

Can I scrape product URLs directly?

Not in this version.

Use search terms and the returned productUrl values; direct detail-page enrichment is outside the supported contract.

FAQ

Does it work outside Australia?

Yes, runs can be started from anywhere because the Actor uses Australian residential routing for the Woolworths storefront.

Does it provide historical prices?

No.

It provides timestamped current snapshots that you can schedule and store to build your own history.

Does it include specials?

Yes.

It exports special, half-price, was-price, savings, promotion-label, and promotion-type fields when Woolworths exposes them.

Does it charge for failed or filtered records?

The item event is charged only for accepted product records written to the dataset.

The one-time start event still applies when a run begins.

Can it monitor a whole category?

You can search category phrases such as oat milk or vegan cheese.

Direct category-URL crawling is not currently supported.

Is the Actor affiliated with Woolworths?

No.

It is an independent, unofficial automation product.

For grocery monitoring outside Australia, consider:

Choose this Actor when the required source is Woolworths Australia and the buyer job is search-based product, price, promotion, and availability monitoring.

Support

When reporting a problem, include the run URL, non-sensitive input, expected result, and a short description of the unexpected behavior.

Do not paste your Apify token or other credentials into support messages.