Coles Scraper — Prices, Specials, Barcodes & Nutrition avatar

Coles Scraper — Prices, Specials, Barcodes & Nutrition

Pricing

from $1.30 / 1,000 results

Go to Apify Store
Coles Scraper — Prices, Specials, Barcodes & Nutrition

Coles Scraper — Prices, Specials, Barcodes & Nutrition

Coles.com.au scraper: export the whole Coles catalogue (~25,000 products), any category, search or specials page with prices, was prices, half-price & multibuy specials, unit prices, barcodes (GTIN), ingredients, allergens and nutrition. Store prices by postcode. No login. Not affiliated with Coles.

Pricing

from $1.30 / 1,000 results

Rating

0.0

(0)

Developer

Logiover

Logiover

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Coles Scraper

Export the entire Coles Supermarkets online catalogue — prices, was prices, half-price and multibuy specials, unit prices, barcodes, ingredients, allergens and nutrition — as clean JSON, CSV or Excel, in about a minute.

Independent tool. Not affiliated with, endorsed by, or sponsored by Coles Group Limited or Coles Supermarkets Australia Pty Ltd. "Coles", "Coles Online", "Liquorland" and "Flybuys" are trademarks of their owners and are used here only to describe the website this Actor reads.

Coles Scraper is a Coles product and price data tool for Australia: it lets you scrape coles.com.au without a Coles account, login, cookies or browser, and returns one structured row per product. Use it as a Coles API alternative (Coles offers no public product API), a Coles price tracker, a weekly feed of Coles specials and half price data, or a one-click Coles product data export to CSV, Excel or JSON. One run reads the whole Coles online range — 25,153 products across 21 departments, measured on 2026-10-18 in 70 seconds — or just the categories, search terms, specials pages or product IDs you give it.

Every row carries what grocery analysts actually need: current price, was price, savings in dollars and percent, the promotion exactly as Coles labels it (1/2 Price, 40% Off, "Pick any 2 for $15", Reduced to clear, Every Day, New), the unit price ($ per 100 g / 1 L / 1 kg / each), the EAN/GTIN barcode, purchase limits, availability, the full online category path and Coles' internal merchandise hierarchy, plus — in the same request — ingredients, allergen statements, the nutrition panel as numbers, country of origin with the percentage of Australian ingredients, product description and alcohol content for liquor. Prices can be taken from Coles' default online store or from any Coles supermarket by store number or postcode. The field names follow a shared grocery vocabulary, so the data drops straight into an Australian grocery prices dataset, a supermarket price monitoring Australia dashboard, or a side-by-side Coles vs Woolworths comparison.


Table of contents


At a glance

Sourcecoles.com.au — the public product data the website loads for every visitor
CoverageWhole online catalogue: 25,153 unique products in 21 departments (2026-10-18), or any category, search, specials page or product list
SpeedWhole catalogue 69.9 s; 1,000 products 10.3 s; 100 products 4.1 s (Apify platform, 2026-10-18)
PricesPrice, was price, savings $ and %, unit price, multibuy deal price, promotion label and type
SpecialsHalf price, multibuy and online-only specials through Coles' own filters; "any special" adds clearance lines
Product dataBarcode (EAN/GTIN), brand, size, images (front, back, sides), description, availability, purchase limits
Food dataIngredients, allergens, dietary and lifestyle claims, nutrition per 100 g and per serving (as numbers), country of origin, % Australian ingredients
CategoriesOnline department › category › sub-category, every path a product is listed under, Coles' merchandise hierarchy
Store pricesDefault online prices, or any Coles supermarket by store number or postcode
Accuracy check16 products × 18 fields compared with the live product pages: 288 / 288 match (2026-10-18)
OutputJSON, CSV, Excel, XML, RSS, HTML table — via the Console, API, integrations or MCP
Login / cookiesNone needed
PriceFrom $1.30 per 1,000 products, compute and proxies included — see What you pay

What you get

One row per product, 82 fields. Values that do not exist are null — never an empty string or an invented 0. Field names are camelCase and shared with other Australian supermarket datasets (price, wasPrice, unitPrice, unitOfMeasure, isOnSpecial, barcode, brand, categoryPath …), so Coles rows stack with Woolworths rows without renaming columns. Every field is defined, with its measured fill rate, in the Output data dictionary.

GroupFieldsExample
Identity & linksproductId, retailer, name, brand, title, size, url, imageUrl, imageUrls, barcode, skuDescription1338400 · Rokeby Protein Snack Banana Honey | 160g · barcode 9336243004675
Price & promotionprice, wasPrice, savings, savingsPercent, isOnSpecial, isHalfPrice, isMultibuy, isOnlineOnlySpecial, isNew, specialType, promotionType, promoLabel1.55 · was 3.15 · save 1.6 (50.8%) · HALF_PRICE · 1/2 Price
Multibuy dealsmultibuyQuantity, multibuyPrice, multibuyPricePerItem, multibuyLabel, multibuyUnitPrice5 · 9 · 1.8 · Pick any 5 for $9
Unit priceunitPrice, unitOfMeasure, unitPriceText, isSoldByWeight0.97 · 100g · $0.97/ 100g
Availability & rulesisAvailable, availabilityType, purchaseLimit, promotionalPurchaseLimit, isAgeRestricted, deliveryRestrictions, minimumShelfLife, bonusOffer, variantCounttrue · limit 20 (12 on special) · Life 2 days min
Categoriesdepartment, category, subCategory, categoryPath, allCategoryPaths, departmentId, categoryId, subCategoryIdDairy, Eggs & Fridge > Dairy Desserts > Chilled Dairy Desserts
Coles merchandise hierarchymerchandiseDepartment, merchandiseCategoryGroup, merchandiseCategory, merchandiseSubCategory, merchandiseClassDAIRY › DAIRY DESSERTS › PROTEIN › HIGHPROTEIN
Label data (option on by default)description, ingredients, allergens, dietary, lifestyle, nutritionalClaims, countryOfOrigin, countryOfOriginStatement, australianIngredientsPercent, servingSize, servingsPerPackage, nutritionPer100g, nutritionPerServing, nutritionText, dimensions, storageInstructions, usageInstructions, preparationInstructions, warnings, alcoholPercent, standardDrinks, otherInfo, disclaimerContains Milk · Made in Australia from 92% Australian ingredients · { "energyKj": 386, "sugarsG": 4.9 }
Run contextstoreId, storeName, storeState, source, scrapedAt7674 · Coles Online Hub Store Ocado - Melbourne · VIC

The Output tab has four ready views: Overview (image, product, price, special, unit price, category, barcode), Specials, Ingredients & nutrition and Categories & limits.


Who uses it — 14 workflows

1. FMCG brand and sales teams

