Coles Scraper - Prices, Specials, Stock & Catalog avatar

Coles Scraper - Prices, Specials, Stock & Catalog

Pricing

from $2.00 / 1,000 results

Go to Apify Store
Coles Scraper - Prices, Specials, Stock & Catalog

Coles Scraper - Prices, Specials, Stock & Catalog

Scrape Coles.com.au groceries: product name, brand, size, price, was-price & savings (specials), unit price, stock availability and quantity, and category catalog. By search term or category. No login, no API key, no browser.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

Haketa

Haketa

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Security

Limited permissions

Share

Coles Scraper — Prices, Specials, Stock & Catalog 🛒

Scrape Coles, Australia's second-largest supermarket, for live grocery prices, weekly specials, unit prices, stock availability and full category catalogs. This Coles scraper turns any Coles search or browse category into clean, structured product data — product name, brand, size, price now, was-price and savings, comparable (unit) price, stock availability and on-hand quantity, category, image and product URL — with no login, no API key and no coding. Point it at a keyword like milk or a category like dairy-eggs-fridge and it returns every matching product, de-duplicated across pages.

Export your Coles data to JSON, CSV, Excel, HTML, XML, or the API.

Built for grocery price-monitoring tools, retail and FMCG analysts, price-comparison sites, market researchers, deal/bargain apps, suppliers tracking shelf prices, and data teams who need reliable Coles.com.au product data on a schedule.


🔎 Why scrape Coles?

Coles is one of Australia's two dominant grocery chains, carrying tens of thousands of products across dairy, fresh produce, meat, pantry, frozen, drinks, health and household. Its online catalog is a live, nationwide snapshot of grocery prices, weekly specials and markdowns, pack sizes, unit economics and stock levels — exactly the data retailers, suppliers and analysts need to understand the Australian grocery market.

The problem is that this data is spread across thousands of product pages and refreshes constantly: specials rotate weekly, prices move, and stock changes by the hour. Collecting it by hand is slow, error-prone and impossible to keep current. Coles also sits behind Akamai bot protection, so naïve HTTP requests from datacenter IPs are blocked outright — which is why most people give up on scraping Coles altogether.

This Coles scraper solves both problems. It reads the site's structured Next.js data endpoint through a residential proxy (which passes Akamai), paginates through every result and returns clean JSON — so you get spreadsheet-ready Coles product data in minutes instead of hours. A single verification run pulling the keywords milk and coffee returned 779 unique products in about 93 seconds, with every core field populated.

Common reasons people scrape Coles:

  • Price monitoring — track priceNow and priceWas over time to spot increases, drops and markdown patterns.
  • Weekly specials tracking — pull everything currently onSpecial with its saveAmount and saveStatement for catalog/deal feeds.
  • Competitor & basket analysis — compare Coles pricing against Woolworths or other retailers on the same SKUs.
  • Unit-price and value analysis — use comparable, unitPrice and unitMeasure to find the best $/100g or $/L across pack sizes.
  • Stock & availability tracking — watch availability, availabilityType and availableQuantity for out-of-stocks and low inventory.
  • Assortment & category research — export whole categories to understand range, brand mix and private-label penetration.
  • Supplier & brand auditing — confirm your products are listed, priced and in stock at Coles.

✨ What this Coles scraper does

  • ✅ Two collection modes — search by keyword (each term in searchTerms is scraped separately) and browse by category (pass Coles category slugs or full browse URLs in categories).
  • ✅ Automatic pagination — walks every result page for each search term and category (48 products per page) and returns hundreds to thousands of products per source, not just the first page.
  • ✅ Automatic de-duplication — the same product can appear across page boundaries or across multiple search terms; the actor de-dupes by product id for the entire run. In the verification run, 779 rows were returned with 0 duplicates.
  • ✅ Rich product fields — for every product it captures:
    • Identity: id, name, brand, description, size
    • Pricing: priceNow, priceWas, currency (AUD)
    • Specials & savings: onSpecial, saveAmount, saveStatement, promotionType, onlineSpecial
    • Unit economics: unitPrice, unitMeasure, comparable
    • Stock: availability, availabilityType, availableQuantity
    • Catalog & limits: category, retailLimit, promotionalLimit
    • Media & links: imageUrl, url
    • Provenance: source, scrapedAt
  • ✅ Specials-only filter — set onlySpecials: true to keep only products with a reduced price.
  • ✅ Store-specific stock — pass an optional storeId to get stock for a particular Coles store instead of the national default.
  • ✅ No browser, no login, no API key — a fast HTTP scraper that reads Coles's own JSON data endpoint.
  • ✅ Akamai-resilient — runs through a residential proxy and retries blocked requests on fresh sessions, so runs complete reliably.
  • ✅ Any export format — download as JSON, CSV, Excel, HTML, XML, or pull from the Apify API.

