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

18 hours ago

Last modified

Features

Limited permissions

Share

Coles Scraper — Prices, Specials, Stock & Catalog 🛒

Apify Actor Platform Node Data Format Maintenance Delivery Speed

Scrape Coles, Australia's leading supermarket chain, for live grocery prices, weekly specials, unit pricing, stock availability, and full category catalogs. This high-performance Coles scraper transforms Coles searches and browse directories into structured retail intelligence — product title, brand, size, current price, was-price and dollar savings, unit economics (price per 100g/L), stock availability and on-hand quantity, department taxonomy, high-res images, and product URLs.

Export your Coles data effortlessly to JSON, CSV, Excel (XLSX), XML, HTML, or integrate directly with the Apify REST API.

Built for retail FMCG analysts, pricing intelligence platforms, supermarket price-comparison apps, brand manufacturers auditing digital shelf compliance, deal aggregators, and e-commerce researchers tracking the Australian grocery market.


⚡ At a glance

FeatureSpecification
Target RetailerColes Supermarkets (Australia #2 Grocer)
Input MethodsKeywords (searchTerms), Department slugs/URLs (categories)
Output FormatsJSON, CSV, XML, Excel (XLSX), HTML Table, RSS
PerformancePure HTTP engine (~20-45 seconds for 100+ grocery items)
Pagination Support1,000+ products per query with deep multi-page pagination
Proxy RequirementApify Proxy (Residential Australia required for carrier access)
Pricing IntelligenceCurrent price, was price, savings statement, unit price (comparable)
Stock & InventoryIn-stock status, availability type, available inventory count
DeduplicationAutomatic global product ID deduplication across terms & categories

🔎 Why scrape Coles?

Coles represents nearly 30% of the Australian supermarket sector, operating over 800 physical stores alongside a massive nationwide online delivery service. Its e-commerce catalog contains over 40,000 active SKUs across fresh produce, dairy, bakery, meat & seafood, pantry staples, frozen foods, drinks, health, and household essentials.

Monitoring Coles catalog data provides invaluable commercial insights:

  • Dynamic Promotional Cycles: Coles rotates thousands of weekly specials (half-price discounts, multi-buys, and catalog promotions) every Wednesday.
  • Unit Economics: Explicit price-per-unit comparisons (comparable, e.g. $1.25 / 100g or $2.10 / 1L) enabling direct value benchmarking across varying package sizes.
  • Stock & Inventory Levels: Precise on-hand inventory counts (availableQuantity) that reveal out-of-stock patterns and supply chain disruptions.
  • Private Label vs National Brands: Granular brand penetration metrics comparing Coles home brand against leading FMCG multinationals.

Collecting this grocery data manually is virtually impossible due to rapid price shifts and extensive catalog breadth. This Coles scraper automates the entire process, retrieving clean, structured product data directly into downloadable spreadsheets or automated database pipelines.

Primary Industry Use Cases

  1. Supermarket Price Comparison: Monitor price parity on identical SKUs between Coles and Woolworths to power consumer comparison engines and grocery savings apps.
  2. FMCG Brand Shelf Auditing: Verify whether manufacturer products are properly stocked, accurately priced, and featured on weekly promotional rotations.
  3. Inflation & CPI Research: Track grocery price index fluctuations over time by scheduling recurring weekly scrapes across core food baskets.
  4. Deal Aggregation & Bargain Hunting: Filter products where onSpecial: true to feed automated discount deal portals and bargain community newsletters.
  5. Local Store Inventory Optimization: Supply specific storeId values to analyze stock availability differences between suburban hypermarkets and urban metro stores.

✨ Features

  • Dual Collection Modes: Search Coles by product keywords (searchTerms) or harvest complete departments via category slugs (categories).
  • Deep 1,000+ Pagination: Automatically traverses 48 products per page across all pagination pages up to your configured maxItems without artificial limits.
  • Comprehensive Promotion Data: Captures current price (priceNow), previous price (priceWas), exact dollar savings (saveAmount), and promotional taglines (saveStatement).
  • True Unit Price Intelligence: Extracts normalized unit pricing (comparable and unitPrice), allowing accurate cost comparison across different packaging volumes.
  • Stock & Inventory Visibility: Reports binary in-stock flags (availability) alongside actual available purchase units (availableQuantity).
  • Store-Specific Fulfillment: Target specific regional stores by setting the optional storeId parameter for local stock variations.
  • Zero Duplicates Guarantee: Maintains an in-memory product ID hash set across all pages and search terms, ensuring completely unique output records.
  • Zero Browser Overhead: Pure HTTP request engine running with minimal memory (256-512 MB) for maximum execution speed and cost efficiency.

When targeting entire departments with the categories parameter, you can supply category slugs or direct browse URLs:

Category SlugDepartment NameRepresentative Products
dairy-eggs-fridgeDairy, Eggs & FridgeFresh milk, yogurt, butter, block cheese, chilled dips
pantryPantryCoffee, pasta, canned goods, breakfast cereal, baking
meat-seafoodMeat & SeafoodBeef mince, chicken breast, salmon fillets, sausages
fruits-vegetablesFruit & VegetablesBananas, apples, potatoes, salad mixes, avocados
bakeryBakerySliced bread, rolls, sourdough, muffins, croissants
frozenFrozenIce cream, frozen vegetables, microwave meals, pizza
drinksDrinksSoft drinks, kombucha, sparkling water, fruit juices
snacks-confectionerySnacks & ConfectioneryPotato chips, chocolate bars, biscuits, nuts, candy
health-beautyHealth & BeautyShampoo, toothpaste, vitamins, body wash, skincare
householdHouseholdLaundry detergent, toilet paper, cleaning sprays, dishwashing

📥 Input parameters

The actor takes clean JSON inputs. All parameters are completely optional with sensible defaults.

ParameterTypeDefaultDescription
searchTermsarray[]Keywords to search (e.g. ["milk", "coffee"]). Empty runs a demo.
categoriesarray[]Category slugs or browse URLs (e.g. ["dairy-eggs-fridge"]).
onlySpecialsbooleanfalseKeep only products currently marked down or on promotion.
maxItemsinteger0Max products per source. 0 = unlimited / all matching pages. Prefill: 50.
storeIdstring""Optional Coles store ID for localized stock lookups. Empty = national default.
proxyConfigurationobjectResidential AUApify Residential proxy required to navigate Australian retailer firewalls.

Example Input

{
"searchTerms": ["coffee", "oat milk"],
"categories": ["dairy-eggs-fridge"],
"onlySpecials": true,
"maxItems": 100,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "AU"
}
}