Track your range and your competitors' at Coles every week — shelf price, was price, half price or multibuy, purchase limits, availability. Run your aisles every Wednesday, filter brand, and send the promotion calendar (promoLabel, specialType, savingsPercent) to the key-account team.

2. Category managers and retail buyers

Map a category's price ladder: unitPrice per 100 g / 1 L, private-label share (brand starting with "Coles"), SKUs per sub-category and Coles' own merchandise hierarchy (merchandiseCategory → merchandiseClass). Export the department monthly and pivot it in Excel.

3. Price-comparison apps and websites

Feed your engine with the full catalogue, refreshed daily or weekly, keyed by barcode so products match across retailers; images, sizes, unit prices and canonical URLs build a product page from one row.

4. Retail and equity analysts

Measure promotional intensity (33.5% of products on special on 2026-10-18), discount depth (savingsPercent) and half-price counts by department. A Wednesday schedule turns the datasets into a promo index.

5. Economists and inflation trackers

Build a supermarket price index: fix a basket by productId, read it weekly with productIds, and use unitPrice + unitOfMeasure to compare per-kilo prices across pack-size changes. postcode runs add geography.

6. Journalists and consumer advocates

Check half-price claims against earlier weeks' prices, find shrinkflation (same productId, smaller size, higher unitPrice), or compare Coles brands with national brands — with dated, reproducible datasets.

7. Dietitians, nutrition and health apps

Get every food product's nutrition panel as numbers (nutritionPer100g.energyKj, sugarsG, sodiumMg …) with ingredients, allergens and claims. In the food departments 75% carry a nutrition panel and 84% an ingredient list (2026-10-18).

8. Allergy, vegan and special-diet apps

Filter on allergens ("Contains Milk. May Contain Soy"), lifestyle (Vegan, Halal …) and nutritionalClaims (Gluten free …) to build "safe for me" lists that update with the range.

9. Grocery marketplaces, meal-kit and recipe platforms

Map recipe ingredients to purchasable Coles products (name, size, images, barcode, price) and price a shopping list; productIds keeps a known list fresh in seconds.

10. Independent grocers and convenience stores

Price your shelf against the nearest Coles: set postcode and export the categories you compete in; each row names the Coles store priced.

11. Liquor retailers and wine analysts

Liquorland (2,274 products on 2026-10-18) comes with alcoholPercent, standardDrinks, region and food pairing, prices and multibuys — a competitive feed for bottle shops.

12. AI agents, chatbots and RAG pipelines

"Cheapest gluten-free pasta per kg at Coles this week" is one filter on this dataset. Call the Actor through the Apify MCP server or load rows into your vector store; each has a canonical URL to cite.

13. Academic and public-health researchers

Study the food environment — healthy vs. less healthy food prices, promotions on high-sugar products, origin labelling, private-label share — with timestamped, citable datasets.

14. Data engineering and BI teams

Load runs into BigQuery, Snowflake or Postgres via the API or a webhook, key them on productId + scrapedAt, and build Looker Studio / Power BI / Tableau dashboards.


Cookbook — 15 ready-to-run inputs

Paste any of these into the JSON tab of the input form (or send them as the API body).

1. The whole Coles catalogue (weekly export)

{
"maxItems": 0
}

Leave every scope field empty and set maxItems to 0. Measured on 2026-10-18: 25,153 products in 69.9 seconds. Make sure your Maximum cost per run covers ~25,000 results (see What you pay).

2. One department

{
"categories": ["Pantry"],
"maxItems": 0
}

Department names are matched case-insensitively against the live Coles menu: Meat & Seafood, Fruit & Vegetables, Dairy, Eggs & Fridge, Bakery, Deli, Pantry, Chips, Chocolates & Snacks, International Foods, Health & Dietary, Drinks, Liquorland, Frozen, Cleaning & Laundry, Health & Beauty, Baby, Pet, Home & Garden and the seasonal ones.

3. Exact categories by URL or path

{
"categories": [
"https://www.coles.com.au/browse/dairy-eggs-fridge/cheese",
"pantry/coffee",
"liquorland/spirits"
],
"maxItems": 2000
}

4. Search terms

{
"searchTerms": ["milk", "coffee pods", "gluten free bread"],
"maxItems": 1500
}

Each term is one Coles search, in Coles' own relevance order. With several terms, maxItems is shared fairly between them first.

5. Every product on special this week

{
"onlySpecials": "any",
"maxItems": 0
}

Measured on 2026-10-18: 8,427 products on special — half price, % off, multibuy, special prices, reduced to clear and while stocks last.

6. Half-price specials only

{
"onlySpecials": "halfPrice",
"maxItems": 0
}

Uses Coles' own half-price filter: 1,951 products, read in 15.6 seconds on 2026-10-18.

7. Multibuy deals only ("Any 2 for $X")

{
"onlySpecials": "multibuy",
"categories": ["Chips, Chocolates & Snacks", "Drinks"],
"maxItems": 0
}

multibuyQuantity, multibuyPrice (the deal total) and multibuyPricePerItem make deals comparable with single prices.

8. Online-only specials

{
"onlySpecials": "onlineOnly",
"maxItems": 0
}

282 products on 2026-10-18.

9. A brand's range

{
"searchTerms": ["Cadbury"],
"maxItems": 0
}

Then filter the brand column (Cadbury). For Coles' own brands search Coles, Coles Finest, Coles Simply, Coles Kitchen … — the brand field separates them.

10. Prices at a specific store or postcode

{
"postcode": "6000",
"categories": ["Dairy, Eggs & Fridge"],
"maxItems": 0
}

The nearest Coles supermarket that publishes online prices is used (postcode 6000 → store 481, Coles Central Raine Square, Perth WA). Or give the store number directly: "storeId": "481".

11. A watchlist of products (daily price check)

{
"productIds": [
"8150288",
"https://www.coles.com.au/product/rokeby-protein-snack-banana-honey-160g-1338400",
"6600805"
]
}

Up to 20 products per request; a 500-product watchlist takes seconds.

12. Paste coles.com.au pages

{
"startUrls": [
{ "url": "https://www.coles.com.au/on-special/drinks?filter_Special=halfprice" },
{ "url": "https://www.coles.com.au/search/products?q=olive%20oil" },
{ "url": "https://www.coles.com.au/browse/frozen/ice-cream" }
],
"maxItems": 0
}

Category pages, specials pages (with their filter_Special), /half-price-specials, search pages and product pages are all understood.

13. Fast prices-only export

{
"maxItems": 0,
"includeNutrition": false
}

Drops the label data (ingredients, nutrition, description …) and roughly halves the data volume; prices, specials, barcodes and categories stay.

14. Price-change tracking with a schedule

Create a Schedule in Apify Console (Schedules → Create) with the cron 0 6 * * 3 and the time zone Australia/Sydney — every Wednesday 6:00, when Coles' weekly specials start — running input #1 or #5. Each run is a new dataset; join two weeks on productId and compare price, wasPrice, promoLabel:

import pandas as pd
a = pd.read_csv("coles_week1.csv")
b = pd.read_csv("coles_week2.csv")
m = a.merge(b, on="productId", suffixes=("_w1", "_w2"))
changed = m[m.price_w1 != m.price_w2][["title_w1", "price_w1", "price_w2", "promoLabel_w2"]]
print(changed.sort_values("price_w2"))

15. Merge with Woolworths data

The Woolworths Scraper from the same publisher on Apify Store writes the same column names (retailer, price, wasPrice, unitPrice, unitOfMeasure, isOnSpecial, isHalfPrice, barcode, brand, categoryPath …). Stack both datasets and match on the barcode:

import pandas as pd
coles = pd.read_json("coles.json")
wow = pd.read_json("woolworths.json")
both = pd.concat([coles, wow]) # one table, column "retailer" tells them apart
pairs = coles.merge(wow, on="barcode", suffixes=("_coles", "_wow"))
pairs["cheaper_at"] = (pairs.price_coles < pairs.price_wow).map({True: "Coles", False: "Woolworths"})
print(pairs[["title_coles", "price_coles", "price_wow", "cheaper_at"]].head(20))

Tutorial: your first run in the Apify Console

  1. Open the Actor and click Try for free (or Start if you are signed in). A free Apify account is enough.
  2. Choose what to export. The form opens with milk in Search terms and Max results = 100. For the whole catalogue, delete the search term and set Max results to 0. For specials, pick a value in Only specials.
  3. Optional — choose a store. Type a store number (e.g. 481) or a postcode (e.g. 2000). Leave both empty for coles.com.au's default online prices.
  4. Leave "Include ingredients, allergens & nutrition" on unless you only need prices.
  5. Click Start. The status line shows progress ("Saved 4,859 products · 39 requests · 38 s"). The first products appear in the Output tab within seconds.
  6. Browse the views — Overview, Specials, Ingredients & nutrition, Categories & limits.
  7. Export. Click Export and choose CSV, Excel (XLSX), JSON, JSONL, XML or HTML. Pick the columns you want, or keep them all.
  8. Repeat automatically. Click Schedule to run it every week (see recipe #14), or connect an integration (Google Sheets, webhook, Make, Zapier, n8n).

Tutorial: run it from the API

  1. Get your API token in Apify Console → Settings → API & Integrations.
  2. Start a run and wait for the data in one call (good for up to a few thousand products):
curl -X POST "https://api.apify.com/v2/acts/logiover~coles-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN&format=json" \
-H "Content-Type: application/json" \
-d '{"searchTerms":["coffee"],"onlySpecials":"halfPrice","maxItems":200}'
  1. For the whole catalogue, start asynchronously and read the dataset when the run finishes:
# start
curl -X POST "https://api.apify.com/v2/acts/logiover~coles-scraper/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" -d '{"maxItems":0}'
# poll the run (status SUCCEEDED), then download its dataset as CSV
curl "https://api.apify.com/v2/datasets/DATASET_ID/items?format=csv&token=YOUR_TOKEN" -o coles.csv
  1. Limit the cost of one run with maxTotalChargeUsd, e.g. .../runs?token=YOUR_TOKEN&maxTotalChargeUsd=10 — the run stops cleanly when the budget is used (see Maximum cost per run).
  2. Read the run summary from the run's key-value store, record SUMMARY: outcome, store, products per query, coverage, duplicates skipped, stop reason.

Input reference

FieldTypeDefaultWhat it does
searchTermsarray of strings[] (form prefill: ["milk"])Keywords searched on coles.com.au, one search each, in Coles' relevance order.
categoriesarray of strings[]Departments / categories as a URL (https://www.coles.com.au/browse/pantry/coffee), a path (pantry/coffee) or a name (Pantry). Resolved against the live Coles menu.
startUrlsarray of URLs[]coles.com.au pages: /browse/…, /on-special… (incl. ?filter_Special=halfprice|multibuy|onlineonly), /half-price-specials, /search/products?q=…, /product/….
productIdsarray of strings[]Coles product numbers or product URLs.
onlySpecialsstringnono (all products), any, halfPrice, multibuy, onlineOnly. Applies to every scope, including the whole catalogue.
storeIdstring""A Coles supermarket number (481 or COL:481). Its prices and range are used.
postcodestring""An Australian postcode; the nearest Coles supermarket with online prices is used. Ignored when storeId is set.
includeNutritionbooleantrueAdds description, ingredients, allergens, dietary/lifestyle claims, nutrition panel, country of origin, dimensions, instructions, alcohol content.
maxItemsinteger1000 (form prefill: 100)Maximum unique products in the run. 0 = no limit.
proxyConfigurationobject{ "useApifyProxy": true }Coles refuses direct connections from cloud servers, so Apify Proxy (datacenter) is used and included in the price.

Scope rules. If you fill none of searchTerms, categories, startUrls and productIds, the whole catalogue is exported. Otherwise only what you give is read, and a product found by two scopes is saved once (source names the first one).


Output data dictionary

Fill rates were measured on the full-catalogue run of 2026-10-18 (25,153 products, default store, nutrition on). Booleans are always filled. A field that applies only to some products (e.g. multibuy fields) has a low fill rate by nature.

FieldTypeFillMeaningExample
productIdstring100%Coles product number; unique per row8150288
retailerstring100%Always Coles (for stacking with other retailers)Coles
namestring100%Product name without brandFull Cream Milk
brandstring100%Brand (3,717 distinct on 2026-10-18)Coles
titlestring100%Brand + name + size as on the siteColes Full Cream Milk | 3L
sizestring99.9%Pack size as labelled3L, approx. 281g, 1 Each
urlstring100%Canonical product pagehttps://www.coles.com.au/product/coles-full-cream-milk-3l-8150288
imageUrlstring100%Main image (front of pack)https://cdn.productimages.coles.com.au/productimages/8/8150288.jpg
imageUrlsarray100%All images: front, left, right, back of pack[…/8150288.jpg, …/8150288_B.jpg]
barcodestring91.2%EAN-13 / EAN-8 / UPC barcode (GTIN)9300601186945
pricenumber99.4%Current price in AUD (empty only for unavailable products)4.95
wasPricenumber24.6%Price before the special3.9
savingsnumber24.6%wasPrice − price0.45
savingsPercentnumber24.6%Saving in %, 1 decimal11.5
isOnSpecialboolean100%Any temporary promotion (special price, % off, multibuy, clearance)true
isHalfPriceboolean100%Coles' "1/2 Price"false
isMultibuyboolean100%"Pick any N for $X" dealtrue
isOnlineOnlySpecialboolean100%Special valid online onlyfalse
isNewboolean100%Product carries Coles' "NEW" roundelfalse
specialTypestring49.4%HALF_PRICE, PERCENT_OFF, MULTIBUY, SPECIAL, REDUCED_TO_CLEAR, WHILE_STOCKS_LAST, EVERYDAY_LOW_PRICEMULTIBUY
promotionTypestring52.7%Coles' raw promotion typeSPECIAL, EVERYDAY, NEW
promoLabelstring52.7%Roundel textAny 2 $10.50
multibuyQuantitynumber7.8%Items in the deal2
multibuyPricenumber7.8%Deal total10.5
multibuyPricePerItemnumber7.8%Price per item inside the deal5.25
multibuyLabelstring7.8%Deal wordingPick any 2 for $10.50
multibuyUnitPricestring7.4%Unit price at the deal price$4.38/ 1L
unitPricenumber95.5%Price per unit of measure1.65
unitOfMeasurestring95.5%Unit for unitPrice1L, 100g, 1kg, 1ea
unitPriceTextstring95.3%Shelf-label unit price$1.65/ 1L
isSoldByWeightboolean99.4%Variable-weight itemfalse
isAvailableboolean100%Can be ordered online nowtrue
availabilityTypestring100%InStoreAndOnline or InStoreOnlyInStoreAndOnline
purchaseLimitnumber99.4%Max units per order20
promotionalPurchaseLimitnumber99.2%Max units per order at the special price12
isAgeRestrictedboolean100%Liquor (18+)false
deliveryRestrictionsstring18.4%Coles' delivery-method restriction codesREMOTE SERVICE | OVN
minimumShelfLifestring8.5%Guaranteed life on delivery (fresh food)Life 7 days min
bonusOfferstring5.7%Current collectable / bonus credit programBonus Cookware Credit
variantCountnumber36.8%Other flavours / sizes18
departmentstring99.9%Online department (level 1)Dairy, Eggs & Fridge
categorystring99.9%Level 2Milk
subCategorystring99.9%Level 3Full Cream Milk
categoryPathstring99.9%Primary pathDairy, Eggs & Fridge > Milk > Full Cream Milk
allCategoryPathsstring99.9%All paths the product is listed under… | Back To School > Lunchbox Snacks > Yoghurt
departmentId, categoryId, subCategoryIdstring99.9%Coles' category ids1300, 8881800, 8881801
merchandiseDepartmentstring100%Coles trade profit centreDAIRY
merchandiseCategoryGroupstring100%Category groupDAIRY
merchandiseCategorystring100%Merchandise categoryDY MILK
merchandiseSubCategorystring100%Merchandise sub-categoryWHOLE WHITE
merchandiseClassstring100%Merchandise classWHOLE 3-3.9L
skuDescriptionstring100%Coles' internal item descriptionCOLES FULL CREAM MILK 3L
descriptionstring87.9%Product descriptionColes is committed to bringing you …
ingredientsstring69.0% (84% of food)Ingredient listHomogenised and Pasteurised Full Cream Milk.
allergensstring38.7% (64% of food)Allergen statementContains Milk
dietarystring14.7%Dietary statementSource of Calcium
lifestylestring25.5%Lifestyle tagsVegetarian | Vegan
nutritionalClaimsstring30.3%Nutrition claimsGluten free
countryOfOriginstring98.6%Country as labelledAustralia
countryOfOriginStatementstring60.3%Country-of-origin label textMade in Australia from at least 99% Australian ingredients
australianIngredientsPercentnumber23.3%% Australian ingredients from that statement99
servingSizestring44.7%Serving size250mL
servingsPerPackagenumber44.7%Servings per pack12
nutritionPer100gobject42.8% (75% of food)Numbers per 100 g/mL: energyKj, energyKcal, proteinG, fatTotalG, fatSaturatedG, fatTransG, carbohydrateG, sugarsG, dietaryFibreG, sodiumMg, calciumMg, potassiumMg …{ "energyKj": 258, "proteinG": 3.4 }
nutritionPerServingobject42.8%Same keys per serving{ "energyKj": 646 }
nutritionTextstring44.0%Whole panel as text (keeps "<1 g" values)Per 100g/ml: Protein 3.4 g, …
dimensionsstring99.9%Pack dimensions273.00 x 153.00 x 102.00 mm
storageInstructionsstring54.3%StorageKeep refrigerated. Store at or below 5°C
usageInstructionsstring39.5%UsageReady to consume
preparationInstructionsstring12.7%PreparationHeat in microwave …
warningsstring28.0%Label warningsKeep out of reach of children
alcoholPercentnumber9% (all liquor)Alcohol by volume, %40
standardDrinksnumber9% (all liquor)Standard drinks per pack22
otherInfoobject12.5%Other label attributes, by Coles' title{ "Liquor Region": "BAROSSA" }
disclaimerstring9.7%Label disclaimerAlways read the label …
storeId, storeName, storeStatestring100%Store whose prices the row carries7674, Coles Online Hub Store Ocado - Melbourne, VIC
sourcestring100%Which input found the productcategory: Pantry
scrapedAtstring100%Run time, ISO 86012026-10-18T20:31:12.402Z

Real output sample

Two real rows from the full-catalogue run on 2026-10-18 (Apify platform, default store), some fields left out for space; the second shows a multibuy.

{
"productId": "1338400",
"retailer": "Coles",
"name": "Protein Snack Banana Honey",
"brand": "Rokeby",
"title": "Rokeby Protein Snack Banana Honey | 160g",
"size": "160g",
"url": "https://www.coles.com.au/product/rokeby-protein-snack-banana-honey-160g-1338400",
"imageUrl": "https://cdn.productimages.coles.com.au/productimages/1/1338400.jpg",
"barcode": "9336243004675",
"price": 1.55,
"wasPrice": 3.15,
"savings": 1.6,
"savingsPercent": 50.8,
"isOnSpecial": true,
"isHalfPrice": true,
"isMultibuy": false,
"specialType": "HALF_PRICE",
"promotionType": "SPECIAL",
"promoLabel": "1/2 Price",
"unitPrice": 0.97,
"unitOfMeasure": "100g",
"unitPriceText": "$0.97/ 100g",
"isAvailable": true,
"purchaseLimit": 20,
"promotionalPurchaseLimit": 12,
"minimumShelfLife": "Life 2 days min",
"variantCount": 2,
"department": "Dairy, Eggs & Fridge",
"category": "Dairy Desserts",
"subCategory": "Chilled Dairy Desserts",
"categoryPath": "Dairy, Eggs & Fridge > Dairy Desserts > Chilled Dairy Desserts",
"merchandiseDepartment": "DAIRY",
"merchandiseCategory": "DAIRY DESSERTS",
"merchandiseSubCategory": "PROTEIN",
"merchandiseClass": "HIGHPROTEIN",
"skuDescription": "ROKEBY PROTEIN SNACK BANANA HONEY 160G",
"description": "Rokeby Protein Snack is a delicious dairy dessert crafted with quality ingredients and 15g of natural protein to satisfy your cravings any time of the day. A creamy mix of ripe banana and warm cinnamon, finished with a hint of natural honey flavour.",
"ingredients": "Filtered low fat milk, cream (milk), erythritol, native starch, banana puree (2%), dietary fibre, gelatine, sea salt, natural flavours, cinnamon, enzyme (lactase), natural preservative (nisin), stevia (steviol glycosides), natural colour (carotene).",
"allergens": "Contains Milk",
"countryOfOrigin": "Australia",
"countryOfOriginStatement": "Made in Australia from 92% Australian ingredients",
"australianIngredientsPercent": 92,
"servingSize": "160g",
"servingsPerPackage": 1,
"nutritionPer100g": { "proteinG": 9.4, "carbohydrateG": 9.6, "energyKj": 386, "fatSaturatedG": 0.9, "sugarsG": 4.9, "calciumMg": 305, "sodiumMg": 70, "fatTotalG": 1.7 },
"nutritionPerServing": { "proteinG": 15, "carbohydrateG": 15.4, "energyKj": 618, "fatSaturatedG": 1.4, "sugarsG": 7.8, "calciumMg": 488, "sodiumMg": 112, "fatTotalG": 2.7 },
"storeId": "7674",
"storeName": "Coles Online Hub Store Ocado - Melbourne",
"storeState": "VIC",
"source": "category: Dairy, Eggs & Fridge"
}
{
"productId": "6600805",
"title": "Farmers Union No Added Sugar Kids Yogurt Pouch Blueberry | 130g",
"price": 2.9,
"unitPrice": 2.23,
"unitOfMeasure": "100g",
"unitPriceText": "$2.23/ 100g",
"isOnSpecial": true,
"specialType": "MULTIBUY",
"promoLabel": "Any 5 $9",
"multibuyQuantity": 5,
"multibuyPrice": 9,
"multibuyPricePerItem": 1.8,
"multibuyLabel": "Pick any 5 for $9",
"multibuyUnitPrice": "$1.38/ 100G",
"barcode": "9300658410994",
"categoryPath": "Dairy, Eggs & Fridge > Yoghurt > Pouch",
"url": "https://www.coles.com.au/product/farmers-union-no-added-sugar-kids-yogurt-pouch-blueberry-130g-6600805"
}

CSV / Excel columns. Exports have one column per field. Arrays and objects are flattened by the platform: imageUrls/0, imageUrls/1 …, nutritionPer100g/energyKj, nutritionPer100g/proteinG …, otherInfo/Liquor Region. Choose "Clean items" and pick the columns you need in the export dialog; the four Output views are a good starting set.


Scale and speed — measured

Every number below was measured on the Apify platform on 2026-10-18 with default settings (2 GB memory, Apify datacenter proxy).

RunResultTime
Form prefill (search "milk", 100 products)100 products, first rows after ~2 s4.1 s
Default input {} (catalogue, first 1,000)1,000 products from all departments10.3 s
Postcode 6000 (Perth), "milk" + "bread", 300 products300 products priced at store 481 (WA)8.6 s
Half-price specials, whole store1,951 products15.6 s
Whole catalogue, nutrition on25,153 unique products, 0 duplicates69.9 s

Coverage of the whole-catalogue run. Coles reported 34,139 results across the 40 queries the run needed (a product listed in several departments counts in each); 34,136 distinct products were read — 100.0%. Three queries were read a second time in another order to fill gaps; three Liquorland products stayed unreachable and are named in the run's SUMMARY. Two of 213 requests needed a new connection.

The catalogue on 2026-10-18 (default store). 25,153 products, 3,717 brands, median price $7.20 (from $0.10 to $990). By primary department: Pantry 6,107 · Health & Beauty 4,451 · Liquorland 2,274 · Dairy, Eggs & Fridge 1,952 · Chips, Chocolates & Snacks 1,619 · Cleaning & Laundry 1,478 · Home & Garden 1,296 · Frozen 1,272 · Drinks 1,092 · Pet 825 · Baby 719 · Bakery 591 · Meat & Seafood 567 · Fruit & Vegetables 490 · Deli 195 · Deliver More Range 130 · Health & Dietary 57 · Big Pack Value 18 · Back to School 1 · without an online category 19 (in-store-only liquor). Departments such as Health & Dietary, International Foods and the seasonal ones mostly re-list products of other departments; each product is counted once, under its primary department. On special: 8,427 (33.5%) — 1,950 half price, 1,963 multibuy, 3,942 special price, 405 reduced to clear, 127 other % off, 40 while stocks last; 4,000 products carried "Every Day" and 601 "New".

Store prices differ. With postcode 6000, Perth's Coles Central Raine Square (store 481) returned 228 "milk" results against 324 at the default online store; of the 137 products both carry, 3 had a different price (for example a juice on special online at $3.80 and $5.00 in Perth). Range differs more than price — choose the store that matches your market.

Accuracy. 16 products chosen across every promotion type (half price, % off, multibuy, special, reduced to clear, online-only, new, every day, fresh by weight, unavailable, liquor, non-food) were compared field by field with their live coles.com.au product pages: title, brand, barcode, price, was price, saving, unit price, roundel, multibuy wording, availability, canonical URL, size, ingredients, allergen statement, country-of-origin statement, energy per 100 g and category — 288 of 288 values matched.

Big runs need a big enough "Maximum cost per run"

Apify stops every pay-per-result run at its Maximum cost per run (you set it in the run options; the platform also sets a default). The Actor reads that limit at start, stops cleanly when it is reached and says so — for example "Saved 28 products — this run's maximum cost ($0.05) covers 28 results at the current price. Raise 'Maximum cost per run' to get more." The run still ends as Succeeded, and you pay only for the products saved. For the whole catalogue, set the limit to cover ~25,500 results.


How Coles specials, promotions and unit prices work

The weekly cycle. Coles' catalogue specials run Wednesday to Tuesday; schedule runs for Wednesday (recipe #14) to capture each cycle once.

What counts as a special. isOnSpecial is true for every temporary promotion: Coles' "SPECIAL" promotions (special price with a was price, 1/2 Price, % Off, multibuy, reduced to clear, while stocks last) and any product shown with a was price higher than the price. Coles' "Every Day" (everyday low price) and "New" roundels are not specials: they are reported in promotionType, promoLabel, specialType = EVERYDAY_LOW_PRICE and isNew.

The roundels, and how they map to fields:

Roundel on coles.com.auspecialTypeOther fields
1/2 PRICEHALF_PRICEisHalfPrice: true, wasPrice, savings, savingsPercent
40% OFF, 30% OFF …PERCENT_OFFwasPrice, savingsPercent
SPECIAL (with "Save $X", "Was $Y")SPECIALwasPrice, savings
SPECIAL (multibuy, "Pick any 2 for $15")MULTIBUYisMultibuy: true, multibuyQuantity, multibuyPrice, multibuyPricePerItem
ONLINE ONLYany of the aboveisOnlineOnlySpecial: true
REDUCED TO CLEARREDUCED_TO_CLEARwasPrice, savings
WHILE STOCKS LASTWHILE_STOCKS_LASTwasPrice when shown
EVERY DAYEVERYDAY_LOW_PRICEisOnSpecial: false
NEW—isNew: true, promoLabel: "New"
Bonus credit / collectable—bonusOffer, promotionType: BONUSCOLLECTABLE

Multibuy arithmetic. Coles stores a multibuy as a quantity and a price per item inside the deal: "Pick any 2 for $15" is quantity 2 at $7.50 each. The Actor gives you both multibuyPricePerItem (7.5) and the deal total multibuyPrice (15), next to the single-item price.

Coles' own specials filter vs. "any special". The half-price, multibuy and online-only options use Coles' own website filters, so the result equals what coles.com.au lists on its specials pages. Coles' specials filter leaves out most reduced-to-clear and while-stocks-last items, so onlySpecials: "any" reads the whole scope and keeps every product on promotion — 8,427 products on 2026-10-18, 450 more than Coles' own "All specials" filter.

Unit prices. Australian law requires supermarkets to show a comparable unit price. Coles uses $ per 100 g / 100 mL for most packaged goods, $ per 1 kg / 1 L for larger packs and fresh food, $ per each for countable items (and $ per metre for wraps and foil). unitPrice and unitOfMeasure hold the number and unit; unitPriceText is the label text. On 2026-10-18 the units were 100 g (9,401 products), 1 L (3,494), 1 each (3,466), 100 mL (3,147) and 1 kg (2,977). Compare products only within the same unit — or convert (1 kg = 10 × 100 g).

Products sold by weight. Variable-weight items (isSoldByWeight, 219 products) show an approximate size ("approx. 1.4kg") priced at that weight; unitPrice per kg is what you pay per kilo.

Unavailable products. Coles lists out-of-stock lines without a price: isAvailable: false, price: null (160 products on 2026-10-18).


How the Actor works

  1. It reads the same public product data coles.com.au loads in your browser — the live department menu, listings, search results and product details — through Apify Proxy. No login, cookies or account.
  2. The department list is read from the site on every run, so new and seasonal ranges are picked up automatically.
  3. Up to 240 products come per request, in a fixed sort order, with price, specials, barcode, categories and label data in one answer. Queries over Coles' 5,000-result limit (Pantry, 6,160 products) are split into their categories.
  4. A query that returns fewer distinct products than Coles says it holds is read again in another order to fill the gaps; SUMMARY reports every query's coverage. Products are de-duplicated by their Coles number.
  5. Refused connections are replaced at once and slow answers re-sent in parallel. Rows stream into the dataset as they arrive; a run that cannot reach Coles fails with the reason instead of reporting an empty success.

What you pay

A fixed price per product in the dataset — compute, proxies and every request are included. No monthly rental, no start fee, no charge for duplicates that are skipped or for products filtered out by "Only specials".

Apify planPrice per 1,000 products
Free$2.00
Bronze$1.77
Silver$1.53
Gold, Platinum, Diamond$1.30

Examples

RunProductsFreeBronzeSilverGold +
A category or a few searches1,000$2.00$1.77$1.53$1.30
Weekly specials (all, 2026-10-18)8,427$16.85$14.89$12.92$10.96
A large slice10,000$20.00$17.67$15.33$13.00
The whole catalogue (2026-10-18)25,153$50.31$44.45$38.56$32.70
Four weekly whole-catalogue exports100,612$201.22$177.78$154.24$130.80

Half-price only (1,951 products on 2026-10-18) costs $3.90 on the Free plan and $2.54 on Gold and above.

Maximum cost per run

Every pay-per-result run has a Maximum cost per run — set it in the run options (Console: "Run options" → "Maximum cost per run"; API: maxTotalChargeUsd). The Actor converts it into a number of products at your plan's price before it starts, collects up to that number, then stops with a clear status message. The run ends Succeeded and you are charged for exactly the products in the dataset. Raise the limit before big exports (whole catalogue ≈ $51 on the Free plan, ≈ $33 on Gold).


Integrations

API (curl)

curl -X POST "https://api.apify.com/v2/acts/logiover~coles-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"categories":["Fruit & Vegetables"],"maxItems":600}'

Node.js (apify-client)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('logiover/coles-scraper').call({
onlySpecials: 'halfPrice',
maxItems: 0,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const cheapest = items.filter((p) => p.unitOfMeasure === '100g').sort((a, b) => a.unitPrice - b.unitPrice);
console.log(items.length, cheapest[0].title, cheapest[0].unitPriceText);

Python (apify-client)

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("logiover/coles-scraper").call(run_input={
"searchTerms": ["gluten free pasta"],
"maxItems": 300,
})
for p in client.dataset(run["defaultDatasetId"]).iterate_items():
per100 = p.get("nutritionPer100g") or {}
print(p["title"], p["price"], p["unitPriceText"], per100.get("sugarsG"), p["barcode"])

Make, Zapier and n8n

Use the Apify app / node: Run an Actor with logiover/coles-scraper and your JSON input, then Get dataset items and map the fields into Google Sheets, Airtable, HubSpot, Slack, email or your database. A typical scenario: every Wednesday, run with onlySpecials: "halfPrice", filter on department, post the list to a Slack channel.

Google Sheets

Use the Google Sheets integration on the Actor's Integrations tab to append or replace a sheet after every run, or import the CSV export.

Airtable

Send items through Make / Zapier / n8n with productId as the primary field, so weekly runs update existing records.

Looker Studio, Power BI, Tableau and other BI tools

Point the tool at the dataset's CSV or JSON endpoint (https://api.apify.com/v2/datasets/DATASET_ID/items?format=csv) or at your warehouse table. scrapedAt gives the time axis; department / categoryPath the drill-down.

Data warehouses (BigQuery, Snowflake, Postgres, S3)

Fetch …/items?format=json (or csv) after each run — a webhook can trigger the loader — and append to a table keyed on productId + scrapedAt.

Webhooks

Add a webhook on Run succeeded to call your endpoint with the run and dataset ids — ideal for a weekly specials pipeline.

Scheduling

Apify Schedules run the Actor on any cron with a time zone: 0 6 * * 3 in Australia/Sydney for the weekly specials, 0 5 * * * for a daily watchlist.

MCP and AI agents

The Actor works as a tool through the Apify MCP server, so Claude, ChatGPT or your own agent can call it ("half-price coffee at Coles this week, sorted by price per 100 g") and receive structured rows with canonical URLs.


Performance tips

  • Leave maxItems at 0 for full exports — the Actor splits and parallelises by itself; a whole-catalogue run takes about a minute.
  • Use "Only specials" when specials are all you need: half price reads ~1,950 products instead of ~25,000.
  • Turn includeNutrition off for price-only monitoring: about half the data volume, same prices and barcodes.
  • Use productIds for watchlists — up to 20 products per request, the fastest way to track a fixed basket.
  • One store per run. For several stores, start one run per storeId / postcode (they can run at the same time).
  • Keep weekly datasets. Price history is the comparison of runs; name your runs or export them with the date.
  • Set the Maximum cost per run to cover the expected number of products before big runs (see the table above).

Troubleshooting

Status message / outcomeWhat it meansWhat to do
Saved N products (every matching product read) in X s — prices from …COMPLETED — everything your input matches was readNothing
Saved N products (max results reached) …COMPLETED at maxItemsRaise maxItems (0 = no limit)
Saved N products — this run's maximum cost ($X) covers N results …COMPLETED, stopped at the Maximum cost per run (SUMMARY.stoppedBy = MAX_COST)Raise "Maximum cost per run"
Saved 0 products — this run's maximum cost ($X) does not cover a single result …The limit is below the price of one productRaise the limit
Saved N products (stopped at the run time limit) …The run timeout ended the run; rows so far are savedRaise the run timeout (default 3,600 s)
… N page(s) could not be read.PARTIAL — most of the data is there, some pages failed after all retriesRun again; the SUMMARY lists the queries
No products matched on Coles …EMPTY_RESULT — Coles answered, nothing matchesCheck spelling, scope and the specials option
Store 602 (…) does not publish online prices …Failed (bad input) — some small-format stores have no online pricesUse another store number or a postcode
Coles has no store number …Failed (bad input)Use the number from the store's page on coles.com.au/find-stores
Coles does not know the postcode or suburb …Failed (bad input)Use a 4-digit Australian postcode
Category not found on Coles: "…" (warning)That entry was skipped, the rest ranUse a coles.com.au category URL or a department name
Product …: not found at this store (in SUMMARY.notes)The product number does not exist (or is not ranged at the chosen store)Check the number in the product URL
No products collected: no page could be fetched …BLOCKED / FETCH_FAILED — Coles could not be reached at allRun again later; if it persists, contact us
Could not read the Coles category list …The menu could not be loaded, so nothing could be plannedRun again later

Every run also writes a SUMMARY record (key-value store) with the outcome, store, every query with the number of products Coles reported, coverage, duplicates skipped, products without price, notes and the stop reason.


Honest limits

  • Default prices are Coles Online's (the Melbourne online store coles.com.au shows before you choose a location). For local prices, set storeId or postcode; a few small-format stores publish no online prices — the Actor tells you and the postcode option skips them.
  • Range differs by store. A CBD store lists far fewer products than the online store; exports at a chosen store reflect that store's range.
  • No stock quantities and no in-store aisle numbers. Coles shows anonymous visitors only "available / unavailable" and "Aisle information is not available".
  • Unavailable products have no price (160 on 2026-10-18); they are kept with isAvailable: false.
  • No ratings or reviews.
  • Tobacco is not exported — Coles does not sell it online and hides the department.
  • Label data is Coles' text. Ingredients, allergens and nutrition are copied as published; always read the physical label for health decisions. Nutrition values written as "<1 g" stay in nutritionText only.
  • Coles' search answers at most 5,000 results per query — handled by splitting; you never need to split yourself.
  • A handful of listings are counted but never returned by Coles (3 of 34,139 query results on 2026-10-18); the run's SUMMARY names the queries concerned.
  • Specials change every Wednesday, and prices can change any day; a dataset is a snapshot at scrapedAt.

Comparison with manual collection

This ActorCopying from coles.com.au by handWeekly catalogue PDF
Products coveredWhole online range (25,153 on 2026-10-18)What you have time to clickA few hundred featured specials
Time for the full range~1 minuteWeeks—
Barcodes (EAN/GTIN)Yes, 91% of productsNot shown on the pageNo
Unit pricesYes, number + unitYes, as textPartly
Ingredients, allergens, nutritionYes, nutrition as numbersPer product pageNo
Store-specific pricesAny store or postcodeOne store at a timeRegional editions
HistoryKeep every weekly datasetSpreadsheet disciplineArchive PDFs
OutputJSON, CSV, Excel, APICopy-pastePDF
Repeatable on a scheduleYesNoNo

FAQ

What is Coles Scraper?

An Apify Actor that exports Coles products — prices, specials, unit prices, barcodes, categories, ingredients, allergens, nutrition — as JSON, CSV or Excel, for the whole catalogue or any part of it.

Is there an official Coles API for product prices?

No public one. This Actor reads the public data coles.com.au loads for every visitor and returns it structured — the practical Coles API alternative.

How do I scrape Coles prices?

Enter a search term or category (or nothing, for the whole catalogue), click Start, export the dataset. No coding needed; developers can use the API.

Can I download the entire Coles product catalogue?

Yes. Run with an empty scope and maxItems: 0. On 2026-10-18 that was 25,153 products in 70 seconds.

How many products does Coles sell online?

25,153 unique products in 21 departments at the default online store on 2026-10-18. Individual stores range fewer.

How do I get the Coles half price specials every week?

Set Only specials to "Half price only" and schedule the Actor every Wednesday morning (Sydney time). On 2026-10-18 there were 1,951 half-price products.

When do Coles specials change?

Weekly specials start on Wednesday and run to the following Tuesday; online-only and clearance deals can change any day.

Can I track Coles price changes over time?

Yes — schedule runs (daily or weekly), keep each dataset, and compare price, wasPrice and promoLabel by productId (recipe #14 shows the code).

Can I get prices for my local Coles store?

Yes — give storeId or postcode; storeName and storeState on each row show which store priced it.

Do Coles prices differ between states and stores?

Sometimes, and the range differs a lot: on 2026-10-18, 3 of 137 shared milk products were priced differently in a Perth store, which carried 228 results against 324 online.

Can I get Coles product barcodes (EAN / GTIN)?

Yes — 91.2% of products (22,506 EAN-13, 412 EAN-8, a few UPC on 2026-10-18); loose fresh items usually have none.

Does it include nutrition information, ingredients and allergens?

Yes (option on by default): 84% of food products have ingredients and 75% a nutrition panel, given per 100 g and per serving as numbers.

How do I export Coles data to Excel or CSV?

Click Export in the Output tab and choose Excel or CSV, or download …/datasets/DATASET_ID/items?format=csv.

Can I send Coles data to Google Sheets automatically?

Yes — use the Google Sheets integration on the Actor's Integrations tab, or Make / Zapier / n8n.

How do I compare Coles and Woolworths prices?

Combine with a Woolworths dataset using the same field names (the publisher's Woolworths Scraper on Apify Store) and match on barcode — recipe #15.

Do I need a Coles account, login or Flybuys?

No — public data only; no account, cookies or Flybuys number.

Do I need my own proxies?

No — Apify Proxy is used automatically and included in the price.

How fast is the Coles scraper?

100 products in ~4 s, 1,000 in ~10 s, the whole catalogue in 70 s (2026-10-18).

How much does it cost to scrape Coles?

$2.00 per 1,000 products on Free, down to $1.30 on Gold+ — the whole catalogue ≈ $50 / $33. Proxies and compute included.

What is "Maximum cost per run"?

A per-run spending limit; the Actor stops cleanly at it and you pay only for saved products.

Why did my run stop before Max results?

Either everything matching was read, or the Maximum cost per run was reached — the status message says which.

Why do some products have no price?

They are unavailable — Coles lists them without a price (isAvailable: false).

How is the unit price calculated?

Coles publishes it per 100 g, 100 mL, 1 kg, 1 L or each: unitPrice + unitOfMeasure, and unitPriceText as on the label.

How are multibuy deals ("Any 2 for $X") stored?

As multibuyQuantity, multibuyPrice (deal total) and multibuyPricePerItem, wording in multibuyLabel.

What is the difference between Special, 1/2 Price, Every Day and Down Down?

"1/2 Price", "% Off", "Special" and multibuys are temporary promotions (isOnSpecial: true). "Every Day" marks Coles' everyday low prices and "Down Down" is Coles' long-running price-reduction campaign — permanent price programs, not weekly specials. See the Glossary.

Can I get only Coles brand (private label) products?

Search Coles (or a category) and filter brand for Coles, Coles Finest, Coles Simply, Coles Kitchen and the other Coles brands — 2,462 products carried the plain Coles brand on 2026-10-18.

Can I scrape a list of Coles product URLs or IDs?

Yes — productIds (or startUrls); each becomes a full row.

Can I scrape Liquorland products and alcohol content?

Yes — Liquorland is included with alcoholPercent, standardDrinks, region and food pairing.

Can I download Coles product images?

Each row has imageUrl (front) and imageUrls (all views, often the back-of-pack label) on Coles' public image server.

Does it include online-only specials?

Yes — flagged isOnlineOnlySpecial; the "Online-only specials" option exports just them (282 on 2026-10-18).

Does it scrape Coles ratings and reviews?

No — product, price, promotion and label data only.

Can I get stock levels or aisle locations?

No — Coles shows visitors only available / unavailable (isAvailable) and no aisle numbers.

Can I use it with ChatGPT, Claude or other AI agents?

Yes — through the Apify MCP server or the API.

What happens if Coles blocks the scraper?

Refused connections are replaced at once (2 of 213 requests on 2026-10-18); if Coles is unreachable the run fails with the reason, never an empty "success".

How do I schedule a weekly Coles specials report?

Console → Schedules → Create: cron 0 6 * * 3, time zone Australia/Sydney, Actor input {"onlySpecials":"any","maxItems":0}. Add a Google Sheets or Slack integration to deliver it.

Can you add a field or a feature I need?

Probably — open an issue on the Actor's Issues tab and describe it.


Glossary

1/2 Price — half the was price for the special week (isHalfPrice, HALF_PRICE).

% Off — another percentage discount, e.g. 40% Off (PERCENT_OFF).

Special — a temporary lower price with "Save $X" / "Was $Y" (SPECIAL).

Multibuy / "Pick any 2 for $X" — a deal price for a set number of items, usually mix-and-match (MULTIBUY).

Online only — a special for online orders only (isOnlineOnlySpecial).

Reduced to clear — a clearance price on a line being cleared (REDUCED_TO_CLEAR).

While stocks last — a special limited to remaining stock (WHILE_STOCKS_LAST).

Every Day — Coles' everyday low price: lasting, not a weekly special (EVERYDAY_LOW_PRICE).

Down Down — Coles' long-running price-cut campaign; like Every Day, a lasting price rather than a weekly special. Coles' label is passed through in promotionType / promoLabel.

New — Coles' roundel for newly ranged products (isNew).

Bonus credit — collectables such as "Bonus Cookware Credit" on selected products (bonusOffer).

Flybuys points — extra points offers, e.g. "Triple points" (promotionType: FLYBUYS).

Was price — the regular price before the current special (wasPrice).

Unit price / comparable price — price per standard unit (100 g, 1 L, 1 kg, each) that Australian supermarkets must display (unitPrice).

Sold by weight — variable-weight items priced per kilo, approximate size (isSoldByWeight).

Purchase limit — max units per order; the promotional limit applies at the special price.

Minimum shelf life — life guaranteed on delivery for fresh food, e.g. "Life 6 days min".

Department › Category › Sub-category — the online aisle hierarchy (categoryPath).

Merchandise hierarchy — Coles' internal trade hierarchy, profit centre › class (merchandise*).

GTIN / EAN — the number under the barcode; the key for matching products across retailers (barcode).

Country of origin label — Australia's mandatory food origin label with the share of Australian ingredients (countryOfOriginStatement).

Default store — the store coles.com.au prices before a location is chosen: the Melbourne online store, id 7674.


This Actor reads only publicly available product information — names, prices, promotions, categories and label data that any visitor sees on coles.com.au without logging in. It collects no personal data: no customer accounts, no reviews, no names or contact details. Product and price information is commercial data published to be seen. You are responsible for how you use the data: respect Coles' terms of use, intellectual-property rights in images and descriptions, and the laws that apply to you (including Australian consumer law when you publish price comparisons). This is not legal advice; if in doubt, consult a lawyer.

Legal & trademark disclaimer: This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Coles Group Limited, Coles Supermarkets Australia Pty Ltd, Liquorland or Flybuys. All trademarks mentioned are the property of their respective owners.


Changelog

  • 1.0 (2026-10-18) — First release. Whole catalogue (departments read live from coles.com.au), categories by URL / path / name, search terms, coles.com.au URLs, product IDs; specials filters (any, half price, multibuy, online only); prices at any Coles store or postcode; barcodes, unit prices, multibuy deal maths, promotion types and roundel labels; ingredients, allergens, nutrition panel as numbers, country of origin with % Australian ingredients, alcohol content; automatic splitting past Coles' 5,000-results-per-query limit; gap-filling re-reads with per-query coverage in SUMMARY; de-duplication by product number; clean stop at the Maximum cost per run.

Support

Questions, a missing field, or a run that did something unexpected? Open an issue on the Issues tab — we reply within 24 hours. Include the run link so we can read the log and the SUMMARY.