Coles AU Product Search Scraper
Pricing
from $0.70 / 1,000 results
Coles AU Product Search Scraper
Scrape Coles Australia product search results, prices, specials, categories, store context, barcode lookups, and normalized item data for grocery monitoring workflows.
Pricing
from $0.70 / 1,000 results
Rating
0.0
(0)
Developer
Dmitriy Gyrbu
Maintained by CommunityActor stats
3
Bookmarked
345
Total users
222
Monthly active users
8 hours ago
Last modified
Categories
Features
Share
Coles AU Product, Specials & Price Scraper
Extract Coles Australia products, weekly and half-price specials, regular and discounted prices, unit pricing, nutrition, ingredients, category shelves, and postcode-aware availability context. Use the structured data for grocery price intelligence, specials tracking, assortment monitoring, product enrichment, and ecommerce research.
This is an unofficial actor and is not affiliated with Coles.
Product lookup accepts a numeric ID, slug, or product URL. Search and category results help subsequent runs resolve an ID through its previously discovered slug when the direct ID lookup finds no product. Prices and availability are fetched again for the requested location. An ID that has never been discovered may still require the product slug or URL; unavailable mapping storage does not prevent direct product lookup.
Supported operations
Stable product and offers workflows
categoriessearchsearch_filtersitemcategoryspecialsspecials_filtersspecials_catalogueitem_store_contextavailability_by_store
Experimental / best-effort workflows
These remain in the input schema for backward compatibility, but should not be the first workflow used by a new buyer:
item_by_barcodeitem_by_gtinstorestores_by_postcodenearby_storesstores_search
Reverse barcode/GTIN lookup is currently unreliable even when the same barcode is present in product output. Standalone store discovery can return zero rows or an upstream locator error. For location-aware workflows, use product search/item context with postcode, state, and contextMode.
Operation guide
The Apify Console form shows the union of all supported fields, so the visible
inputs do not change when you switch operation. Use the guide below to know
which fields are required.
categoriesRequired: none Optional:refresh,includeRawsearchRequired:queryOptional:page,limit,details,storeId,postcode,state,contextMode,includeRawsearch_filtersRequired: none Optional:query,storeId,postcode,state,contextMode,includeRawcategoryRequired:categorySlug,categoryId, orcategoryUrlOptional:page,limit,details,storeId,postcode,state,contextMode,includeRawitemRequired:itemId,productId,itemSlug,slug, orurlOptional:storeId,postcode,state,contextMode,includeRawspecialsRequired: none Optional:special,page,limit,details,storeId,postcode,state,contextMode,includeRawspecials_filtersRequired: none Optional:storeId,postcode,state,contextMode,includeRawspecials_catalogueRequired:slug,categorySlug, orurlOptional:page,limit,details,storeId,postcode,state,contextMode,includeRawitem_by_barcodeRequired:barcodeOptional:storeId,postcode,state,contextMode,includeRawStatus: experimental; preferitemwith a full product URL.item_by_gtinRequired:gtinOptional:storeId,postcode,state,contextMode,includeRawStatus: experimental; preferitemwith a full product URL.storeRequired:storeIdOptional:includeRawstores_by_postcodeRequired:postcodeOptional:state,radius,limit,includeRawnearby_storesRequired:lat,lonOptional:radius,limit,includeRawStatus: best-effort standalone store locator.stores_searchRequired:queryOptional:state,radius,limit,includeRawitem_store_contextRequired:itemId,productId,itemSlug,slug, orurlOptional:storeId,postcode,state,contextMode,includeRawavailability_by_storeRequired:itemId,productId,itemSlug,slug, orurlOptional:storeId,postcode,state,contextMode,includeRaw
Pagination and limit semantics
For search, category, and specials, page is the native Coles page number.
The optional limit field is not a page-size control and is not sent to Coles. It is only a local maximum applied after the selected native Coles page has been fetched.
- Omit
limitto return every product exposed on that native Coles page. - Provide
limitonly when you intentionally want to cap the returned rows from that page. - Coles can return a different number of products on each native page and can repeat product ids between adjacent pages.
- To collect a complete category, omit
limit, request consecutivepagevalues until an empty page is returned, and deduplicate by productid. totalis the count reported by Coles;upstream_page_count,returned_count, andlimit_appliedexplain what the actor actually returned for the requested page.
For store-list operations, limit continues to mean the maximum number of stores returned.
Recommended first runs
If you are validating the actor from scratch, use these in order:
searchspecialsitemusing a full product URLcategory
Then use ids/slugs from those results in the more targeted operations.
Example inputs
{"operation": "categories","includeRaw": false}
{"operation": "search","query": "milk","page": 1,"includeRaw": false}
{"operation": "item","url": "https://www.coles.com.au/product/coles-full-cream-milk-3l-8150288","includeRaw": false}
{"operation": "category","categoryId": "1300","page": 1,"includeRaw": false}
{"operation": "specials","special": "halfprice","page": 1,"includeRaw": false}
Output
- Dataset: normalized products, category rows, filters, or item records
- Key-value store
OUTPUT: run summary withsource,operation,success,total,errors,proxy, andmonetization
Product output can include regular/base price, lower promotional price, comparable unit pricing, stock signals, barcode, images, nutrition, ingredients, allergens, variants, category breadcrumbs, and canonical product URL. For specials, price is the regular/base price and discount_price is the lower current promotional price when available.
Buyer-ready Saved Tasks
- Coles Grocery Search & Unit Price Monitor — compact keyword price and assortment tracking.
- Coles Half-Price Deals & Product Enrichment — half-price products with detail enrichment.
- Coles Weekly Specials & Offers Feed — bounded all-specials feed.
- Coles Nutrition, Barcode & Ingredient Enrichment — one rich item via a reliable full URL.
- Coles Category Shelf & Assortment Monitor — category-level product and price snapshots.
- Coles Sydney Delivery Price Context Monitor — postcode-aware delivery context for product search.
Saved Tasks use bounded inputs and have been cloud-tested. Clone a task and change only the keyword, category, postcode, or product URL relevant to your workflow.
Choose your proxy provider and connection policy (new NONLATEST candidate)
For existing clients the defaults remain proxySource=owner and proxyMode=auto, retaining the owner-secret rotating Coles pool and the previous direct-first fallback behavior. All settings are per run and do not mutate the Actor's global environment.
| Input | Values | Meaning |
|---|---|---|
proxySource | owner, apify_residential, custom_pool | Choose one source per run; customer providers never silently use the owner's secret feed. |
proxyMode | auto, proxy_first, proxy_only, direct | auto keeps owner direct-first but prefers a customer-selected proxy first. proxy_only never tries a direct Coles request, and fails closed if the pool is unavailable. direct never loads any proxy. |
apifyProxyCountry | AU by default | Two-letter country for Apify Residential, when your account has access. |
apifyProxySessions | 1–24, default 6 | SDK session-specific proxy URLs; session count does not prove distinct IP count. |
customProxyUrls | Secret multiline text | One http(s)://user:password@host:port or http(s)://host:port per line; semicolons / JSON string arrays are accepted; 150 maximum. Do not put credentials into nonsensitive fields. |
Example for your own Apify Residential capacity: {"operation":"search","query":"milk","proxySource":"apify_residential","proxyMode":"proxy_only","apifyProxyCountry":"AU"}. Apify validates residential access for the account executing the run; residential usage may incur separate proxy charges.
Example for your discrete proxies: select proxySource=custom_pool, set proxyMode=proxy_only or proxy_first, and paste individual proxy URLs into the encrypted My discrete proxy pool (secret) field in the Apify Console. If a proxy fails it can be temporarily quarantined and another discrete entry tried. In proxy_only, no direct fallback is allowed. No proxy URLs, authentication data or full proxy exceptions are added to OUTPUT. Diagnostic proxy fields include the chosen provider, the policy, number of configured URLs, owner-feed state, and observed connection category (direct, proxy, mixed, or not_observed). The observed category only reflects instrumented successful paths; not_observed must not be interpreted as direct.
Rollout
This change is a NONLATEST candidate (sf-coles-proxy-options-r1) based on the published 0.0.43 source. It must be built and checked with real cloud runs using owner auto, customer Apify Residential, customer custom proxies, proxy-only block/fail-closed, direct-only, and store/lookup operations before latest can be switched. No publication is implied by the presence of this source archive.
Notes
- Coles is the richest actor in this bundle, so the Apify Console will show a large union of optional fields.
search,categories, anditemare the best smoke tests.itemandcategoryhave validated starter examples: the full milk product URL above and category1300.- If Coles cannot resolve the current site build id, the actor now returns a structured blocked error instead of the raw
build_id_unavailablenote. - Store discovery supports postcode, coordinates, name and store ID.
item_store_contextandavailability_by_storequery the product with an explicit verified Coles store ID. Both default tocontextMode: inStore;deliveryandclickAndCollectare separate shopping methods and can have different availability and prices. - Store-specific dataset rows include
attributes.store_id,attributes.store_context, the source availability flag, and price when supplied. Availability is not a counted stock quantity. With postcode only, the first matching store is selected and identified explicitly. A failed store lookup is not replaced with generic product data. - By default, the actor uses its owner-managed private proxy feed (preserving existing runs). Users can choose their Apify Residential proxies or their own discrete proxy list via Proxy provider and control direct vs proxy routing via Connection policy. Custom proxy URLs are a secret field and never appear in OUTPUT.
proxy_onlyrejects an unavailable pool and never silently falls back to a direct Coles connection. Apify Residential is billed/limited according to the account running the Actor; selecting it does not grant proxy entitlements.
Apify Store automatic default-input health check (R3)
The Apify Store daily test constructs the Actor input from prefill, not merely default. R3's
Store example intentionally selects operation=search, query=milk, page=1, limit=5,
details=false, proxySource=owner, proxyMode=auto. This exercises the pre-existing
owner proxy feed behavior without requiring customers to buy Apify Residential or provide secrets.
The local limit caps published dataset items, not the Coles upstream page size.
Release gate: after building the exact R3 candidate with a NONLATEST tag, invoke that
immutable build once with the exact derived prefill input, using the same memory and default
300-second timeout as Apify Store. Verify real SUCCEEDED, elapsed under 300 seconds,
Dataset contains 1–5 non-empty product rows, OUTPUT.success==true, and no missing proxy
secrets; compare the run's stored INPUT against the derived prefill. A mocked/local test is
not cloud acceptance. Do NOT move latest until this exact-build gate and the other proxy
regression cases pass. Both empty-input/API-default and Store-prefill inputs are separate cases.