# 🚀 Coles Specials Scraper · 5,000 Free Deals/Month (`omkar-cloud/coles-specials-scraper`) Actor

Coles Specials Scraper gets you Coles specials ⚡ fast, 🎯 100% accurate and 🔍 ridiculously detailed — half-price, multi-buy & online-only deals with was/now prices. 💰 $1 per 1,000 deals, no start fee. Scrape your first 5,000 deals free every month 🚀

- **URL**: https://apify.com/omkar-cloud/coles-specials-scraper.md
- **Developed by:** [Omkar Cloud](https://apify.com/omkar-cloud) (community)
- **Categories:** E-commerce, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 deals

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Coles Specials Scraper

Coles Specials Scraper by Omkar Cloud gets you every Coles special — ⚡ fast, 🎯 accurate and 🔍 detailed.

Half-price deals, multi-buy offers and online-only specials, each with its was/now price, the saving in dollars and percent, the unit price, stock and category — for any Coles store in Australia.

**$1 per 1,000 deals.** And with Apify's free plan you get $5 of credit every month, so your first **5,000 deals each month are free**.

This is an excellent Actor made by Omkar Cloud, which is Rated Excellent — [4.7 based on 30 reviews on Trustpilot](https://www.trustpilot.com/review/omkar.cloud).

👉 [**Try Coles Specials Scraper free**](https://apify.com/omkar-cloud/coles-specials-scraper) — your first 5,000 deals are Free.

### What can I get

- 🏷️ **Half-price specials** — every 1/2 Price deal with was price, now price and saving
- 🛍️ **Multi-buy offers** — "Pick any 2 for $7.70", with quantity, price each and total
- 💻 **Online-only specials** — the deals you never see on the shelf
- 🛒 **Per category** — pantry, drinks, frozen, bakery… or the whole store
- 📍 **Per store** — prices, stock and specials of the exact Coles store you care about
- 🔎 **Filters** — by brand, dietary need or allergen, sorted how you like

### Why Coles Specials Scraper

Most other Coles scrapers fail you in one of four ways:

- 🗄️ **Inaccurate, cached, stale data** — last week's catalogue is worthless
- 🧩 **Low-detail data** — a name and a price, never the was price or the offer
- 💸 **Pay more to get the same data**
- 🪦 **Works today, breaks next month** — nobody maintains it

Coles Specials Scraper is scraped live on every run, priced honestly, and actively maintained.

### What data you get

58 columns per deal. The ones you will use most:

| Field | What it is | Example |
|---|---|---|
| `name`, `brand`, `size` | The product | Weet-bix Breakfast Cereal, Sanitarium, 575g |
| `price` | Price now | 2.5 |
| `was_price` | Price before the special | 5 |
| `save_amount`, `save_percent` | The saving | 2.5, 50 |
| `price_description` | Special badge | 1/2 Price |
| `offer_description` | Multi-buy offer | Pick any 2 for $7.70 |
| `multi_buy_min_quantity`, `multi_buy_price_each`, `multi_buy_total_price` | Multi-buy maths | 2, 3.85, 7.7 |
| `unit_price`, `unit_price_label` | Comparable unit price | 0.43, $0.43/ 100g |
| `is_online_only_special` | Online-only deal? | false |
| `is_available`, `available_quantity` | Stock at the store | true, 41 |
| `department`, `category`, `subcategory` | Where it sits at Coles | Pantry, Breakfast, Breakfast Cereal |
| `retail_limit`, `promotional_limit` | Purchase limits per order | 20, 12 |
| `store_id` | Store the prices belong to | 584 |
| `link`, `image` | Product page and image | https://www.coles.com.au/product/… |

Plus product ids, category ids, every category path, the Coles merchandise hierarchy, aisle position where Coles publishes it, age and delivery restrictions, and variant count.

### Example: A Half-Price Deal

```json
{
  "special_type_input": "half_price",
  "category_input": "pantry",
  "store_id": "584",
  "id": 2001784,
  "name": "Weet-bix Breakfast Cereal",
  "brand": "Sanitarium",
  "size": "575g",
  "description": "SANITARIUM WEET-BIX BREAKFAST CEREAL 575G",
  "link": "https://www.coles.com.au/product/sanitarium-weet-bix-breakfast-cereal-575g-2001784",
  "image": "https://cdn.productimages.coles.com.au/productimages/2/2001784.jpg",
  "is_available": true,
  "availability_type": "InStoreAndOnline",
  "available_quantity": 41,
  "is_sponsored": false,
  "currency": "AUD",
  "price": 2.5,
  "was_price": 5,
  "save_amount": 2.5,
  "save_percent": 50,
  "unit_price": 0.43,
  "unit_price_quantity": 100,
  "unit_price_unit": "g",
  "unit_price_label": "$0.43/ 100g",
  "is_on_special": true,
  "is_online_only_special": false,
  "special_type": "percent_off",
  "price_description": "1/2 Price",
  "offer_description": null,
  "multi_buy_min_quantity": null,
  "multi_buy_price_each": null,
  "multi_buy_total_price": null,
  "department": "Pantry",
  "department_id": "10302",
  "category": "Breakfast",
  "category_id": "7294",
  "subcategory": "Breakfast Cereal",
  "subcategory_id": "18742",
  "category_paths": [
    "Pantry > Breakfast > Breakfast Cereal",
    "Pantry > Breakfast > Family Favourites"
  ],
  "merchandise_group": "MEAL SOLUTIONS",
  "merchandise_category": "CEREAL",
  "retail_limit": 20,
  "promotional_limit": 12,
  "variation_count": 2
}
```

*Trimmed for readability.* Every row is flat — each value is its own column, so CSV and Excel exports need no clean-up.

A multi-buy deal fills the offer columns instead of the was price:

```json
{
  "name": "Layered Fingers Chocolate Biscuits",
  "brand": "Cadbury",
  "size": "120g",
  "price": 5.5,
  "was_price": null,
  "special_type": "multi_save",
  "offer_description": "Pick any 2 for $7.70",
  "multi_buy_type": "MultibuyMultiSku",
  "multi_buy_min_quantity": 2,
  "multi_buy_price_each": 3.85,
  "multi_buy_total_price": 7.7,
  "multi_buy_unit_price_label": "$3.21/ 100g"
}
```

### Get Started with 5,000 Free Deals

1. [Hit **Try for Free Button**](https://apify.com/omkar-cloud/coles-specials-scraper) — the input is pre-filled with the half-price specials of Pantry and Drinks.
2. Enjoy your data 😎.

### Input examples

**This week's half-price specials in two categories**

```json
{
    "specialTypes": ["half_price"],
    "categories": ["pantry", "drinks"],
    "maxResults": 200
}
```

**Every special of the week, category by category**

```json
{
    "specialTypes": ["all"],
    "categories": [
        "pantry", "drinks", "dairy-eggs-fridge", "bakery", "frozen", "meat-seafood",
        "fruit-vegetables", "health-beauty", "baby", "pet", "chips-chocolates-snacks"
    ],
    "maxResults": 5000
}
```

**Multi-buy chocolate deals at one specific store**

```json
{
    "specialTypes": ["multi_buy"],
    "categories": ["chips-chocolates-snacks"],
    "stores": ["https://www.coles.com.au/find-stores/coles/nsw/marrickville-4166"],
    "brands": ["Cadbury", "Lindt"],
    "sortBy": "price_low_to_high"
}
```

| Input | What to put |
|---|---|
| **Special Types** | `half_price`, `multi_buy`, `online_only` or `all` |
| **Categories** | Slug paths (`pantry`, `dairy-eggs-fridge/milk`), category ids, or coles.com.au `/on-special` or `/browse` URLs. Empty = whole store |
| **Stores** | Store ids (`4166`) or coles.com.au/find-stores URLs. Empty = store 584, Coles Burwood East VIC |
| **Brands / Dietary / Allergens** | Optional filters, up to 10 values each (`Cadbury`, `Vegan`, `Gluten Free`) |
| **Sort By** | Recommended, best seller, price, unit price or brand |
| **Max Deals per Listing** | Cap per special type × category × store — this is your cost control |

### Pricing

High value, Low price.

| What | Price | What you get |
|---|---|---|
| **Deal scraped** | **$1 per 1,000** | One flat row with all 58 columns — prices, savings, offer, stock, categories, limits |

No start fee — you pay only for the rows you get. A deal that shows up twice in one listing is billed once.

| Run | Deals | Cost |
|---|---|---|
| Half-price specials of one category | ~130 | $0.13 |
| Half-price specials of Pantry + Drinks, pre-filled input | up to 400 | up to $0.40 |
| Every special of the week at one store | ~7,000 | ~$7 |
| Weekly half-price tracker, one category, a full year | ~6,800 | ~$6.80 |

Control your spend with **Max Deals per Listing**: 1,000 deals = $1.

💡 Apify's free plan includes $5 of credit every month — that is **5,000 free deals, every month**.

👉 [**Scrape your first 5,000 deals free**](https://apify.com/omkar-cloud/coles-specials-scraper)

### Run It from Code

Grab your API token from [Integrations Settings here](https://console.apify.com/settings/integrations) and replace `<YOUR_API_TOKEN>` below.

**Python** (`pip install apify-client`)

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("omkar-cloud/coles-specials-scraper").call(run_input={
    "specialTypes": ["half_price"],
    "categories": ["pantry"],
    "maxResults": 100,
})
for deal in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(deal["brand"], deal["name"], deal["was_price"], "->", deal["price"])
```

**Node.js** (`npm install apify-client`)

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('omkar-cloud/coles-specials-scraper').call({
    specialTypes: ['multi_buy'],
    categories: ['drinks'],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### FAQs

#### How often do Coles specials change?

Coles refreshes its specials weekly. Add a weekly [schedule](https://console.apify.com/schedules) to this Actor and every run gives you the fresh catalogue — ideal for price trackers, deal newsletters and catalogue apps.

#### Are prices the same in every Coles store?

No. Prices, stock and specials are per store. Leave **Stores** empty for store 584 (Coles Burwood East, VIC), or add the ids or coles.com.au/find-stores URLs of the stores you want. Each store is scraped separately and every row carries its `store_id`.

#### How do I get every special of the week?

Coles shows at most about 5,000 deals in any one listing, and a typical week has around 7,000 specials. So scrape category by category — put the categories in the input (see the second input example) and set **Max Deals per Listing** to 5000.

#### Which categories can I use?

Any Coles category, by slug, id or URL. The top-level ones: `pantry`, `drinks`, `dairy-eggs-fridge`, `bakery`, `frozen`, `meat-seafood`, `fruit-vegetables`, `health-beauty`, `baby`, `pet`, `chips-chocolates-snacks`. Go deeper with a path such as `dairy-eggs-fridge/milk`, or paste the URL of any coles.com.au category page.

#### Why is `was_price` empty on some deals?

Multi-buy offers have no was price — the saving comes from buying several. Look at `offer_description`, `multi_buy_min_quantity`, `multi_buy_price_each` and `multi_buy_total_price` instead.

#### Will I be billed twice for the same deal?

Not within a listing. Coles repeats some products as sponsored placements at the top of a listing; the Actor keeps each product once. If you pick **All specials** together with another special type, or two overlapping categories, the same deal is scraped once per listing.

#### Can I export to CSV or Excel?

Yes. Every row is flat, so the dataset exports cleanly to CSV, Excel, JSON or XML, or straight into Google Sheets through Apify integrations.

### 💬 Have Questions? We Have Answers.

[![Message Us on WhatsApp](https://raw.githubusercontent.com/omkarcloud/assets/master/images/whatsapp-us.png)](https://api.whatsapp.com/send?phone=918178804274\&text=I%20need%20help%20with%20using%20the%20Coles%20Specials%20Scraper%20Actor.)

[![Ask Us on Email](https://raw.githubusercontent.com/omkarcloud/assets/master/images/ask-on-email.png)](mailto:happy.to.help@omkar.cloud?subject=Help%20with%20Coles%20Specials%20Scraper%20Actor\&body=I%20need%20help%20with%20using%20the%20Coles%20Specials%20Scraper%20Actor.)

You are important to us — just message us and we will solve your problem ✅ within 1 working day. 🩷 Pinky Promise 🤙!

# Actor input Schema

## `specialTypes` (type: `array`):

Kinds of specials to scrape. Rows carry a `special_type_input` field so you can tell them apart. All specials already includes the other three — picking it together with them scrapes those deals twice.

## `categories` (type: `array`):

Category slug paths (`pantry`, `dairy-eggs-fridge/milk`), category ids (`8881800`), or coles.com.au `/on-special` or `/browse` URLs — each is scraped separately. Rows carry a `category_input` field. Leave empty to scrape the whole store.

## `stores` (type: `array`):

Coles store ids (`4166`) or coles.com.au/find-stores URLs (`https://www.coles.com.au/find-stores/coles/nsw/marrickville-4166`). Leave empty for the default store 584 (Coles Burwood East, VIC).

## `brands` (type: `array`):

Only deals of these brands (up to 10). Names are case-insensitive.

## `dietary` (type: `array`):

Only deals matching these dietary filters (up to 10), as Coles names them.

## `allergens` (type: `array`):

Only deals matching these allergen filters (up to 10), as Coles names them.

## `sortBy` (type: `string`):

Order of the deals in every listing.

## `maxResults` (type: `integer`):

Maximum number of deals to scrape per special type × category × store. Use this to control your cost (1,000 deals = $1). Coles shows at most about 5,000 deals per listing.

## Actor input object example

```json
{
  "specialTypes": [
    "half_price"
  ],
  "categories": [
    "pantry",
    "drinks"
  ],
  "stores": [
    "4166"
  ],
  "brands": [
    "Cadbury",
    "Lindt"
  ],
  "dietary": [
    "Vegan",
    "Organic"
  ],
  "allergens": [
    "Gluten Free",
    "Nut Free"
  ],
  "sortBy": "recommended",
  "maxResults": 200
}
```

# Actor output Schema

## `results` (type: `string`):

Every row with every field.

## `overview` (type: `string`):

Image, product, brand, was/now prices, savings, offer and category of every deal.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "specialTypes": [
        "half_price"
    ],
    "categories": [
        "pantry",
        "drinks"
    ],
    "maxResults": 200
};

// Run the Actor and wait for it to finish
const run = await client.actor("omkar-cloud/coles-specials-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "specialTypes": ["half_price"],
    "categories": [
        "pantry",
        "drinks",
    ],
    "maxResults": 200,
}

# Run the Actor and wait for it to finish
run = client.actor("omkar-cloud/coles-specials-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "specialTypes": [
    "half_price"
  ],
  "categories": [
    "pantry",
    "drinks"
  ],
  "maxResults": 200
}' |
apify call omkar-cloud/coles-specials-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,omkar-cloud/coles-specials-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/86PjwIjeAFf89YeqI/builds/ITp1p9O0vzD59HOl9/openapi.json