📤 Output data fields

The actor outputs clean tabular records stored in the default dataset. Below is an emoji-grouped schema breakdown with data coverage indicators:

🏷️ Product Identification & Details

FieldTypeCoverageDescription
idstring🟢 High (100%)Unique Coles product identifier number.
namestring🟢 High (100%)Full brand and product description title.
brandstring🟢 High (98%)Brand manufacturer name or private label indicator.
descriptionstring🟡 Conditional (80%)Extended marketing description or tasting notes.
sizestring🟢 High (95%)Pack size or volume label (e.g. 1L, 500g, 24 pack).
categorystring🟢 High (98%)Full department taxonomy path.
imageUrlstring🟢 High (98%)Full CDN link to high-resolution product photography.
urlstring🟢 High (100%)Canonical direct URL: https://www.coles.com.au/product/....

💵 Pricing & Weekly Specials

FieldTypeCoverageDescription
priceNownumber🟢 High (100%)Current retail selling price in AUD.
priceWasnumber🟡 Conditional (Specials)Original regular price before promotional discount.
onSpecialboolean🟢 High (100%)true if item is marked down or carries a promotion.
saveAmountnumber🟡 Conditional (Specials)Exact dollar amount saved per purchase unit.
saveStatementstring🟡 Conditional (Specials)Promotional marketing text (e.g. Save $2.50, 1/2 Price).
promotionTypestring🟡 Conditional (Specials)Deal classification (e.g. Special, MultiBuy).
onlineSpecialboolean🟢 High (100%)true if special is exclusive to online orders.
currencystring🟢 High (100%)ISO currency code (AUD).

⚖️ Unit Economics & Inventory

