Coles Prices Scraper
Pricing
$1.49 / 1,000 results
Coles Prices Scraper
Give search terms, Coles category URLs or product ids; get one row per product: price, was-price, unit price, specials, stock and category. Price-drop watch. $1.49 per 1,000 products.
Pricing
$1.49 / 1,000 results
Rating
0.0
(0)
Developer
Jesse Hawkins
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 days ago
Last modified
Categories
Share
Grocery prices from Coles Australia. Give it search terms, Coles category URLs, or product URLs and ids. It returns one row per product with the current price, the was-price and saving, the unit price, whether the product is on special, whether it is in stock, and the category. Turn on the price watch to get only the products whose price or stock changed since your last run.
No browser, so runs are fast and cheap. Public, logged-out pages only.
What you get
One row per product:
| Field | Example |
|---|---|
store | Coles |
productId | 8150288 |
name, brand, size | Full Cream Milk, Coles, 3L |
price | 4.95 (AUD) |
wasPrice, saveAmount | 6.90, 1.40 — null when not on special |
isSpecial, promotionType | true, SPECIAL |
unitPrice, unitMeasure | 1.65, 1l |
comparablePrice | $1.65/ 1L |
inStock, availabilityType | true, InStoreAndOnline |
category, subCategory | Milk, Dairy, Eggs & Fridge |
aisle | Full Cream Milk |
imageUrl, url | product photo, Coles product page |
sourceUrl, scrapedAt | the page it came from, UTC |
changeType, previousPrice | PRICE_DROP, 5.50 — price watch only |
Input
{"searchTerms": ["milk", "sourdough bread"],"categoryUrls": ["https://www.coles.com.au/on-special"],"productUrls": ["8150288"],"maxResults": 200,"maxItems": 500,"specialsOnly": false,"inStockOnly": false}
- searchTerms — searched one at a time, paged until
maxResults. - categoryUrls — any
coles.com.aulisting page: a/browse/...category, a/search/products?q=...search, or/on-special. Paging is added for you. - productUrls — products to read one by one: a product URL, its
id (
8150288) or its slug. One row each. An id that Coles does not have is skipped and not billed. - maxResults — per search term and per URL. Each product returned is one billed result, so this is your cost control.
- maxItems — optional cap for the whole run, over all targets.
- specialsOnly — only products on special. The Actor sends Coles' own specials filter, so each page holds only specials.
- specialType —
all,halfprice,multibuyoronlineonly. A value other thanallturnsspecialsOnlyon. - inStockOnly — skip products Coles reports as unavailable.
Price watch
Set monitorMode to changes. Each row then gets changeType and
previousPrice, compared with the last run of the same watchlist:
changeType | Meaning |
|---|---|
NEW | not in the last run |
PRICE_DROP, PRICE_RISE | the price changed |
BACK_IN_STOCK, OUT_OF_STOCK | the stock changed |
UNCHANGED | no change |
- watchlistName — keeps price histories apart, e.g. one for each
scheduled task. Default
default. - onlyChanged — return only changed products.
UNCHANGEDproducts are not returned and not billed. The first run returns every product asNEW.
The last prices are kept in a named key-value store in your Apify
account, coles-prices-watch-<watchlist>. Delete it to start again.
Switching from another Coles Actor
Send the input that you send now. This Actor also reads these field names:
| You send | This Actor reads it as |
|---|---|
scrapeMode: searchKeyword, providedUrls, skuList | the one source that the mode names |
searchQuery, query | a search term |
startUrls, categoryUrl, url | a listing URL, or a product if the path has /product/ |
categorySlug | https://www.coles.com.au/browse/<slug> |
skuList, productId, itemId, itemSlug | products |
operation: search, category, specials, item | the one source that the operation names |
special (with operation specials) | specialType; allspecials is all |
limit | maxResults |
maxItems | maxItems, the run cap |
monitorMode, stateName, onlyChanged | the price watch |
Other fields, such as includeDescription, maxRequestsPerCrawl,
details and includeRaw, are accepted and change nothing. A
postcode, storeId or state is accepted, and the status message
says that the prices are national online prices. An operation that
does not return products, such as a store search or a barcode
search, stops the run with a message that says why. Barcode search
is not supported because coles.com.au returns no product for a
barcode.
You get the same rows as from any other input: the fields in "What you get" above.
Output
{"store": "Coles","productId": 1748773,"name": "High Protein Kefir Strawberry","brand": "Babushka","size": "500g","price": 5.5,"wasPrice": 6.9,"saveAmount": 1.4,"isSpecial": true,"promotionType": "SPECIAL","unitPrice": 1.1,"unitMeasure": "100g","comparablePrice": "$1.10/ 100g","inStock": true,"availabilityType": "InStoreAndOnline","category": "Yoghurt","subCategory": "Dairy, Eggs & Fridge","url": "https://www.coles.com.au/product/high-protein-kefir-strawberry-1748773","scrapedAt": "2026-10-02T11:00:00+00:00"}
Price
$1.49 per 1,000 products ($0.00149 each), charged per product returned. Nothing else is charged: no per-run fee, no charge for pages that return nothing, and a product with no price is skipped rather than billed. Duplicates across pages are returned once.
Limits, honestly
- Coles only. Woolworths and Aldi are not covered.
- Prices are the national online prices Coles shows a logged-out visitor. They are not store-specific, and they do not include a loyalty or member price, because that needs an account and this Actor never signs in.
- Currency is AUD, always.
- Up to 40 pages per target (about 1,900 products). For a whole category, split it into sub-categories.
- Coles blocks some data-centre IPs. Apify Proxy is on by default. If a run reports pages blocked, switch the proxy to the RESIDENTIAL group, country AU.
- No nutrition, ingredients or per-store stock. A product URL returns the same fields as a search row.
What it will not do
No login, no loyalty or member pricing, no CAPTCHA solving, no personal data, and no faster-than-polite request rate.
Support
Open an issue on this Actor's Issues tab. Reported issues are fixed within 14 days.