🎯 Use cases

  • Grocery price-comparison sites — keep a live Coles price feed next to other retailers.
  • FMCG & CPG brands — monitor your own and competitors' shelf prices, specials and stock at Coles.
  • Retail & category analysts — study assortment, pack sizes, unit pricing and private-label share.
  • Deal, cashback and bargain apps — surface this week's Coles specials with savings amounts.
  • Suppliers & distributors — verify listings, RRP compliance and availability of your products.
  • Market researchers & journalists — quantify grocery inflation using priceNow/priceWas trends.
  • E-commerce & repricing tools — feed Coles pricing into dynamic pricing and planograms.
  • Data teams & dashboards — schedule the Coles API export into BigQuery, Sheets or a warehouse.

📥 Input

Configure the scraper with a few simple fields. Provide at least one search term or one category — if you leave both empty, the actor runs a demo search for milk.

FieldTypeDescription
searchTermsarray of stringsKeywords to search, e.g. milk, coffee, chicken. Each term is scraped separately and paginated in full.
categoriesarray of stringsColes category slugs or browse URLs, e.g. dairy-eggs-fridge or https://www.coles.com.au/browse/dairy-eggs-fridge.
onlySpecialsbooleanKeep only products currently on special (price reduced). Default false.
maxItemsintegerMaximum products per search term / category. Default 500.
storeIdstringOptional Coles store id for store-specific stock. Leave empty for the national default.
proxyConfigurationobjectResidential proxy required (Coles uses Akamai). Defaults to Apify Residential (Australia).

Example input

{
"searchTerms": ["coffee", "chocolate"],
"categories": ["dairy-eggs-fridge"],
"onlySpecials": false,
"maxItems": 500,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "AU"
}
}

📤 Output

Each product becomes one clean record. Here is a real item from the latest verification run (a milk search result that was on special):

{
"id": "1902465",
"name": "Zymil Lactose Free Low Fat Milk",
"brand": "Pauls",
"description": "PAULS ZYMIL LACTOSE FREE LOW FAT MILK 2L",
"size": "2L",
"priceNow": 5.95,
"priceWas": 6.9,
"onSpecial": true,
"saveAmount": 0.95,
"saveStatement": "save $0.95",
"promotionType": "SPECIAL",
"onlineSpecial": false,
"unitPrice": 2.98,
"unitMeasure": "1l",
"comparable": "$2.98/ 1L",
"currency": "AUD",
"availability": true,
"availabilityType": "InStoreAndOnline",
"availableQuantity": 82,
"category": "DY MILK",
"retailLimit": 20,
"promotionalLimit": 12,
"imageUrl": "https://productimages.coles.com.au/productimages/1/1902465.jpg",
"url": "https://www.coles.com.au/product/zymil-lactose-free-low-fat-milk-1902465",
"source": "search:milk",
"scrapedAt": "2026-11-02T01:55:13.385Z"
}

Field reference

FieldDescription
idColes product id (stable identifier, used for de-duplication).
nameProduct name.
brandBrand name.
descriptionFull product description as listed by Coles.
sizePack size, e.g. 2L, 160g, 6 pack.
priceNowCurrent selling price (AUD). null for the rare product that is unavailable and has no live price.
priceWasPrevious price when on special; null when not on special.
onSpecialtrue when the product is currently promoted / price-reduced.
saveAmountDollar savings on special (present when on special).
saveStatementHuman-readable savings text, e.g. save $0.95 (present when on special).
promotionTypePromotion type when present, e.g. SPECIAL, EVERYDAY, NEW, BONUSCOLLECTABLE.
onlineSpecialtrue when the special applies to the online store.
unitPricePrice per unit of measure (AUD).
unitMeasureThe unit the comparable price is based on, e.g. 1l, 100g.
comparableComparable/unit-price string, e.g. $2.98/ 1L.
currencyAlways AUD.
availabilitytrue when the product is available.
availabilityTypee.g. InStoreAndOnline, Online.
availableQuantityOn-hand quantity (store-dependent; present when provided).
categoryColes merchandise category, e.g. DY MILK, COFFEE, GROCERY MILK.
retailLimitMaximum purchase quantity.
promotionalLimitMaximum quantity at the promotional price.
imageUrlAbsolute URL to the product image on the Coles image CDN.
urlAbsolute URL to the product page on Coles.com.au.
sourceWhich input produced the row, e.g. search:coffee or browse:dairy-eggs-fridge.
scrapedAtISO 8601 timestamp of when the record was collected.

