
TikTok Shop Scraper
scrape.ly/store/shelfbright/tiktok-shop-scraperE-commerceSocial media
1 monthly user

Scrape Coles Australia (coles.com.au): product search, categories, weekly specials and half-price deals, product pages and the store finder. Prices, was prices, unit prices, promotions, availability, images, ingredients, nutrition and barcodes. No login needed.
Pull product data from Coles Australia (coles.com.au): search results, whole categories, the weekly specials catalogue, single product pages and the store finder. Each product comes with the shelf price, the was price, the unit price, the promotion text, availability, category path and images. You can add ingredients, nutrition and barcodes too. A 10-product search finishes in seconds, needs no login, and costs $0.70 per 1,000 results.
milk, coffee pods), or paste Coles links to search, category, on-special or product pages.| Field | What it does |
|---|---|
searchQueries | Search terms, each scraped separately |
startUrls | Coles links: /search/products?q=…, /browse/…, /on-special…, /product/… |
categories | Category slugs such as dairy-eggs-fridge/milk |
specials | allspecials, halfprice, multibuy or onlineonly |
productIds | Coles product numbers, e.g. 8150288 |
storePostcodes | Postcodes or suburbs for the store finder |
maxItems | Results per input (default 20, 0 = no limit). Each search term, link, category, specials view and postcode gets its own limit, so searchQueries: ["milk"] plus specials: "allspecials" with maxItems: 10 saves up to 20 rows |
sortBy | Coles default, closest match, best seller, price low/high, lowest unit price, biggest saving |
onlySpecials, onlyAvailable, minPrice, maxPrice | Filters applied to each product |
includeDetails | Open each product page for ingredients, nutrition, GTIN and more |
{
"searchQueries": ["milk", "coffee pods"],
"specials": "halfprice",
"categories": ["pantry/coffee"],
"maxItems": 50,
"sortBy": "unitPriceAscending",
"includeDetails": false
}
| Field | Description |
|---|---|
id, name, brand, size | Coles product ID, name, brand and pack size |
current_price | Shelf price now (AUD) |
price, discount_price | Regular price and the special price when discounted |
was_price, save_amount, save_percent | Price before the special and the saving |
promotion_label, promotion_type, on_special | Offer text (e.g. "1/2 Price"), offer type, special flag |
unit_price, unit, unit_quantity, comparable_price_text | Comparable unit price, e.g. $1.65/ 1L |
availability, is_available | Where it is sold and whether it can be bought |
category, subcategory, aisle, breadcrumbs | Coles category path |
images, image, source_url | Image links and the product page |
retail_limit, promotional_limit | Purchase limits |
ingredients, allergens, nutrition_per_100, gtin, country_of_origin | With Include product details or product links |
type | product or store |
Store rows (type: "store") have name, address, suburb, state, postcode, phone, latitude, longitude, distance_km, today_hours, is_open, trading_hours and next_door_stores.
{
"type": "product",
"id": "7848420",
"name": "Slow Cooked Pork Belly Bites In BBQ Honey",
"brand": "Coles Made Easy",
"size": "500g",
"source_url": "https://www.coles.com.au/product/coles-made-easy-slow-cooked-pork-belly-bites-in-bbq-honey-500g-7848420",
"category": "Meat & Seafood",
"breadcrumbs": ["Meat & Seafood", "Coles Made Easy Range", "Easy Meals"],
"price": 15,
"discount_price": 7.5,
"current_price": 7.5,
"was_price": 15,
"save_amount": 7.5,
"save_percent": 50,
"on_special": true,
"promotion_type": "PERCENT_OFF",
"promotion_label": "1/2 Price",
"currency": "AUD",
"unit_price": 15,
"unit": "kg",
"comparable_price_text": "$15.00/ 1kg",
"availability": "InStoreAndOnline",
"is_available": true,
"image": "https://productimages.coles.com.au/productimages/7/7848420.jpg",
"position": 1,
"source_input": "specials:halfprice"
}
You pay $0.70 per 1,000 results ($0.0007 per product or store saved), plus the small platform usage of the run (compute and proxy traffic). Example: 1,000 products from a category cost about $0.70 in results plus well under one cent of usage on the default datacenter proxy. Runs that find nothing cost only the usage, and the run stops cleanly when your maximum charge is reached.
Is it legal to scrape Coles? The actor only reads public product, price and store information that anyone can see without logging in. Check the Coles terms and your local laws for how you use the data.
Do I need a Coles account or my own proxy? No. It uses Australian proxies from the platform. Datacenter is the default and the cheapest. If Coles starts blocking those exits during a run, the actor switches to residential proxies by itself.
How many results can I get? Everything Coles lets a visitor page through. Coles stops paging a single listing at about 5,000 products, so for bigger listings (like all specials) the actor walks each sub-category as well. In our test that gave about 6,900 unique specials out of the 7,958 Coles reported. When fewer results exist than you asked for, the run summary says so.
Why are some fields empty? Coles does not fill every field for every product. For example, was_price only appears on specials, and the nutrition fields only come with Include product details.
Are prices store-specific? Prices come from the national online catalogue, which matches what coles.com.au shows to a visitor who has not picked a store.
Can I schedule it or use the API? Yes. Schedule daily runs for price tracking and fetch the dataset as JSON, CSV or Excel through the API or integrations.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
searchQueriesarrayOptionalSearch terms
Product searches to run on coles.com.au, for example milk, nappies or coffee pods. Each term is scraped separately.
startUrlsarrayOptionalColes links
Links copied from coles.com.au: search results, category (browse) pages, on-special pages and product pages. Filters in the link, such as a brand filter, are kept.
categoriesarrayOptionalCategories
Category slugs from the Coles browse menu, for example dairy-eggs-fridge, dairy-eggs-fridge/milk or pantry/coffee.
specialsenumOptionaldefault ""Weekly specials
Also scrape the Coles specials catalogue: every special, half price only, multi-buy deals or online-only specials. The specials view counts as its own input, so it gets its own Max results per input on top of your search terms.
productIdsarrayOptionalProduct IDs
Coles product IDs (the number at the end of a product link, for example 8150288). Product pages always include full details.
storePostcodesarrayOptionalStore finder postcodes
Australian postcodes or suburbs. Returns the nearest Coles supermarkets with address, phone, opening hours and next-door Liquorland stores.
maxItemsintegerOptionaldefault 20Max results per input
How many products (or stores) to save for each search term, link, category, specials view or postcode. The limit applies per input, so the run total can be up to this number times the number of inputs (for example a search term plus a specials view with 10 gives up to 20 rows). 0 means no limit.
sortByenumOptionaldefault "default"Sort by
Order Coles returns products in.
onlySpecialsbooleanOptionaldefault falseOnly products on special
Keep only products with a price drop, half-price or multi-buy offer.
onlyAvailablebooleanOptionaldefault falseOnly available products
Skip products Coles marks as unavailable.
minPricenumberOptionalMinimum price (AUD)
Skip products whose current shelf price is below this.
maxPricenumberOptionalMaximum price (AUD)
Skip products whose current shelf price is above this.
includeDetailsbooleanOptionaldefault falseInclude product details
Open each product page for ingredients, allergens, nutrition panel, barcode (GTIN), country of origin, storage instructions and all images. Slower and uses more proxy traffic.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Coles only serves Australian connections. Australian datacenter proxies work and are the cheapest; switch to residential if you see blocked inputs in the run summary.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| type | string | null | product or store |
| id | string | null | Coles product or store ID |
| name | string | null | Product or store name |
| brand | string | null | Brand |
| size | string | null | Pack size |
| source_url | string | null | Coles link |
| category | string | null | Top-level category |
| breadcrumbs | array | null | Category path |
| price | number | null | Regular price in AUD (the was price when on special) |
| discount_price | number | null | Special price in AUD when discounted |
| current_price | number | null | Shelf price now in AUD |
| was_price | number | null | Price before the special |
| unit_price | number | null | Comparable unit price |
| comparable_price_text | string | null | Unit price as shown by Coles |
| promotion_label | string | null | Offer text, e.g. 1/2 Price or Pick any 2 for $9 |
| on_special | boolean | null | Product has a special |
| availability | string | null | Where it is sold |
| is_available | boolean | null | Available to buy |
| image | string | null | Main image |
| gtin | string | null | Barcode (with product details) |
| ingredients | string | null | Ingredients (with product details) |
| address | string | null | Store street address |
| suburb | string | null | Store suburb |
| phone | string | null | Store phone |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Result | One saved Coles product or store. | $0.0007 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('shelfbright/coles-scraper').call({
"searchQueries": [
"milk"
],
"startUrls": [],
"categories": [],
"productIds": [],
"storePostcodes": [],
"maxItems": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
],
"scrapelyProxyCountry": "AU"
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run shelfbright/coles-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=shelfbright/coles-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Coles products with prices and full details.
Products sorted by price, lowest first.
Only discounted products that are in stock.
Current price and data for chosen Coles products.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.