# Coles Scraper - Prices, Specials, Stock & Catalog (`haketa/coles-scraper`) Actor

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.

- **URL**: https://apify.com/haketa/coles-scraper.md
- **Developed by:** [Haketa](https://apify.com/haketa) (community)
- **Categories:** E-commerce, Business
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 Scraper — Prices, Specials, Stock & Catalog 🛒

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-orange?style=flat-square\&logo=apify)](https://apify.com/haketa/coles-scraper)
[![Platform Node](https://img.shields.io/badge/Node.js-20+-green?style=flat-square\&logo=node.js)](https://nodejs.org)
[![Data Format](https://img.shields.io/badge/Format-JSON%20%7C%20CSV%20%7C%20Excel-blue?style=flat-square)](https://apify.com/haketa/coles-scraper)
[![Maintenance](https://img.shields.io/badge/Maintained-Active-brightgreen?style=flat-square)](https://apify.com/haketa/coles-scraper)
[![Delivery Speed](https://img.shields.io/badge/Speed-HTTP%20Fast-purple?style=flat-square)](https://apify.com/haketa/coles-scraper)

**Scrape [Coles](https://www.coles.com.au), 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

| Feature | Specification |
|---------|---------------|
| **Target Retailer** | [Coles Supermarkets](https://www.coles.com.au) (Australia #2 Grocer) |
| **Input Methods** | Keywords (`searchTerms`), Department slugs/URLs (`categories`) |
| **Output Formats** | JSON, CSV, XML, Excel (XLSX), HTML Table, RSS |
| **Performance** | Pure HTTP engine (~20-45 seconds for 100+ grocery items) |
| **Pagination Support** | 1,000+ products per query with deep multi-page pagination |
| **Proxy Requirement** | Apify Proxy (Residential Australia required for carrier access) |
| **Pricing Intelligence** | Current price, was price, savings statement, unit price (`comparable`) |
| **Stock & Inventory** | In-stock status, availability type, available inventory count |
| **Deduplication** | Automatic global product ID deduplication across terms & categories |

***

### 🔎 Why scrape Coles?

[Coles](https://www.coles.com.au) 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.

***

### 🥦 Popular Coles Category Slugs

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

| Category Slug | Department Name | Representative Products |
|---------------|-----------------|-------------------------|
| `dairy-eggs-fridge` | Dairy, Eggs & Fridge | Fresh milk, yogurt, butter, block cheese, chilled dips |
| `pantry` | Pantry | Coffee, pasta, canned goods, breakfast cereal, baking |
| `meat-seafood` | Meat & Seafood | Beef mince, chicken breast, salmon fillets, sausages |
| `fruits-vegetables` | Fruit & Vegetables | Bananas, apples, potatoes, salad mixes, avocados |
| `bakery` | Bakery | Sliced bread, rolls, sourdough, muffins, croissants |
| `frozen` | Frozen | Ice cream, frozen vegetables, microwave meals, pizza |
| `drinks` | Drinks | Soft drinks, kombucha, sparkling water, fruit juices |
| `snacks-confectionery` | Snacks & Confectionery | Potato chips, chocolate bars, biscuits, nuts, candy |
| `health-beauty` | Health & Beauty | Shampoo, toothpaste, vitamins, body wash, skincare |
| `household` | Household | Laundry detergent, toilet paper, cleaning sprays, dishwashing |

***

### 📥 Input parameters

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

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `searchTerms` | `array` | `[]` | Keywords to search (e.g. `["milk", "coffee"]`). Empty runs a demo. |
| `categories` | `array` | `[]` | Category slugs or browse URLs (e.g. `["dairy-eggs-fridge"]`). |
| `onlySpecials` | `boolean` | `false` | Keep only products currently marked down or on promotion. |
| `maxItems` | `integer` | `0` | Max products per source. `0` = unlimited / all matching pages. Prefill: `50`. |
| `storeId` | `string` | `""` | Optional Coles store ID for localized stock lookups. Empty = national default. |
| `proxyConfiguration` | `object` | Residential AU | Apify Residential proxy required to navigate Australian retailer firewalls. |

#### Example Input

```json
{
  "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

| Field | Type | Coverage | Description |
|-------|------|----------|-------------|
| `id` | `string` | 🟢 High (100%) | Unique Coles product identifier number. |
| `name` | `string` | 🟢 High (100%) | Full brand and product description title. |
| `brand` | `string` | 🟢 High (98%) | Brand manufacturer name or private label indicator. |
| `description` | `string` | 🟡 Conditional (80%) | Extended marketing description or tasting notes. |
| `size` | `string` | 🟢 High (95%) | Pack size or volume label (e.g. `1L`, `500g`, `24 pack`). |
| `category` | `string` | 🟢 High (98%) | Full department taxonomy path. |
| `imageUrl` | `string` | 🟢 High (98%) | Full CDN link to high-resolution product photography. |
| `url` | `string` | 🟢 High (100%) | Canonical direct URL: `https://www.coles.com.au/product/...`. |

#### 💵 Pricing & Weekly Specials

| Field | Type | Coverage | Description |
|-------|------|----------|-------------|
| `priceNow` | `number` | 🟢 High (100%) | Current retail selling price in AUD. |
| `priceWas` | `number` | 🟡 Conditional (Specials) | Original regular price before promotional discount. |
| `onSpecial` | `boolean` | 🟢 High (100%) | `true` if item is marked down or carries a promotion. |
| `saveAmount` | `number` | 🟡 Conditional (Specials) | Exact dollar amount saved per purchase unit. |
| `saveStatement` | `string` | 🟡 Conditional (Specials) | Promotional marketing text (e.g. `Save $2.50`, `1/2 Price`). |
| `promotionType` | `string` | 🟡 Conditional (Specials) | Deal classification (e.g. `Special`, `MultiBuy`). |
| `onlineSpecial` | `boolean` | 🟢 High (100%) | `true` if special is exclusive to online orders. |
| `currency` | `string` | 🟢 High (100%) | ISO currency code (`AUD`). |

#### ⚖️ Unit Economics & Inventory

| Field | Type | Coverage | Description |
|-------|------|----------|-------------|
| `unitPrice` | `number` | 🟢 High (95%) | Raw numeric unit cost. |
| `unitMeasure` | `string` | 🟢 High (95%) | Unit benchmark specification (e.g. `100g`, `1L`). |
| `comparable` | `string` | 🟢 High (95%) | Formatted unit price statement (e.g. `$1.25 per 100g`). |
| `availability` | `boolean` | 🟢 High (100%) | `true` if item is in stock and purchasable. |
| `availabilityType` | `string` | 🟢 High (100%) | Fulfillment channel (e.g. `InStoreAndOnline`). |
| `availableQuantity` | `number` | 🟡 Conditional (80%) | Exact numeric quantity available in current inventory. |
| `retailLimit` | `number` | 🟡 Conditional (70%) | Maximum purchase limit per order. |
| `source` | `string` | 🟢 High (100%) | Scraper origin identifier (e.g. `search:milk`). |
| `scrapedAt` | `string` | 🟢 High (100%) | ISO timestamp when the product was extracted. |

***

### 📋 Comprehensive Output Example

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

```json
{
  "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)

```javascript
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

```python
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)

```bash
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 Type | Sample Marketing Tag | Meaning & FMCG Strategy |
|-----------|----------------------|-------------------------|
| **1/2 Price Specials** | `1/2 Price` | 50% discount off regular retail price; major traffic drivers |
| **Price Drops** | `Save $X.XX` | Standard temporary price reduction across seasonal campaigns |
| **Multi-Buys** | `2 for $7.00` | Bundle incentives requiring volume purchase to unlock savings |
| **Online Exclusives** | `Online Only Special` | Promotional pricing available strictly through web delivery |
| **Clearance / Markdown** | `Clearance` | Final 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.

***

### 🔗 Related grocery & retail scrapers

Explore complementary retail intelligence scrapers from Haketa:

- [Woolworths Scraper](https://apify.com/haketa/woolworths-scraper) — Extract prices, specials, and stock from Australia's #1 grocery supermarket.
- [Blinkit Scraper](https://apify.com/haketa/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.

# Changelog

This Actor's version history is a separate document: https://apify.com/haketa/coles-scraper/changelog.md

# Actor input Schema

## `searchTerms` (type: `array`):

Keywords to search (e.g. <b>milk</b>, <b>coffee</b>, <b>chicken</b>). Each is scraped separately.

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

Coles category slugs or browse URLs (e.g. <b>dairy-eggs-fridge</b> or <b>https://www.coles.com.au/browse/dairy-eggs-fridge</b>).

## `onlySpecials` (type: `boolean`):

Keep only products currently on special (price reduced).

## `maxItems` (type: `integer`):

Maximum products per search term / category. Set to 0 for unlimited / all matching pages.

## `storeId` (type: `string`):

Optional Coles store id for store-specific stock. Leave empty for the default (national) store.

## `proxyConfiguration` (type: `object`):

<b>Residential proxy required</b> — Coles uses Akamai, which blocks datacenter IPs. Defaults to Apify Residential (Australia).

## Actor input object example

```json
{
  "searchTerms": [
    "milk"
  ],
  "categories": [],
  "onlySpecials": false,
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "AU"
  }
}
```

# Actor output Schema

## `products` (type: `string`):

Scraped Coles products with prices, specials and stock.

# 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 = {
    "searchTerms": [
        "milk"
    ],
    "maxItems": 50,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "AU"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("haketa/coles-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 = {
    "searchTerms": ["milk"],
    "maxItems": 50,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "AU",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("haketa/coles-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 '{
  "searchTerms": [
    "milk"
  ],
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "AU"
  }
}' |
apify call haketa/coles-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,haketa/coles-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/E4lzbcteZv75N4X2b/builds/lTjR57167mLYREXkT/openapi.json