Some fields are data-dependent and populate only when Coles provides them — for example priceWas, saveAmount and saveStatement appear only on products that are on special (about 28% of rows in the sample run, matching the share of specials), promotionType is present on promoted lines (~52%), and availableQuantity varies by product and store. Core fields (id, name, brand, description, size, onSpecial, currency, availability, category, url, imageUrl, scrapedAt) are present on essentially every record (100% in the verification run), and priceNow, unitMeasure, comparable, availableQuantity, retailLimit and promotionalLimit sit at 96–99.6%.

🔁 Pagination & scale

The Coles scraper reads the site's Next.js data endpoint and paginates automatically for every search term and category. It reads the live buildId from the Coles home page on each run (the id changes whenever Coles deploys), then requests each results page in turn (48 products per page) until it reaches your maxItems limit, runs out of results, or hits the end of the result set. Products are de-duplicated by id across all pages and all search terms, so you never get the same SKU twice.

Set maxItems to control volume per source — a single category or popular keyword can return hundreds to several thousand products. In the verification run, coffee filled a maxItems of 450 while milk returned its full inventory of 329, for 779 unique products with a 0% duplicate rate. Because de-duplication is global for the run, combining many searchTerms and categories in one run produces a single clean, de-duplicated dataset.

⚙️ How to use

  1. Open the actor on the Apify Console and click Start — or integrate it via the Apify API.
  2. Enter your targets — add one or more searchTerms and/or Coles categories (slug or browse URL).
  3. Tune the run — optionally set onlySpecials, maxItems, and a storeId for store-level stock.
  4. Keep residential proxy on — the default Apify Residential (AU) configuration is required to pass Akamai.
  5. Run it and watch products stream into the dataset in real time.
  6. Export to JSON, CSV, Excel, HTML or XML, or fetch programmatically from the dataset API.
  7. Automate — put the actor on a schedule (e.g. daily price snapshots) and push results to Make, Zapier, Google Sheets, a webhook, or your database.

💡 Tips

  • Monitor specials daily — schedule a run with onlySpecials: true to capture Coles's rotating weekly deals with their savings amounts.
  • Use categories for full assortment — pass category slugs like dairy-eggs-fridge to export an entire department rather than a single keyword.
  • Compare value, not just price — sort on unitPrice / comparable to find the cheapest per 100g or per litre across different pack sizes.
  • Store-level stock — set storeId when you need availability for a specific Coles store instead of the national default.
  • Track price history — run on a schedule and append scrapedAt so you can chart priceNow and priceWas over time.
  • Keep the AU residential proxy — datacenter IPs are blocked by Akamai; the default residential (Australia) setting is what makes runs succeed.

❓ FAQ

Is scraping Coles legal? This scraper collects publicly available product information from Coles.com.au — the same data any shopper can see. As with any scraping, use the data responsibly, respect Coles's Terms of Service, and comply with applicable laws. Consult your own legal advisor for your specific use case.

Do I need a proxy or a login? No login and no API key. You do need a residential proxy, because Coles uses Akamai bot protection that blocks datacenter IPs. The actor defaults to Apify Residential (Australia), which works out of the box.

How many products can it scrape, and how fast? Thousands. A single popular keyword or category can return hundreds to several thousand products, and you can combine many search terms and categories in one run. A verification run of milk + coffee returned 779 unique products in ~93 seconds. The default maxItems is 500 per source; raise it for larger pulls.

Which export formats are supported? JSON, CSV, Excel (XLSX), HTML, XML, and the Apify dataset API / RSS. Everything is also available programmatically.

Is there a Coles API? Coles doesn't offer a public product API. This actor effectively gives you one: a reliable, structured Coles API that returns prices, specials, stock and catalog data as JSON, ready for your app, dashboard or warehouse.

How fresh is the data? Every run is live — the actor reads Coles's current data endpoint in real time and stamps each record with scrapedAt. Schedule it (hourly, daily, weekly) to keep your dataset current.

Can I get only the products on special? Yes — set onlySpecials: true and the actor keeps only products with a reduced price, including saveAmount and saveStatement.

Can I filter by category or store? Yes. Use the categories input (slug or browse URL) to target specific departments, and the optional storeId to get store-specific stock levels.

Why do some fields come back empty? Fields like priceWas, saveAmount and saveStatement only appear on products that are actually on special, and availableQuantity depends on the product and store. Core fields are always present — see the Output field reference above.

A run returned no products — what happened? This almost always means the request was blocked by Akamai because a residential proxy wasn't used, or a transient challenge occurred. Keep the default residential (AU) proxy and re-run; the actor retries blocked requests on fresh sessions automatically.

  • Woolworths Scraper — the same rich price, specials and stock data for Coles's main competitor, Woolworths.
  • Blinkit Scraper — grocery prices and product catalog from Blinkit (India's instant-delivery leader).

👉 Ready to pull live Coles data? Click Start, enter your search terms or categories, and export fresh Coles prices, specials, stock and catalog to JSON, CSV, Excel or API in minutes.