Coles Australia Scraper: Products, Prices & Specials avatar

Coles Australia Scraper: Products, Prices & Specials

Pricing

Pay per event

Go to Apify Store
Coles Australia Scraper: Products, Prices & Specials

Coles Australia Scraper: Products, Prices & Specials

Scrape Coles Australia (coles.com.au) products by search term, category or specials page (half price, multibuy) or product URL: price, was-price, special flag, unit price, availability, and optional product details (barcode, ingredients, nutrition, images). Pay per product.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Atalaia

Atalaia

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

What does Coles Australia Scraper do?

Coles Australia Scraper extracts products, prices and specials from Coles (coles.com.au), one of Australia's two big supermarkets. Give it search terms, category or specials pages (all specials, half price, multibuy, specials by aisle) or product URLs, and get one clean dataset item per product: current price, was-price, whether it is really on special, promotion text ("1/2 Price", "Pick any 2 for $6"), unit price, availability, category and, optionally, full product details (barcode, ingredients, nutrition, allergens, images).

  • ✅ Search, aisles, specials pages and product pages, with automatic pagination up to 2,000 products per search or category
  • ✅ A reliable isOnSpecial flag: only real discounts (price specials, half price, multibuy), never "everyday low price"
  • ✅ Unit price as a number plus the raw text ("$1.55/ 1L"), so you can compare products of different sizes
  • ✅ Optional product details: barcode, description, ingredients, nutrition panel, allergens, country of origin, up to 10 images
  • ✅ Works on Apify's standard datacenter proxy, no login and no account needed
  • ✅ You only pay for products returned. Failed inputs are reported as error items and never charged

Why scrape Coles?

  • Price monitoring: track the price of your basket or your brand every day and get alerted when it changes.
  • Specials tracking: pull the full half-price and multibuy catalogue each week.
  • Basket comparison: compare Coles with other supermarkets product by product, using barcodes and unit prices.
  • Market research: see which brands are on promotion, how deep the discounts are and how ranges change.

Running on the Apify platform gives you an API, scheduling (for example every morning), webhooks, and integrations with Google Sheets, Make, Zapier, n8n and more.

What data does it extract?

FieldTypeDescription
productIdstringColes product ID
name, brand, sizestringProduct name (brand + name), brand and package size
url, imagestringProduct page and main image
pricenumberCurrent price in AUD (null when the product is unavailable)
wasPricenumberPrevious price, when Coles shows one (price specials, half price)
isOnSpecialbooleantrue only for a real discount: Coles special (price drop, half price, multibuy) or a was-price above the price
isHalfPriceboolean50% off specials
promotionType, specialTypestringRaw Coles values (SPECIAL, EVERYDAY...; PERCENT_OFF, MULTI_SAVE...)
promotionTextstringOffer text (1/2 Price - save $2.75, Pick any 2 for $6, save $0.40)
unitPrice, unitPriceTextnumber, stringComparable unit price and its raw text ($1.55/ 1L)
isAvailablebooleanAvailable to buy
categorystringDepartment > category > aisle
barcodestringEAN/GTIN barcode (from the product page: with Include product details or Product URLs)
positionintegerRank in the search or category listing
isSponsoredbooleanSponsored placement in the listing
source, query / categoryUrl / productUrlstringWhich input returned the item
storeContextstringStore the price is for: default, or postcode 6000 / store 0256 ... with Postcode
description, ingredients, nutrition, allergens, countryOfOrigin, imagesProduct details (with Include product details or Product URLs)
scrapedAtstringISO 8601 timestamp

How to scrape Coles

  1. Click Try for free and open the Input tab.
  2. Add Search terms (milk, tim tam...), Category or specials URLs copied from coles.com.au, and/or Product URLs or IDs.
  3. Set Max items per search or category (default 100, up to 2,000).
  4. Optionally turn on Include product details or Only specials.
  5. Click Start, then download the results as JSON, CSV, Excel or HTML, or read them through the API.

How much does it cost?

This Actor uses pay-per-event pricing. Platform usage (compute, browser and proxy) is included.

EventPriceWhen
apify-actor-startUS$ 0.004 per GB of memoryOnce per run: US$ 0.008 with the default 2 GB
productUS$ 0.001Per product returned from a search or category listing
product-detailUS$ 0.0015Per product page read: each product from Product URLs, or each listed product when Include product details is on

Examples (default 2 GB):

  • 1,000 products from searches or specials pages: US$ 1.008 (start + 1,000 × 0.001).
  • The same 1,000 products with details: US$ 2.508 (adds 1,000 × 0.0015).
  • 50 product URLs: US$ 0.083 (start + 50 × 0.0015).

Error items (invalid input, unknown category, removed product, blocked request) are never charged. You can cap the spend of a run with Maximum cost per run: the Actor stops cleanly and marks the inputs it didn't reach as not_processed (free).

Input

See the Input tab for every option. Example:

{
"searchQueries": ["milk", "tim tam", "a2 milk 2l"],
"categoryUrls": [
"https://www.coles.com.au/on-special?filter_Special=halfprice",
"https://www.coles.com.au/browse/dairy-eggs-fridge/milk"
],
"productUrls": ["https://www.coles.com.au/product/coles-organic-lite-milk-1l-3227160", "4661649"],
"maxItemsPerQuery": 200,
"includeDetails": false,
"onlySpecials": false,
"postcode": "6000"
}
  • Postcode (optional): prices, specials and availability for the Coles store that delivers to that postcode (for example 2000 Sydney, 3000 Melbourne, 6000 Perth) instead of the default online store. It applies to searches, categories and product pages at no extra cost. storeContext says which store was used, e.g. postcode 6000 / store 0256 (Perth WA, home delivery). Store prices really differ, mostly on fresh produce: in our test, 12 of 114 products listed for bananas, milk, bread and tomatoes had a different price or availability between Sydney, Melbourne and Perth (for example Gourmet Field Tomatoes 1 kg: $5.90 / $8.90 / $10.90). A postcode Coles doesn't know or doesn't deliver to stops the run with an invalid_postcode error item (free).

  • Category URLs can be any aisle (/browse/pantry, /browse/dairy-eggs-fridge/milk), the specials page (/on-special), specials by aisle (/on-special/pantry) or a filtered specials page: half price (/on-special?filter_Special=halfprice) and multibuy (/on-special?filter_Special=multibuy). Filters in the URL are kept. Search-result URLs (/search/products?q=...) work too.

  • Only specials keeps products with isOnSpecial = true.

  • Products are de-duplicated by productId within each search or category.

Output

Example item from the half-price specials page (includeDetails off):

{
"store": "coles",
"source": "category",
"categoryUrl": "https://www.coles.com.au/on-special?filter_Special=halfprice",
"position": 1,
"productId": "1492374",
"name": "Coca-Cola Zero Sugar Soft Drink Multipack Bottles 300ml",
"brand": "Coca-Cola",
"size": "12 Pack",
"url": "https://www.coles.com.au/product/coca-cola-zero-sugar-soft-drink-multipack-bottles-300ml-12-pack-1492374",
"image": "https://cdn.productimages.coles.com.au/productimages/1/1492374.jpg",
"price": 12,
"wasPrice": 24,
"isOnSpecial": true,
"isHalfPrice": true,
"promotionType": "SPECIAL",
"specialType": "PERCENT_OFF",
"promotionText": "1/2 Price - save $12.00",
"unitPrice": 3.33,
"unitPriceText": "$3.33/ 1L",
"isAvailable": true,
"isSponsored": false,
"category": "Drinks > Soft Drinks > Soft Drink Cans",
"barcode": null,
"storeContext": "default",
"scrapedAt": "2026-09-30T04:03:56.633Z"
}

With Include product details (and for every Product URL) the item also has:

{
"barcode": "9310645235899",
"description": "Coles certified organic products are grown and pasturised without the use of synthetic chemicals, fertilisers, pesticides, or herbicides...",
"ingredients": "Certified Organic Australian Homogenised and Pasteurised Lite Milk(dagger symbol).",
"nutrition": {
"Energy (kJ)": { "perServing": "467 kJ", "per100": "187 kJ" },
"Protein": { "perServing": "9.45 g", "per100": "3.78 g" },
"servingSize": "250mL",
"servingsPerPack": "4.00"
},
"allergens": "Contains Milk",
"countryOfOrigin": null,
"images": ["https://cdn.productimages.coles.com.au/productimages/3/3227160.jpg"]
}

An input that failed (never charged):

{
"store": "coles",
"source": "product",
"productUrl": "99999999",
"productId": "99999999",
"error": "not_found",
"errorMessage": "Coles has no product with this ID (removed or never existed).",
"scrapedAt": "2026-09-30T12:00:00.000Z"
}

Error codes: invalid_input, category_not_found, not_found, blocked (Coles refused every retry), http_error, not_processed (maximum cost per run reached). The dataset has three views: Products, Product details and Errors (not charged). Run statistics (requests, retries, browser openings and time) are saved in the RUN_STATS key-value record.

Tips

  • Batch many searches and categories in one run: the start fee is charged once per run, and so is the time the Actor needs to open a browser and pass the Coles website check (usually under a minute).
  • For a weekly specials feed, schedule the half-price and multibuy specials pages with Max items at 2,000.
  • Use barcode (with details) to match products across supermarkets, and unitPrice to compare different pack sizes.
  • A search with no match is not an error: it yields no items (Coles shows "popular products" instead, which are skipped).
  • The run fails only when every input failed; otherwise failures are listed as error items.

Limits

  • Without a postcode, prices are for Coles' default online store (storeContext: "default"; store 7674, the same one Coles uses for postcode 3000), as seen by an anonymous visitor. With Postcode, they are for the store Coles uses for home delivery to that postcode (the first suburb Coles lists for it), not for a Click & Collect store you pick.
  • An unavailable product may come without a price (price: null, isAvailable: false). That is what the site shows, not an error.
  • Up to 2,000 products per search or category (Coles lists 48 per page, plus sponsored tiles).
  • barcode comes from the product page, so listing-only runs return it empty; turn on Include product details if you need it.
  • Coles protects its website with a bot check. The Actor opens a headless browser to pass it and then reads the data directly; if the check comes back during a run, it renews it in the same browser or opens a new one. Runs therefore take longer to start than a plain HTTP scraper.
  • Product details are slow. Coles repeats the check every ~20-50 page reads, and each renewal takes ~20-50 s. A listing page returns 48 products per read, but details need one read per product, so Include product details is much slower than listings: 500 products with details took 6 to 26 minutes in our tests, against ~3,000 listing products in under 6 minutes. Use it on focused searches, or use Product URLs for the items you track.
  • Member prices (Flybuys), personalised offers and catalogue-only deals need an account or aren't listed online, so they are not collected. The Actor never logs in.

FAQ and support

Is it legal to scrape Coles? This Actor only reads publicly available product and price information that any visitor can see, without logging in. It does not collect personal data. You should still check that your use complies with the site's terms and the laws that apply to you, and consult a lawyer if you are unsure.

Can I use it from code or an AI agent? Yes: see the API tab for ready-made calls (HTTP, JavaScript, Python, CLI), or use it through the Apify MCP server.

Found a problem or need a feature? Open an issue in the Issues tab.