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

Scrape Woolworths Australia (woolworths.com.au): product search, categories, half-price and multi-buy specials, product pages and the store locator. Prices, was prices, unit prices, promotions, stock, images, barcodes, ingredients and nutrition. No login needed.
Pull product data from Woolworths Australia (woolworths.com.au): search results, whole categories, the weekly specials catalogue, single products and the store locator. Every row comes with the shelf price, was price, unit price, promotion, stock status, barcode, ingredients, images and (optionally) the full nutrition panel. No login, no browser, just fast structured data at $0.40 per 1,000 results.
milk), paste Woolworths links, add category paths, pick a specials view, list stockcodes or add postcodes for the store locator.0 = everything available).| Field | What it does |
|---|---|
searchQueries | Search terms, each scraped separately |
startUrls | woolworths.com.au search, browse (category), specials or product links |
categories | Category paths like dairy-eggs-fridge/milk or IDs like 1_DEB537E |
specials | All specials, half price, lower shelf price, buy more save more, everyday low price, seasonal price or online only |
productIds | Stockcodes, for example 888140 |
storePostcodes | Postcodes or suburbs for the store locator |
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 | Relevance, price, unit price or name |
onlySpecials, onlyAvailable, minPrice, maxPrice | Filters |
includeDetails | Nutrition panel, country of origin and all images (on by default) |
{
"searchQueries": ["milk", "coffee pods"],
"categories": ["bakery/in-store-bakery/bread"],
"specials": "halfprice",
"productIds": ["888140"],
"storePostcodes": ["2000"],
"maxItems": 50,
"sortBy": "unitPriceAscending",
"includeDetails": true
}
| Field | Example |
|---|---|
name, brand, size | Dairy Farmers Full Cream Milk 2L, Dairy Farmers, 2L |
stockcode, barcode | 88436, 9310199012717 |
current_price, was_price, save_amount | 2.97, 5.95, 2.98 |
price, discount_price | Regular price and special price |
unit_price, unit_price_value, unit_price_unit | $2.35 / 1L, 2.35, l |
on_special, is_half_price, promotion_type, promotion_label | true, true, Special, Save $2.98 |
multibuy_quantity, multibuy_price | 2, 15 |
stock_status, is_available, supply_limit | InStock, true, 26 |
category, subcategory, breadcrumbs | Dairy, Eggs & Fridge › Full Cream Milk |
ingredients, allergens, allergy_statement, lifestyle | Milk., …, Gluten Free, … |
nutrition, nutrition_per_100, serving_size | Nutrition panel (with details) |
country_of_origin, health_star_rating | Australia, 4 |
images, image, source_url | Image URLs and the product link |
search_query, source_input, position, scraped_at | Where the row came from |
Store locator rows have type: "store" with name, address, suburb, state, postcode, phone, latitude, longitude, distance_km, is_open, today_hours, trading_hours and facilities.
{
"type": "product",
"stockcode": "88436",
"name": "Dairy Farmers Full Cream Milk 2L",
"brand": "Dairy Farmers",
"size": "2L",
"barcode": "9310199012717",
"source_url": "https://www.woolworths.com.au/shop/productdetails/88436/dairy-farmers-full-cream-milk-full-cream-milk",
"category": "Dairy, Eggs & Fridge",
"subcategory": "Full Cream Milk",
"price": 4.7,
"current_price": 4.7,
"was_price": null,
"on_special": false,
"promotion_label": null,
"unit_price": "$2.35 / 1L",
"unit_price_value": 2.35,
"unit_price_unit": "l",
"stock_status": "InStock",
"is_available": true,
"health_star_rating": 4.0,
"ingredients": "Milk.",
"allergy_statement": ["Egg Free", "Fish Free", "Gluten Free", "Soy Free", "Wheat Free"],
"country_of_origin": "Australia",
"nutrition_per_100": {"Energy": "259.0kJ", "Protein": "3.4g", "Fat, Total": "3.4g", "Sodium": "44.0mg"},
"image": "https://cdn0.woolworths.media/content/wowproductimages/large/088436.jpg",
"search_query": "milk",
"position": 1
}
You pay $0.40 per 1,000 results ($0.0004 per product or store row), plus the small platform usage of the run (compute and proxy traffic). A 1,000-product job with details typically costs about $0.41 in total. Inputs that return nothing cost nothing in result fees, and a run stops cleanly when it reaches your maximum charge.
Is it legal to scrape Woolworths? The actor only reads public catalogue pages anyone can open without an account. Check that your use of the data respects the Woolworths terms and the laws that apply to you.
Do I need a login or my own proxy? No. The default Australian datacenter proxy works; if Woolworths starts blocking it, the actor switches to residential by itself.
How many results can I get? As many as Woolworths lists. Search and category listings return up to a few thousand products each; the specials catalogue holds several thousand. The run summary says when fewer products exist than you asked for.
Why is a field empty? Woolworths does not publish every field for every product (for example, nutrition for non-food items or a was price when nothing is on special). Empty fields are null.
Which prices do I get? The online prices for the default Woolworths store and delivery area. Prices in a specific store can differ slightly.
Can I schedule it or use the API? Yes. Schedule runs to track prices over time, and read results through the API or the 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 woolworths.com.au, for example milk, nappies or coffee pods. Each term is scraped separately.
startUrlsarrayOptionalWoolworths links
Links copied from woolworths.com.au: search results, category (browse) pages, specials pages and product pages. The sort order in a link is kept.
categoriesarrayOptionalCategories
Category paths from the Woolworths browse menu, for example dairy-eggs-fridge, dairy-eggs-fridge/milk or pantry/coffee. A category ID such as 1_DEB537E also works.
specialsenumOptionaldefault ""Weekly specials
Also scrape the Woolworths specials catalogue: all specials, half price, lower shelf price, buy more save more (multi-buy), everyday low price, seasonal price 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.
productIdsarrayOptionalStockcodes
Woolworths product stockcodes (the number in a product link, for example 888140 in /shop/productdetails/888140). Product lookups always include full details.
storePostcodesarrayOptionalStore finder postcodes
Australian postcodes or suburbs. Returns the nearest Woolworths supermarkets and Metro stores with address, phone, opening hours and facilities.
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 Woolworths 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 Woolworths 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 trueInclude product details
Also load each product's detail record for the nutrition panel, country of origin label and all images. Ingredients, allergens, barcode and lifestyle claims are included either way. Turn off for the fastest runs.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Woolworths sits behind Akamai bot protection. Australian datacenter proxies work and are the cheapest; the scraper switches to residential by itself if datacenter exits get blocked.
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 | Woolworths stockcode or store number |
| stockcode | string | null | Woolworths stockcode |
| name | string | null | Product or store name |
| brand | string | null | Brand |
| size | string | null | Pack size |
| barcode | string | null | Barcode (GTIN) |
| source_url | string | null | Woolworths link |
| category | string | null | Department |
| subcategory | string | null | Aisle / subcategory |
| 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 | Previous price in AUD when discounted |
| save_amount | number | null | Saving in AUD |
| on_special | boolean | null | On special |
| is_half_price | boolean | null | Half price |
| promotion_type | string | null | Promotion type |
| promotion_label | string | null | Offer text |
| multibuy_quantity | integer | null | Multi-buy quantity |
| multibuy_price | number | null | Multi-buy price in AUD |
| unit_price | string | null | Unit price text, e.g. $2.35 / 1L |
| unit_price_value | number | null | Unit price in AUD |
| unit_price_unit | string | null | Unit price unit |
| stock_status | string | null | InStock, OutOfStock or Unavailable |
| is_available | boolean | null | Available to buy |
| ingredients | string | null | Ingredients |
| allergens | string | null | Allergens |
| nutrition | array | null | Nutrition panel |
| country_of_origin | string | null | Country of origin |
| health_star_rating | number | null | Health star rating |
| rating | number | null | Average review rating |
| review_count | integer | null | Review count |
| images | array | null | Image URLs |
| image | string | null | Main image URL |
| address | string | null | Store address |
| suburb | string | null | Suburb |
| state | string | null | State |
| postcode | string | null | Postcode |
| phone | string | null | Phone |
| distance_km | number | null | Distance in km |
| today_hours | string | null | Opening hours today |
| is_open | boolean | null | Open now |
| store_id | string | null | Store number |
| search_query | string | null | Search term |
| source_input | string | null | Input that produced this row |
| scraped_at | string | null | Scrape time (UTC) |
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 product or store row saved to the dataset. | $0.0004 |
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/woolworths-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/woolworths-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/woolworths-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.
Product details for a Woolworths stockcode.
Products for a search term with details.
Only discounted products that are in stock.
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.