Woolworths Australia API & Scraper
The Woolworths API turns woolworths.com.au, Australia's largest supermarket, into clean JSON in seven actions: search, product/detail, product/reviews, deals, category, categories and suggest.
🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.
Every product comes back with its shelf price in AUD, the was-price and savings when it is on special, the half-price flag, the cup price exactly as the shelf label shows it ($1.65 / 1L), multi-buy offers such as 2 for $12.00 kept separate from the price, availability, badges, and the star rating with rating count. Deli and meat sold by weight say so: the price is per kg and the 100 g step price is returned too, while variable-weight packs such as lamb chops 450g - 800g return their price range. Everyday Market items name the third-party seller, the delivery fee and the delivery window. product/detail adds every image, the barcode, ingredients, allergens, dietary claims, Health Star Rating, the full nutrition panel and the country-of-origin label. deals reads the site's own Half Price, Lower Shelf Price, Buy More Save More, Everyday Low Price and Seasonal Price pages. Verification on 2026-09-15: 20 of 20 searches and 43 of 43 product reads succeeded, 48 of 48 controlled cases passed, 7 of 7 products matched an independent read of the source on title, price, was-price, availability and rating, and search rows agreed with product records on 43 of 43 products. No Woolworths account needed - one ReefAPI key and the standard { ok, data, meta, error } envelope.
Which Woolworths price is which - specials, cup prices, per-kg and variable weight
Woolworths prices a product five different ways, and a tracker that stores one number mixes them. The API names each case. Measured on 2026-09-15.
| Woolworths product | price | What else comes back | How to read it |
|---|---|---|---|
| Maltesers Milk Chocolate Snack & Share Bag 140g | 3.50 AUD | original_price 7.00, savings 3.50, half_price true | On special: store price and original_price together |
| KitKat Milk Chocolate Mini Bars 154g 11 pack | 7.50 AUD | multi_buy: 2 for 12.00, 6.00 each | The multi-buy is never subtracted from price |
| Leg Ham Shaved From The Deli per 100g | 19.90 AUD | price_per kg, increment_price 1.99 per 100 g | Sold by weight: price is per kg |
| Woolworths Lamb Midloins Chops 450g - 800g | 20.80 AUD | price_min 11.70, price_max 20.80, price_is_estimate true | Variable-weight pack: price is the heaviest pack |
| Woolworths Full Cream Milk 3L | 4.95 AUD | unit_price 1.65, unit_price_text $1.65 / 1L | Plain shelf price; original_price is null |
unit_price is the cup price for the price you pay today. On listing pages Woolworths also carries a second unit-price string that is still based on the was-price for products on special (Caramello Koala: $2.50 / 100G versus $4.17 / 100G); the API does not use it.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/woolworths/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"query": "milk"
}
}{
"ok": true,
"meta": {
"api": "woolworths",
"endpoint": "search",
"mode": "live",
"latency_ms": 5154.9,
"record_count": 24,
"bytes": 505576,
"cache_hit": false,
"pagination": {
"page": 1,
"has_more": true,
"page_size": 24,
"total": 2206
},
"upstream_requests": 3
},
"data": {
"results": [
{
"product_id": "888140",
"title": "Woolworths Full Cream Milk 3L",
"name": "[redacted-name]",
"brand": "Woolworths",
"package_size": "3L",
"barcode": "9300633556150",
"url": "https://www.woolworths.com.au/shop/productdetails/888140/woolworths-full-cream-milk",
"image": "https://cdn1.woolworths.media/content/wowproductimages/large/888140.jpg",
"breadcrumb": [
{
"level": "[trimmed-depth]",
"id": "[trimmed-depth]",
"name": "[trimmed-depth]"
},
{
"level": "[trimmed-depth]",
"id": "[trimmed-depth]",
"name": "[trimmed-depth]"
},
{
"level": "[trimmed-depth]",
"id": "[trimmed-depth]",
"name": "[trimmed-depth]"
}
],
"price": 4.95,
"price_display": "$4.95",
"currency": "AUD",
"original_price": null,
"original_price_display": null,
"savings": null,
"discount_percent": null,
"on_special": false,
"half_price": false,
"member_price": null,
"member_unit_price_text": null,
"unit_price": 1.65,
"unit_price_measure": "1L",
"unit_price_text": "$1.65 / 1L",
"sold_by": "piece",
"price_per": "each",
"increment_price": null,
"increment_grams": null,
"price_min": null,
"price_max": null,
"price_is_estimate": false,
"approx_weight_grams": null,
"multi_buy": null,
"availability": "in_stock",
"available": true,
"in_stock": true,
"next_available_date": "2026-09-18",
"max_order_quantity": 36,
"badges": [
{
"type": "[trimmed-depth]",
"text": "[trimmed-depth]",
"promotion": "[trimmed-depth]"
}
],
"promotion_types": [],
"rewards_points_offer": null,
"new": false,
"online_only": false,
"marketplace": false,
"seller": {
"type": "retailer",
"name": "Woolworths",
"id": null,
"delivery_fee": null,
"free_shipping": null,
"dispatch_note": null,
"delivery_from": null,
"delivery_to": null
},
"has_variants": false,
"sponsored": false,
"fulfilment_store_id": "1101",
"rating": 2.67,
"rating_count": 6,
"review_count": 6,
"rating_scale": 5,
"rating_distribution": {
"1": 3,
"2": 0,
"3": 1,
"4": 0,
"5": 2
}
},
{
"product_id": "888137",
"title": "Woolworths Full Cream Milk 2L",
"name": "[redacted-name]",
"brand": "Woolworths",
"package_size": "2L",
"barcode": "9300633556143",
"url": "https://www.woolworths.com.au/shop/productdetails/888137/woolworths-full-cream-milk",
"image": "https://cdn1.woolworths.media/content/wowproductimages/large/888137.jpg",
"breadcrumb": [
{
"level": "[trimmed-depth]",
"id": "[trimmed-depth]",
"name": "[trimmed-depth]"
},
{
"level": "[trimmed-depth]",
"id": "[trimmed-depth]",
"name": "[trimmed-depth]"
},
{
"level": "[trimmed-depth]",
"id": "[trimmed-depth]",
"name": "[trimmed-depth]"
}
],
"price": 3.4,
"price_display": "$3.40",
"currency": "AUD",
"original_price": null,
"original_price_display": null,
"savings": null,
"discount_percent": null,
"on_special": false,
"half_price": false,
"member_price": null,
"member_unit_price_text": null,
"unit_price": 1.7,
"unit_price_measure": "1L",
"unit_price_text": "$1.70 / 1L",
"sold_by": "piece",
"price_per": "each",
"increment_price": null,
"increment_grams": null,
"price_min": null,
"price_max": null,
"price_is_estimate": false,
"approx_weight_grams": null,
"multi_buy": null,
"availability": "in_stock",
"available": true,
"in_stock": true,
"next_available_date": "2026-09-18",
"max_order_quantity": 36,
"badges": [
{
"type": "[trimmed-depth]",
"text": "[trimmed-depth]",
"promotion": "[trimmed-depth]"
}
],
"promotion_types": [],
"rewards_points_offer": null,
"new": false,
"online_only": false,
"marketplace": false,
"seller": {
"type": "retailer",
"name": "Woolworths",
"id": null,
"delivery_fee": null,
"free_shipping": null,
"dispatch_note": null,
"delivery_from": null,
"delivery_to": null
},
"has_variants": false,
"sponsored": false,
"fulfilment_store_id": "1101",
"rating": null,
"rating_count": null,
"review_count": null,
"rating_scale": null,
"rating_distribution": null
},
{
"product_id": "88436",
"title": "Dairy Farmers Full Cream Milk 2L",
"name": "[redacted-name]",
"brand": "Dairy Farmers",
"package_size": "2L",
"barcode": "9310199012717",
"url": "https://www.woolworths.com.au/shop/productdetails/88436/dairy-farmers-full-cream-milk-full-cream-milk",
"image": "https://cdn1.woolworths.media/content/wowproductimages/large/088436.jpg",
"breadcrumb": [
{
"level": "[trimmed-depth]",
"id": "[trimmed-depth]",
"name": "[trimmed-depth]"
},
{
"level": "[trimmed-depth]",
"id": "[trimmed-depth]",
"name": "[trimmed-depth]"
},
{
"level": "[trimmed-depth]",
"id": "[trimmed-depth]",
"name": "[trimmed-depth]"
}
],
"price": 4.7,
"price_display": "$4.70",
"currency": "AUD",
"original_price": null,
"original_price_display": null,
"savings": null,
"discount_percent": null,
"on_special": false,
"half_price": false,
"member_price": null,
"member_unit_price_text": null,
"unit_price": 2.35,
"unit_price_measure": "1L",
"unit_price_text": "$2.35 / 1L",
"sold_by": "piece",
"price_per": "each",
"increment_price": null,
"increment_grams": null,
"price_min": null,
"price_max": null,
"price_is_estimate": false,
"approx_weight_grams": null,
"multi_buy": null,
"availability": "in_stock",
"available": true,
"in_stock": true,
"next_available_date": "2026-09-18",
"max_order_quantity": 36,
"badges": [
{
"type": "[trimmed-depth]",
"text": "[trimmed-depth]",
"promotion": "[trimmed-depth]"
}
],
"promotion_types": [],
"rewards_points_offer": null,
"new": false,
"online_only": false,
"marketplace": false,
"seller": {
"type": "retailer",
"name": "Woolworths",
"id": null,
"delivery_fee": null,
"free_shipping": null,
"dispatch_note": null,
"delivery_from": null,
"delivery_to": null
},
"has_variants": false,
"sponsored": false,
"fulfilment_store_id": "1101",
"rating": 4,
"rating_count": 1,
"review_count": 1,
"rating_scale": 5,
"rating_distribution": {
"1": 0,
"2": 0,
"3": 0,
"4": 1,
"5": 0
}
}
],
"count": 24,
"total_results": 2206,
"page": 1,
"page_size": 24,
"page_count": 92,
"sponsored_dropped": 5,
"suggested_query": null,
"corrections": [],
"related_terms": [
"Almond Milk",
"Coconut Milk",
"Oat Milk"
],
"filters_available": {
"departments": [
{
"id": "1_A363395",
"name": "[redacted-name]",
"count": 1571
},
{
"id": "1_DEA3ED5",
"name": "Home & Lifestyle",
"count": 1147
},
{
"id": "1_6E4F4E4",
"name": "Dairy, Eggs & Fridge",
"count": 298
}
],
"brands": [
{
"name": "3monkeez",
"value": "3monkeez",
"count": 1
},
{
"name": "99th Monkey",
"value": "99th Monkey",
"count": 2
},
{
"name": "a2",
"value": "a2",
"count": 14
}
]
},
"query": "milk",
"sort": "relevance"
}
}What the Woolworths Australia API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| search | Search woolworths.com.au by keyword. Each product comes with its shelf price, was-price and discount when on special, the cup (unit) price, multi-buy offer, per-kg or variable-weight pricing, availability, star rating, badges, and the marketplace seller for Everyday Market items. Sort by price or name, keep only specials, filter by brand. Paid placements are removed unless you ask for them. | Pricing teams call search to search woolworths.com.au by keyword. | query, page, page_size, sort, specials_only, ... |
| product/detail | The full Woolworths product record by stockcode (or product URL): title, brand, barcode, every image, shelf price, was-price and savings, cup price, multi-buy offer, per-kg or variable-weight pricing, availability, star rating with distribution, ingredients, allergens (contains / may contain / free from), dietary claims, Health Star Rating, the nutrition panel, the country-of-origin label, storage and warnings, product specs, variants (Everyday Market) and the seller. | Marketplace operators call product/detail to get the full Woolworths product record by stockcode (or product URL). | product_id, max_rotations |
| product/reviews | Customer reviews shown on a Woolworths product page, paged, newest first: star rating, text, reviewer nickname, date, and the source (including reviews syndicated from partner retailers), plus the product's rating summary. | Catalog enrichment teams call product/reviews to get customer reviews shown on a Woolworths product page, paged, newest first. | product_id, page, page_size, sort, max_rotations |
| deals | woolworths.com.au's own specials pages: Half Price, Lower Shelf Price, Buy More Save More, Everyday Low Price and Seasonal Price — optionally for one department. Same rows, sorting and brand filter as search. | Retail analysts call deals to get woolworths.com.au's own specials pages. | type, department, page, page_size, sort, ... |
| category | Every product in one Woolworths category (any level of the aisle tree), paged, with the same rows, sorting, specials toggle and brand filter as search, plus the category's brand list with counts. | Pricing teams call category to get every product in one Woolworths category (any level of the aisle tree), paged, with the same…. | category, page, page_size, sort, specials_only, ... |
| categories | Woolworths' aisle tree: departments, categories and sub-categories with their ids and URLs, including the Specials groups and the Everyday Market departments. | Marketplace operators call categories to get woolworths' aisle tree. | depth, max_rotations |
| suggest | Search-box autocomplete as a Woolworths shopper types. | Catalog enrichment teams call suggest to get search-box autocomplete as a Woolworths shopper types.. | query, max_rotations |
Call search from your stack
curl -X POST https://api.reefapi.com/woolworths/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"milk"}'import requests
r = requests.post(
"https://api.reefapi.com/woolworths/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "milk"
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/woolworths/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"query": "milk"
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.woolworths.search with {"query":"milk"}.Who uses this API and why
- Australian grocery price trackers record price, original_price and multi_buy separately, so specials and multi-buy offers never get mixed into the shelf price.
- FMCG brands monitor Half Price and Buy More Save More coverage of their products by department with deals.
- Retail analysts compare unit prices like for like with unit_price and handle per-kg and variable-weight products correctly.
- Nutrition and food apps pull ingredients, allergens, Health Star Rating and the nutrition panel by barcode-matched Woolworths product.
Questions developers ask before integrating
Where do the star ratings come from?
From the ratings Woolworths shows on the product page. The rating block inside Woolworths' product data is empty for every product - it was 0 on 7 of 7 products compared on 2026-09-15 while the page showed real ratings on 6 of them - so the API reads the page's own ratings instead. Woolworths Full Cream Milk 3L: 2.67 out of 5 from 6 ratings. A product with no ratings returns rating null, never 0.
What does specials_only include?
Exactly what the Specials toggle on woolworths.com.au includes: products on a price special and products with a Buy More Save More multi-buy offer. For chocolate on 2026-09-15 it cut 2,804 results to 464; of the first 24, 19 were on special and 5 had a multi-buy offer. Each row says which through on_special, half_price and multi_buy.
Which specials pages can I read?
deals reads Woolworths' own pages, optionally for one department: Half Price (1,770 products on 2026-09-15, every row with its was-price), Lower Shelf Price (916), Buy More Save More (1,115, the rows carrying their multi-buy offer), Everyday Low Price (3,001) and Seasonal Price (199). Half Price for Snacks & Confectionery alone returned 145.
Are sponsored products mixed into the results?
Not unless you ask. Woolworths places Promoted products at fixed positions on search, category and specials pages regardless of your sort - 8 on the first chocolate page. The API removes them by default and counts them in sponsored_dropped; include_sponsored=true keeps them, flagged sponsored: true.
How do Everyday Market products differ?
They are sold and shipped by third-party sellers. seller.type reads marketplace, with the seller's name, the delivery fee (10.00 AUD flat on the products checked), free_shipping and the delivery window. Woolworths publishes no barcode, unit price, ratings or reviews for them, so those fields are null. Size or colour options come back as variants with their own ids and prices - a mattress returned five sizes.
Can I get reviews?
Yes. product/reviews returns the reviews on the product page, newest first or by highest or lowest rating, up to 50 per page: star rating, text, reviewer nickname, date and source. Some reviews are syndicated from partner retailers and say so in syndicated_from. Woolworths Full Cream Milk 3L had 6 reviews on 2026-09-15.
Does the brand filter need exact spelling?
Yes - Woolworths matches the brand exactly, including capitals. brand=Cadbury returned 174 chocolate results, all Cadbury; brand=cadbury returned none. Use the brand exactly as a row's brand field shows it, or pick it from filters_available.brands on a category page.
What does Woolworths NOT publish?
No Everyday Rewards member price for a visitor who is not signed in - none appeared in about 1,000 products checked on 2026-09-15, so member_price is null; points offers such as Boost to collect 10x points come back in rewards_points_offer. No stock count, only availability and an order limit. Prices and availability are those of the default store for a visitor with no delivery address. Nutrition, ingredients and allergens are published for food: nutrition was filled on 21 of 43 sampled products, missing on pet, baby, cleaning and personal care items.
What is the Woolworths Australia API?
Woolworths Australia API is a ReefAPI endpoint group for australian supermarket prices, specials, unit prices, ratings and nutrition panels. It returns live JSON through POST requests under /woolworths/v1.
Is the Woolworths Australia API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. Woolworths Australia calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Woolworths Australia login or account?
No login to Woolworths Australia is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the Woolworths Australia data?
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Woolworths Australia API use?
Woolworths Australia actions currently cost 1 credit per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.
Can I call Woolworths Australia from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call woolworths actions with the same key, credit pool and JSON envelope used by normal REST requests.