Coles Australia Scraper: Products, Prices, Specials & Stock
Pricing
from $1.80 / 1,000 product records
Coles Australia Scraper: Products, Prices, Specials & Stock
Scrape product data, live prices, discounts, weekly specials, and stock levels from Coles Australia (coles.com.au). Search by keyword, walk category and specials URLs, or look up specific SKUs. Get brand, pack size, aisle location, purchase limits, and store-specific pricing by Coles store ID.
Pricing
from $1.80 / 1,000 product records
Rating
5.0
(1)
Developer
GetAScraper
Maintained by CommunityActor stats
0
Bookmarked
11
Total users
5
Monthly active users
3 hours ago
Last modified
Categories
Share
π¦πΊ Coles Australia Scraper: Products, Prices, Specials & Stock
|
Coles prices you can actually compare Scrape Coles Australia products with a true per-kg or per-L price already worked out, honest specials math, and optional alerts when a price or stock level moves. |
|
π True unit pricing A real price per kg or per L on every row, not a label that mixes per-100g and per-kg listings. |
π·οΈ Honest specials math A markdown only shows as a markdown when the original price genuinely beats today's price. |
π Price & stock alerts Turn on change tracking for new, dropped, risen, and restocked items on every scheduled run. |
π¦ Full stock detail Purchase limits, available quantity, and stock channel on every row. |
Point this scraper at any Coles search term, category page, or product SKU. It returns clean pricing, was/now markdown discounts, a normalized unit price, stock availability, and full product details. No login required.
π What does this actor do?
Coles is one of Australia's two largest supermarket chains, with more than 800 stores. This scraper pulls structured product data from Coles Australia (coles.com.au) so you can track prices, specials, and availability at scale.
You can scrape three ways: by keyword search, by pasting category or weekly specials URLs, or by feeding a list of product SKUs. Results download as JSON, CSV, Excel, or XML.
π‘ Who uses this?
- I am a pricing analyst at a competing grocery brand. Every morning I need to know exactly what Coles charges per kilo on my category, not just the sticker price, before I set today's price match.
- I am a category manager at an FMCG supplier. I need to know which of my SKUs just went on markdown and by how much, without opening dozens of product pages by hand.
- I am a data journalist covering cost of living. I track a weekly grocery basket and need true per-kg and per-L prices on staples like milk, bread, and eggs, not numbers that mix per-100g and per-kg listings.
- I am an online reseller. I want an alert the moment a product goes on markdown or comes back in stock, not a reason to keep refreshing the page.
π How to use
|
STEP 1 Choose your scope Search a keyword, paste a category or specials URL, or drop in a SKU list. |
STEP 2 Get comparable data Every row lands with a true per-kg or per-L price and clean specials math, ready to sort. |
STEP 3 Track what changes Turn on change monitoring to see only what's new, dropped, risen, or restocked on repeat runs. |
π₯ Input
| Field | Type | Required | Description |
|---|---|---|---|
scrapeMode | enum | Yes | How to find products: searchKeyword, providedUrls, or skuList. |
searchQuery | string | No | Search term, product name, or barcode. Used in keyword search mode. |
startUrls | array of URLs | No | Coles search, category, or weekly specials URLs. Used in category mode. |
skuList | array | No | Specific Coles product SKU IDs to scrape. Used in SKU list mode. |
includeDescription | boolean | No | Include the full product description text. Default: true. |
maxItems | integer | No | Maximum number of products to scrape per run. Default: 25. |
maxRequestsPerCrawl | integer | No | Maximum pages to load per run. Set to 0 for no limit. |
monitorMode | enum | No | snapshot (default) returns current data every run. changes compares against the last run of the same Watchlist name and adds change fields to every row. |
stateName | string | No | Watchlist name that separates independent change-tracking scopes. Only used when monitorMode is changes. |
onlyChanged | boolean | No | When monitorMode is changes, emit only rows that changed since the last run. Default: false. |
proxyConfiguration | proxy | No | Datacenter proxies are the default. Switch to an Australian residential proxy only if a high-volume run is challenged. |
π Data table
| Field | Type | Description |
|---|---|---|
product_id | string | Unique Coles product SKU. |
name | string | Product name as listed on Coles. |
brand | string | null | Brand name, when published by the source. |
description | string | Full product description text. |
size | string | null | Pack size or volume, for example "2L", when published. |
availability | boolean | null | Whether the product is currently in stock, when published. |
availability_type | string | null | Stock channel, for example "InStoreAndOnline", when published. |
available_quantity | integer | null | Units currently available, including a genuine 0 for an out-of-stock item. |
price | number | null | Current retail price. |
original_price | number | null | Pre-discount "was" price, only when the source published a real one. |
on_special | boolean | Whether original_price genuinely exceeds price. |
discount_amount | number | null | original_price minus price, only when on_special is true. |
discount_percent | number | null | Discount as a percentage of original_price, only when on_special is true. |
currency | string | Currency code, always AUD. |
comparable | string | The unit price exactly as Coles displays it, for example "$3.39/ 100g". |
unit_price | number | null | The numeric unit price behind comparable. |
unit_price_quantity | number | null | The quantity that unit_price is per, for example 100. |
unit_price_unit | string | null | The unit that unit_price is per, for example "g". |
unit_price_basis | string | null | Normalized comparison basis: kg, L, or ea. |
price_per_base_unit | number | null | The true price per full unit_price_basis unit, always comparable across products, unlike comparable, which mixes per-100g and per-1kg displays. |
image_url | string | null | Full-resolution product image URL. |
category | string | Top-level Coles category for the product. |
url | string | Direct link to the Coles product page. |
scraped_at | string | Timestamp when the record was extracted. |
retail_limit | integer | null | Maximum units a shopper can buy. |
promotional_limit | integer | null | Purchase limit that applies during a promotion. |
online_special | boolean | null | Whether the item is an online-only special. |
sub_category | string | null | More specific category below the top level. |
class_name | string | null | Coles product classification label. |
trade_profit_centre | string | null | Coles's internal merchandise grouping, e.g. "DAIRY". |
category_group | string | null | A broader grouping above category. |
change_type | string | Only present in changes mode: NEW, PRICE_DROP, PRICE_RISE, BACK_IN_STOCK, OUT_OF_STOCK, or UNCHANGED. |
old_price | number | null | Only present in changes mode: the price from the previous run. |
price_delta | number | null | Only present in changes mode: price minus old_price. |
price_delta_pct | number | null | Only present in changes mode: price_delta as a percentage of old_price. |
You can download the dataset in JSON, HTML, CSV, or Excel from the Output tab of any run.
π€ Sample output
{"product_id": "8150288","name": "Full Cream Milk","brand": "Coles","description": "Coles Full Cream Milk | 3L","size": "3L","availability": true,"availability_type": "InStoreAndOnline","available_quantity": 245,"price": 4.95,"currency": "AUD","on_special": false,"comparable": "$1.65/ 1L","unit_price": 1.65,"unit_price_quantity": 1,"unit_price_unit": "l","unit_price_basis": "L","price_per_base_unit": 1.65,"image_url": "https://productimages.coles.com.au/productimages/8/8150288.jpg","category": "MILK","url": "https://www.coles.com.au/product/8150288","scraped_at": "2026-09-08T12:00:00.000Z","retail_limit": 20,"promotional_limit": 12,"online_special": false,"sub_category": "WHITE MILK","class_name": "FULL CREAM","trade_profit_centre": "DAIRY","category_group": "DAIRY"}
π° Pricing
Pricing is pay per result. You are charged only for products successfully written to your dataset. Empty runs and blocked requests cost nothing. There are no monthly subscriptions or minimum commitments.
β Enjoying Coles Australia Scraper?
|
β β β β β One run just told you which Coles price actually wins, not just which one looks cheapest. A 5-star rating takes 10 seconds and helps other pricing analysts and category managers find this actor. Your feedback also tells us what to build next. |
| β Β Β Rate this Actor on Apify |
β¨ Tips
- Track weekly specials. Paste a specials URL like the half-price page as a start URL to capture every markdown in one run.
- Compare prices fairly. Sort or filter on
price_per_base_unit, notpriceor the rawcomparablestring. Coles displays some products per-100g and others per-1kg, so the sticker numbers alone aren't comparable. - Get alerted, not just logged. Set
monitorModetochangesand schedule the run. Each run after the first only reports what actually moved. - Start small. Set a low
maxItemsfor your first run to confirm the output matches what you need before scaling up.
β FAQ
Which Coles pages can I scrape?
You can scrape keyword search results, category and browse pages, weekly specials pages, and individual product SKUs. Pick the mode that matches your input.
Can I get prices for a specific store or region?
No, this actor does not support pinning a specific Coles store. Coles resolves store-specific pricing automatically based on network location, and there is no way to override that from a scraper input. Every run reflects whatever store Coles resolves for that run.
Why is there no in-store aisle location field?
Coles's own product data confirms this isn't published online for any product. The field that would carry it is a placeholder message telling shoppers to ask staff in-store, so no scraper can extract data the source doesn't have.
How fresh is the data?
Every run fetches live data directly from Coles. Results reflect the prices, specials, and stock shown on the site at the moment the run executes.
Is scraping Coles legal?
This actor reads publicly available product pages, the same pages any shopper can open without logging in. You are responsible for complying with Coles' terms of service and applicable laws. For questions or custom fields, contact the author at devanshtiwari365@gmail.com.
π Other actors
- π Kroger Scraper: Product Prices, Stock & Search β - extracts product prices, stock, and search results from Kroger in the US.
- π Kroger Price Monitor: Price & Stock Change Alerts β - tracks price and stock changes on Kroger grocery listings.
- π° Falabella Price Monitor: Alerta de Precios (Chile, Peru, Colombia) β - watches prices and stock alerts across Falabella in Chile, Peru, and Colombia.
- π° Trendyol Price Monitor: Fiyat Takibi (TΓΌrkiye) β - tracks price and stock changes on Trendyol listings in Turkey.
- Woot Scraper: Daily Deals, Flash Sales & Clearance Prices β - collects daily deal listings and prices from Woot.