FieldTypeCoverageDescription
unitPricenumber🟢 High (95%)Raw numeric unit cost.
unitMeasurestring🟢 High (95%)Unit benchmark specification (e.g. 100g, 1L).
comparablestring🟢 High (95%)Formatted unit price statement (e.g. $1.25 per 100g).
availabilityboolean🟢 High (100%)true if item is in stock and purchasable.
availabilityTypestring🟢 High (100%)Fulfillment channel (e.g. InStoreAndOnline).
availableQuantitynumber🟡 Conditional (80%)Exact numeric quantity available in current inventory.
retailLimitnumber🟡 Conditional (70%)Maximum purchase limit per order.
sourcestring🟢 High (100%)Scraper origin identifier (e.g. search:milk).
scrapedAtstring🟢 High (100%)ISO timestamp when the product was extracted.

📋 Comprehensive Output Example

Below is a complete JSON output record from a live scrape:

{
"id": "3184875",
"name": "Coles Full Cream Milk",
"brand": "Coles",
"description": "Australian full cream pasteurised milk with a smooth rich taste.",
"size": "2L",
"priceNow": 3.10,
"priceWas": null,
"onSpecial": false,
"saveAmount": null,
"saveStatement": null,
"promotionType": null,
"onlineSpecial": false,
"unitPrice": 1.55,
"unitMeasure": "1L",
"comparable": "$1.55 per 1L",
"currency": "AUD",
"availability": true,
"availabilityType": "InStoreAndOnline",
"availableQuantity": 99,
"category": "Dairy, Eggs & Fridge > Milk > Fresh Milk",
"retailLimit": 10,
"promotionalLimit": null,
"imageUrl": "https://productimages.coles.com.au/productimages/3/3184875.jpg",
"url": "https://www.coles.com.au/product/coles-full-cream-milk-2l-3184875",
"source": "search:milk",
"scrapedAt": "2026-11-10T13:49:00.000Z"
}

💻 Code examples & integrations

