Coles Products Scraper — Prices, Specials & Store Stock avatar

Coles Products Scraper — Prices, Specials & Store Stock

Pricing

from $0.55 / 1,000 product or store results

Go to Apify Store
Coles Products Scraper — Prices, Specials & Store Stock

Coles Products Scraper — Prices, Specials & Store Stock

Collect Coles grocery prices, specials, nutrition and store availability. Search, browse categories, compare stores and export public store details with the required connection included.

Pricing

from $0.55 / 1,000 product or store results

Rating

0.0

(0)

Developer

Fetch Cat

Fetch Cat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Use this Coles scraper to export grocery products, AUD prices, specials and store availability for repeatable price snapshots. Search by keyword, browse departments, look up products or collect public store information.

Build a Coles products list with store-attributed shelf and unit prices. Track Coles product availability across locations, and add available barcodes, ingredients, nutrition and variants when you need full details.

Quick start

Paste this input into the Actor, run it and open the dataset:

{
"searchTerms": ["milk"],
"storeIds": ["584"],
"maxItems": 60
}

The required Australian connection is automatic and included. You do not need proxy settings. A result limit can stop a search before every matching product has been collected.

Prefer a video guide? This short Apify walkthrough shows you how to set up and run an Actor. It uses a different Actor, but the setup steps are the same.

What you get

WorkflowReturned data
Product discoverySearch and category products, names, brands, sizes, images and links
Price snapshotsStore-attributed AUD prices, unit pricing, savings and available offer information
Product detailsAvailable GTIN, ingredients, allergens, nutrition, country information and size or variety alternatives
Store directoryStore IDs, names, addresses, coordinates, contact information, services and opening hours
Completion informationA run summary with per-input outcomes, source totals and reasons for stopping early

Who is it for?

  • Retail price analysts comparing Coles product and unit prices across stores.
  • Grocery comparison services matching products using source IDs and available GTINs.
  • Inventory researchers studying public product availability and store coverage.

Input settings and example inputs

Choose at least one search, product, category, specials, catalogue or store-directory workflow. Arrays contain strings, including numeric IDs.

SettingPurpose
searchTermsUp to 30 grocery searches
startUrlsUp to 100 public Coles product, category, search, brand, specials or numbered store links
productIdsUp to 100 direct product IDs. Direct products return full details
departmentsUp to 30 source category IDs or browse paths, such as dairy-eggs-fridge
storeIdsStore IDs for product comparisons or explicit directory lookups. Product workflows default to store 584 when no location is supplied
postcodesUp to 20 Australian postcodes. Product searches use the nearest returned store for each matched locality
storeDirectoryReturn store records. With postcodes, collect nearby stores. Without a location, use the published national store index
allStoresApply the selected product workflow across indexed stores. Combine with a meaningful result limit
fullCatalogBrowse all departments, subject to your limits
includeDetailsAdd full details to search/category results
specialsnone, allspecials, halfprice, multibuy or onlineonly
brands, dietary, allergensSource facet names or IDs. Use source-supported labels such as Coles, Vegan or Lactose Free
sortByrelevance, priceAscending, priceDescending, productNameAscending or productNameDescending
maxItemsGlobal product/store result limit, default 100 and maximum 50,000
maxRequestsSource request limit, default 1,000 and maximum 5,000
maxRunSecondsProcessing limit from 30 to 1,800 seconds, default 1,800

Use the input form for the complete constraints. Unknown fields and connection overrides are rejected. Supported URL parameters include q, sortBy and source facet filters. Collection starts from the first matching page rather than resuming at a URL's page value.

Compare one product across stores:

{
"productIds": ["8150288"],
"storeIds": ["584", "313"],
"maxItems": 2
}

Find nearby public stores:

{
"storeDirectory": true,
"postcodes": ["3000"],
"maxItems": 30
}

Collect dairy half-price offers:

{
"departments": ["dairy-eggs-fridge"],
"specials": "halfprice",
"storeIds": ["584"],
"sortBy": "priceAscending",
"maxItems": 50
}

