Woolworths SA Scraper: Prices, Specials & Promotions avatar

Woolworths SA Scraper: Prices, Specials & Promotions

Pricing

from $4.00 / 1,000 products

Go to Apify Store
Woolworths SA Scraper: Prices, Specials & Promotions

Woolworths SA Scraper: Prices, Specials & Promotions

Scrape Woolworths South Africa (woolworths.co.za) products by search term, category or URL: prices in all three Woolworths price zones, specials, promotions, MyDifference (WRewards) deals, was-prices, ratings, barcodes and unit prices. Food, home, beauty and clothing.

Pricing

from $4.00 / 1,000 products

Rating

0.0

(0)

Developer

Zaiq

Zaiq

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Get product prices, specials, promotions and MyDifference (WRewards) member deals from Woolworths South Africa (woolworths.co.za) as structured data: food, home, beauty and clothing. Search by keyword, open a category or give product links. Every product comes with its price in each of Woolworths' three price zones. Requests go through South African home internet connections.

What it does

  • Searches the catalogue like the site's search box, reads category pages (current /browse/... links and older /cat/... links) and single products.
  • Returns, for every product: price, was-price, the price in all three Woolworths price zones, every promotion the site shows ("Now R329.99 Save R50", "Buy any 2 save 20%", "Buy any 4 for 3"), the MyDifference member price where there is one, barcode (for products whose Woolworths number is their EAN), brand and range, pack size, unit price per kg, litre or item, rating and review count, category path, image and product link.
  • Specials only: returns just the products in the site's "On Promotion" filter.
  • Food only: leaves clothing, beauty and home products out of searches.
  • Weighed products (meat, poultry, some cheese) are marked soldByWeight with the site's price per kg.

Who uses it

  • Price comparison and basket-tracking sites following grocery prices and specials across South African chains.
  • Food brands and suppliers checking how their products are priced and promoted at Woolworths.
  • Retail and economic analysts comparing Woolworths prices by price zone and over time, with unit prices.
  • Shoppers watching MyDifference deals and specials on a list of products.

Example

Two searches on 4 October 2026 ("coffee beans" and "ayrshire milk", 8 products each), through South African residential connections, in 9 seconds:

ProductZone 10Zone 30Zone 60Promotion for everyoneMyDifference
Fresh Full Cream Ayrshire Milk 2 LR45.99R47.99R39.99nonenone
Fresh Full Cream Ayrshire Milk 1 LR29.99R31.99R25.99nonenone
WCafe Italian Blend Coffee Beans 1 kgR379.99R379.99R379.99Now R329.99Now R304.99

The same 2 L of milk is priced R8 apart between zones, and the coffee beans cost R75 less for MyDifference members.

Other test runs the same day:

  • 20 everyday search terms, up to 60 products each: 1,081 products (some searches have fewer) in 17 seconds, no failed or blocked requests.
  • 350 products of one search ("chocolate", 1,379 on the site) and three category links (including an old /cat/... link): 156 products.
  • Specials only for coffee and chocolate: 80 products; "yoghurt" and "coffee beans": 13 MyDifference member deals.

Input

{
"searchTerms": ["milk", "coffee"],
"startUrls": [{ "url": "https://www.woolworths.co.za/browse/food-south-africa/milk-dairy-eggs" }],
"maxItemsPerSource": 100,
"specialsOnly": false,
"priceZone": "10",
"foodOnly": false
}
FieldWhat it does
searchTermsWords to search for.
startUrlsCategory (/browse/... or older /cat/...), search (/browse?searchterm=milk) or product (any .../prod/.../_/A-20026875 link), or a bare product number (20026875).
maxItemsPerSourceProducts per search term or URL (default 100). A product link gives one.
maxItemsProducts in total for the run; 0 means no total limit.
specialsOnlyOnly products on promotion.
priceZoneWhich zone fills price, wasPrice and unitPrice: 10 (default), 30 or 60. All three are always in regionalPrices.
foodOnlyLeave clothing, beauty and home out of searches.
sortrelevance (default), price_low, price_high, bestsellers, rating or newest.
proxyConfiguration, maxConcurrencyAdvanced: South African residential connections by default; requests at once (default 6).

Output

One row per product. This row is from the example above (image link shortened):