Node.js (Apify Client)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({
token: process.env.APIFY_TOKEN,
});
const run = await client.actor('haketa/coles-scraper').call({
searchTerms: ['chocolate', 'coffee'],
onlySpecials: true,
maxItems: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Retrieved ${items.length} Coles grocery specials:`);
for (const item of items.slice(0, 5)) {
console.log(`- ${item.name} (${item.brand}): Now $${item.priceNow} (Was $${item.priceWas}) | ${item.saveStatement || 'Special'}`);
}

Python (apify-client) & Basket Analysis

import os
import pandas as pd
from apify_client import ApifyClient
client = ApifyClient(os.getenv('APIFY_TOKEN'))
run_input = {
"searchTerms": ["olive oil", "pasta"],
"maxItems": 60,
}
run = client.actor("haketa/coles-scraper").call(run_input=run_input)
# Convert dataset into a Pandas DataFrame
items = list(client.dataset(run["defaultDatasetId"]).iterate_items())
df = pd.DataFrame(items)
print(f"Loaded {len(df)} Coles products.")
specials = df[df["onSpecial"] == True]
print(f"Items currently on special: {len(specials)}")
print(specials[["name", "priceNow", "priceWas", "saveStatement", "comparable"]])

cURL (Apify API)

curl "https://api.apify.com/v2/acts/haketa~coles-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"searchTerms": ["sourdough"],
"maxItems": 50
}'

🏷️ Promotional Deal Types on Coles

Coles utilizes several promotional structures to merchandise discount lines:

Deal TypeSample Marketing TagMeaning & FMCG Strategy
1/2 Price Specials1/2 Price50% discount off regular retail price; major traffic drivers
Price DropsSave $X.XXStandard temporary price reduction across seasonal campaigns
Multi-Buys2 for $7.00Bundle incentives requiring volume purchase to unlock savings
Online ExclusivesOnline Only SpecialPromotional pricing available strictly through web delivery
Clearance / MarkdownClearanceFinal stock sell-off before discontinuing a SKU

💼 FMCG & Retail Optimization Workflows

1. Automated Wednesday Specials Alert

Coles updates weekly discount catalogs every Wednesday morning. Set up an Apify Schedule running Wednesdays at 08:00 AEST with onlySpecials: true. Push output data to Google Sheets or Slack to alert merchandising teams to newly discounted competitor lines.

2. Digital Shelf & Out-of-Stock Tracking

Monitor inventory health across your brand's SKUs. When availability turns false or availableQuantity < 5, trigger an automated webhook alerting field sales reps to restock the distribution center.

3. Price-Per-Unit Value Benchmarking

Sort grocery datasets by comparable unit pricing to identify whether private label brands or national brands offer superior value per kilogram across staple commodities.

4. Zapier & Make E-Commerce Automation

Connect the Apify Webhook trigger to a Make (Integromat) or Zapier scenario. Whenever a Coles scrape completes, automatically push discounted product titles, savings statements, and image URLs to Discord, Slack, or an Airtable deal database.


💡 Practical tips & optimization

  • Keep Residential AU Proxies Enabled: Coles utilizes sophisticated carrier security that restricts standard datacenter IP blocks. Retaining the pre-configured Apify Residential (Australia) proxy guarantees reliable request resolution.
  • Harvesting Broad Departments: To download hundreds of items in a category, use department slugs like dairy-eggs-fridge rather than specific keywords.
  • Store-Specific Variations: Prices are generally consistent nationwide, but stock quantities vary heavily by retail branch. Set storeId if you require localized inventory verification.

❓ Frequently Asked Questions (FAQ)

Do I need a Coles account or credentials?

No. This actor retrieves publicly available grocery catalog data directly. No user login, customer account, or proprietary API key is required.

Why is a residential proxy required?

Coles employs advanced carrier firewall rules that block generic cloud datacenter IP addresses. Apify Residential proxies route requests through genuine Australian residential networks, ensuring seamless page resolution.

How many products can I extract in a single execution?

You can scrape thousands of products across multiple queries and categories. Setting maxItems: 0 instructs the scraper to paginate through all available pages in the category.

Can I extract products exclusively on special?

Yes. Enabling onlySpecials: true automatically filters out regular-priced items, exporting only products with active price reductions or promotional deals.

What export formats are supported?

You can download datasets in JSON, CSV, Excel (XLSX), XML, or HTML formats directly from the Apify Console or access records programmatically via the Apify Dataset API.

Does the scraper capture high-resolution product imagery?

Yes. Every product record includes an absolute CDN URL inside imageUrl pointing directly to Coles's high-resolution product photography servers.

How fresh is the pricing data?

Every run queries Coles's live e-commerce servers in real time. Because grocery prices and promotional discounts rotate weekly and daily, scheduling recurring runs guarantees you capture the latest active figures.

Can I track private-label penetration across categories?

Yes. Coles home-brand items explicitly list "Coles", "Coles Finest", or "Coles Organic" within the brand field. You can filter by brand in Excel or Python to calculate the proportion of private-label offerings in any department.

Can I combine search keywords and category departments in one run?

Yes. You can supply both searchTerms and categories in the same input JSON. The scraper processes all search keywords first and subsequently harvests the specified category departments, maintaining global deduplication so overlapping items are never duplicated.

What happens if a search keyword has no matching products?

If Coles returns zero results for a search term, the actor logs an informational notice and gracefully continues to the next term or category without crashing.


Explore complementary retail intelligence scrapers from Haketa:

  • Woolworths Scraper — Extract prices, specials, and stock from Australia's #1 grocery supermarket.
  • Blinkit Scraper — Scrape quick-commerce grocery prices and catalog data from Blinkit India.

📋 Changelog

Version 1.2 (2026-11)

  • Unlocked Deep Pagination: Extended pagination loops up to 1,000 pages per query, supporting deep multi-thousand product catalog exports.
  • Normalized Query Caps: Configured maxItems: 0 as unlimited / auto-pagination mode, with clean prefill defaults.
  • Session & Network Resilience: Enhanced automatic session retry handling across residential proxy connections to guarantee reliable data ingestion.
  • Unit Economics Enrichment: Improved regex extraction of unit measure ratios and packaging volume benchmarks.
  • Documentation Expansion: Added detailed visual badges, category slug tables, Pandas analysis guides, and refined SEO metadata.

Version 1.1

  • Added full image URL prefix resolution with CDN fallback.
  • Added support for store-specific cookie fulfillment targeting.
  • Standardized string typing across all output schema properties.

Version 1.0

  • Initial release featuring Coles keyword search, category catalog extraction, and weekly specials tracking.
⌂ 换网址