Output data

The dataset contains product and/or store records, distinguished by recordType. A product observed at two stores produces two records. The same product/store identity is not saved again when inputs overlap.

FieldsMeaning
recordType, storeId, nameRecord type and source identity
productId, url, brand, size, imagesProduct identity and presentation
currency, price, previousPrice, savings, savingsPercentAUD shelf-price and savings information, nullable when unavailable
unitPrice, unitPriceText, unitPricingSource unit-price values and their measurement basis
available, availabilityStatus, availableQuantitySource availability. A price alone does not mean the product is in stock
offer, purchaseLimits, locationsAvailable promotion, purchase and aisle information
detailsIncluded, gtin, ingredients, allergens, nutrition, variantsDetail coverage and available enrichment
address, position, hours, servicesStore-only information
sourceContext, scrapedAtInput attribution and collection time

For example, a captured full-detail observation for product 8150288 at store 584 included currency: "AUD", price: 4.95, unitPrice: 1.65 and gtin: "9300601186945". This is a historical observation, not a current price quote.

Open the run's SUMMARY record for input outcomes and coverage. A legitimate no-match or unavailable target can return no rows. A result, request, time or buyer-budget limit can produce incomplete coverage. Check complete, stopReason and per-input outcomes before treating a snapshot as exhaustive.

Download your results

Open your run's dataset, choose Export and select JSON, CSV or Excel. JSON keeps nested fields together. CSV and Excel are useful when you want to review the records in a spreadsheet.

See Apify's download and export guide for the available formats and field options.

Pricing

The apify-actor-start startup charge applies when a run starts, including a run that produces no results. The result event charges for each saved product or store record. The details event adds a charge for each saved product with full details, including direct product lookups.

The source-request event charges for each completed source request, including searches, product/store lookups, category discovery and initial setup. A completed request is chargeable even when nothing matches. Cached lookups and transport failures are not charged as completed work. Work completed before a later extraction or storage failure remains chargeable. Open WORK_RECEIPT and SUMMARY to review completed work and charge counts.

No-match diagnostics and unavailable targets are not billed as product or store records. The required connection is included in these charges. Use the request and result limits together with Apify's run charge limit to bound your purchase.

See the live Pricing tab for current rates and discounts.

Tips for best results

  • Choose an explicit store. Keep the same store IDs when comparing snapshots over time.
  • Start with a small sample. Inspect product matches and unit-price measurements before expanding the workload.
  • Add details when you need matching or nutrition. Listing-only snapshots are enough for many price comparisons.
  • Check completion before analysis. A bounded snapshot is not necessarily the complete category or catalogue.

Limits and caveats

  • Only public Coles storefront data is collected. This is not an official Coles service.
  • Prices, offers, stock and store hours can change. Availability is not a reservation or checkout guarantee.
  • Missing detail fields remain absent or null. Review text and reverse-barcode product discovery are not supported promises.
  • Postcode discovery uses the source's returned localities and nearby stores. A capped directory is not a complete national directory.
  • Blocking, unexpected source responses, storage faults and billing faults fail the run rather than being presented as no matches. Useful records already saved remain accessible.

Automation and integrations

Save your settings for next time

Once you have an input that works for you, save it as an Apify task. This keeps your settings together so you can use them again without filling in the form from scratch.

Run on a schedule

You can configure Apify schedules in your own account when you want recurring snapshots. The Actor does not create or enable schedules for you.

Each run collects a new snapshot. Compare records by product and store in your own workflow to identify price changes.

Send results to your other tools

Use n8n, Make or Zapier to connect this scraper to the rest of your workflow. For example, pass results to an AI assistant or append them to a spreadsheet. Follow the Apify integration guides for your chosen tool.

An Apify webhook can notify your app when a run finishes or fails. Your app can then fetch results or handle the failure.

API usage

