Coles Products Scraper — Prices, Specials & Store Stock
Pricing
from $0.55 / 1,000 product or store results
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
Maintained by CommunityActor 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
| Workflow | Returned data |
|---|---|
| Product discovery | Search and category products, names, brands, sizes, images and links |
| Price snapshots | Store-attributed AUD prices, unit pricing, savings and available offer information |
| Product details | Available GTIN, ingredients, allergens, nutrition, country information and size or variety alternatives |
| Store directory | Store IDs, names, addresses, coordinates, contact information, services and opening hours |
| Completion information | A 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.
| Setting | Purpose |
|---|---|
searchTerms | Up to 30 grocery searches |
startUrls | Up to 100 public Coles product, category, search, brand, specials or numbered store links |
productIds | Up to 100 direct product IDs. Direct products return full details |
departments | Up to 30 source category IDs or browse paths, such as dairy-eggs-fridge |
storeIds | Store IDs for product comparisons or explicit directory lookups. Product workflows default to store 584 when no location is supplied |
postcodes | Up to 20 Australian postcodes. Product searches use the nearest returned store for each matched locality |
storeDirectory | Return store records. With postcodes, collect nearby stores. Without a location, use the published national store index |
allStores | Apply the selected product workflow across indexed stores. Combine with a meaningful result limit |
fullCatalog | Browse all departments, subject to your limits |
includeDetails | Add full details to search/category results |
specials | none, allspecials, halfprice, multibuy or onlineonly |
brands, dietary, allergens | Source facet names or IDs. Use source-supported labels such as Coles, Vegan or Lactose Free |
sortBy | relevance, priceAscending, priceDescending, productNameAscending or productNameDescending |
maxItems | Global product/store result limit, default 100 and maximum 50,000 |
maxRequests | Source request limit, default 1,000 and maximum 5,000 |
maxRunSeconds | Processing 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.
| Fields | Meaning |
|---|---|
recordType, storeId, name | Record type and source identity |
productId, url, brand, size, images | Product identity and presentation |
currency, price, previousPrice, savings, savingsPercent | AUD shelf-price and savings information, nullable when unavailable |
unitPrice, unitPriceText, unitPricing | Source unit-price values and their measurement basis |
available, availabilityStatus, availableQuantity | Source availability. A price alone does not mean the product is in stock |
offer, purchaseLimits, locations | Available promotion, purchase and aisle information |
detailsIncluded, gtin, ingredients, allergens, nutrition, variants | Detail coverage and available enrichment |
address, position, hours, services | Store-only information |
sourceContext, scrapedAt | Input 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 osfrom apify_client import ApifyClientclient = 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:
- Claude and Claude Code: Apify setup.
- ChatGPT and Codex: Apify setup.
- Grok Bot: Apify plugin guide.
- Gemini CLI: MCP server configuration.
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.
Related Actors
- ALDI Australia Products & Prices Scraper — Collect Australian ALDI grocery prices, categories and specials for another retailer's snapshot.
- Walmart Products Scraper — Collect Walmart search products, prices and availability for US retail research.
- Amazon Products & Search Scraper — Retrieve Amazon product search results and details across supported marketplaces.
- Costco Products Scraper — Collect public Costco products, prices and stock information for warehouse-retail research.
- Walmart Reviews Scraper — Export public Walmart reviews and ratings when product feedback, rather than grocery pricing, is your goal.
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. ♥