{
"retailer": "Woolworths",
"productId": "6009189862465",
"sku": null,
"barcode": "6009189862465",
"name": "WCafe Italian Blend Coffee Beans 1 kg",
"brand": "Woolies Brands",
"size": "1 kg",
"sizeValue": 1.0,
"sizeUnit": "kg",
"packCount": 1,
"soldByWeight": null,
"price": 379.99,
"currency": "ZAR",
"wasPrice": null,
"promoPrice": 329.99,
"onSpecial": true,
"savings": null,
"unitPrice": 379.99,
"unitPriceUnit": "kg",
"loyaltyPrice": 304.99,
"loyaltyProgram": "Woolworths MyDifference (WRewards)",
"loyaltyValidFrom": null,
"loyaltyValidUntil": null,
"promotions": [
{ "text": "Mydifference Now R304.99 Save R75 Wcafe coffee Beans", "type": null, "memberOnly": true, "promoUnitPrice": 304.99, "minQuantity": 1, "promotionId": null },
{ "text": "Now R329.99 Save R50 Wcafe coffee Beans", "type": null, "memberOnly": false, "promoUnitPrice": 329.99, "minQuantity": 1, "promotionId": null }
],
"inStock": null,
"stockStatus": null,
"stockQuantity": null,
"category": "Food > Promotions > MyDifference Favourites",
"categories": ["Food", "Promotions", "MyDifference Favourites"],
"imageUrl": "https://assets.woolworthsstatic.co.za/WCafe-Italian-Blend-Coffee-Beans-1-kg-6009189862465.jpg?V=Qii5&o=...",
"url": "https://www.woolworths.co.za/prod/Food/Promotions/MyDifference-Favourites/WCafe-Italian-Blend-Coffee-Beans-1-kg/_/A-6009189862465",
"rating": 5.0,
"reviewCount": 83,
"seller": "Woolworths",
"deliveryEstimate": null,
"store": null,
"position": 1,
"sourceType": "search",
"sourceValue": "coffee beans",
"scrapedAt": "2026-10-04T16:12:37Z",
"priceZone": "10",
"regionalPrices": { "zone10": 379.99, "zone30": 379.99, "zone60": 379.99 },
"regionalWasPrices": null,
"range": null,
"productType": "Food",
"badges": ["SAVE", "WREWARDS"],
"memberDeal": true
}
  • price is the price in the chosen zone; promoPrice is the best single-item promotion open to every shopper; loyaltyPrice is the best single-item MyDifference price. Multi-buys stay in promotions with minQuantity and the price per item they work out to (promoUnitPrice). memberDeal is true when any deal is for members.
  • barcode is filled when the product's Woolworths number is a valid EAN-13 (most branded products); Woolworths' own eight-digit numbers are not barcodes and are left out.
  • All prices are in rand, as the site shows them, VAT included.

Use it from code, automations and AI agents

  • API: run it and get the results in one call: POST https://api.apify.com/v2/acts/zaiq~woolworths-sa-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN with the input as JSON. The API tab on this page has ready-made Python, JavaScript and cURL examples.
  • Python (pip install apify-client):
from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("zaiq/woolworths-sa-scraper").call(run_input={'searchTerms': ['milk', 'coffee'], 'startUrls': [{'url': 'https://www.woolworths.co.za/browse/food-south-africa/milk-dairy-eggs'}], 'maxItemsPerSource': 20})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)
  • No code: connect it to Google Sheets, Zapier, Make or n8n from the Integrations tab, schedule runs in Apify Console, and get a webhook when a run finishes.
  • AI agents (MCP): add it as a tool to Claude, Cursor or any MCP client through Apify's MCP server: https://mcp.apify.com?tools=zaiq/woolworths-sa-scraper.

Pricing

$4.00 per 1,000 products ($0.004 per product row). Apify's platform usage is included.

Each product row is one charged event. Failed, blocked and empty pages, retries and duplicates are free. Your spending limit is respected: the run stops cleanly before going over it.

Limits

  • Price zones: Woolworths prices products by zone (10, 30 and 60) and decides a shopper's zone from the delivery address on its own servers; the mapping of zones to areas is not published, so rows give all three zone prices rather than a city. Without an address the site shows zone 10 in search and category listings and zone 30 on product pages.
  • Stock levels are not in Woolworths' listings, so inStock is empty. Promotion end dates are not published either.
  • Personalised offers inside a MyDifference account are not included; nothing here signs in.
  • Use the data in line with the retailer's terms and South African law. This Actor is not affiliated with or endorsed by Woolworths Holdings.

FAQ

Which price should I use? For a like-for-like series, keep one priceZone. To see the spread, read regionalPrices; the milk in the example differs by R8 between zones.

Does it include clothing and home products? Yes, searches include every department unless Food only is on. Clothing rows also carry colour.

How current are the prices? Each run reads the site live; scrapedAt is the time of reading.