Collect grocery snapshots from your app using the same input as the Console. The Node.js and Python examples wait for completion, then read the dataset. The cURL example starts a run. Follow that run to completion and fetch its defaultDatasetId rather than launching it again.

See Apify's JavaScript client guide, Python client guide and Actor runs API reference.

cURL

curl --request POST \
'https://api.apify.com/v2/acts/fetch_cat~coles-products-scraper/runs' \
--header "Authorization: Bearer $APIFY_TOKEN" \
--header 'Content-Type: application/json' \
--data '{"searchTerms":["milk"],"storeIds":["584"],"maxItems":60}'

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/coles-products-scraper').call({
searchTerms: ['milk'], storeIds: ['584'], maxItems: 60,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/coles-products-scraper').call(run_input={
'searchTerms': ['milk'], 'storeIds': ['584'], 'maxItems': 60,
})
print(client.dataset(run['defaultDatasetId']).list_items().items)

MCP and AI agents

Use the Apify MCP server to let a compatible assistant discover the Actor, inspect its input and retrieve results. Discovery depends on the Actor's public availability and current platform permissions. Follow the official setup and sign-in guide.

The official Apify plugin can help set up supported coding assistants. Alternatively, use Apify AI in Console, currently in beta. Normal run charges apply.

Client setup guides:

For a focused setup exposing only this Actor in a compatible client:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=fetch_cat/coles-products-scraper"
}
}
}

Sign in when your client asks. If it uses a Bearer token, keep that token in its secure configuration.

Already using https://mcp.apify.com? Ask the assistant to find fetch_cat/coles-products-scraper, inspect its settings and run a bounded request. Both options use Apify's shared hosted server. Read results from the returned run and dataset. Follow an existing running operation instead of creating duplicates.

Example requests:

  • “Collect 60 milk products at Coles Burwood East and make a spreadsheet of shelf and unit prices.”
  • “Get the full details of Coles product 8150288 at stores 584 and 313, then compare the returned prices and availability.”
  • “Find public Coles stores near postcode 3000 and summarize their addresses and opening hours.”

The scraper retrieves data. Comparison, summaries and spreadsheet preparation are performed by your assistant. Review the live Pricing tab before authorizing charges.

Pay with x402

A funded agent can use Apify's experimental x402 flow to obtain a prepaid, spend-capped API token through Apify AGI. It can then use the API or a supported authenticated MCP connection, subject to current Actor access permissions.

Direct per-request MCP payments are a different option with separate eligibility requirements. Check the official guide rather than assuming every payment route is available. Apify handles payment. Keep wallet keys and payment tokens in secure configuration, not prompts or input examples.

For other supported payment methods, see the agentic payment guide.

FAQ

Can I compare prices across stores? Yes. Supply explicit storeIds. Each product/store combination has its own row. Set a global result limit large enough for the stores you want to compare.

Do I need proxy credentials? No. The required connection is included and automatic. Connection replacement and disable controls are not accepted.

Can I get ingredients and nutrition? Enable includeDetails for listing workflows or use a direct product ID/URL. Available source fields are returned. Some products do not provide every detail.

Why is the dataset empty? Check SUMMARY. A supported no-match or unavailable target can legitimately return nothing. Startup and completed-request charges can still apply. Blocking or an unexpected response is reported as a failure, not as proof that no products exist.

Support and feedback

For custom additions or integrations, email hello@fetchcat.dev.

Found an error or have a feature request? Open an issue from the Actor page with the run URL, a non-sensitive input example and what you expected.

Need help sharing it? See Apify’s guide to sharing a run when reporting an issue. Sharing a run can give the developer access to its input, logs and results, so use a run that contains no sensitive data. Please leave out API tokens, passwords, cookies, private documents and personal data. Use a public sample URL or a redacted example instead.

Tried this scraper? Leave an honest review from the Actor page. Your feedback helps other users choose the right tool and helps us improve it. Your feedback means a lot to us.

Made with care for curious people, AI agents and the possibilities in data. ♥