Target Australia API & Scraper
Target Australia (target.com.au) is the Australian department store chain owned by Wesfarmers; it is a different company and a different catalogue from Target in the United States, which has its own API here (target).
🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.
This API reads target.com.au as JSON. `search` takes the words you would type in Target's search box, a category id or a sale collection, with brand, price range, on-sale and six sort orders, and returns up to 200 products a page with the printed price, the struck-through was price shown on the card, the price range across the product's variants, clearance and online-exclusive flags, online and in-store stock counts, rating and review count. `product` returns what the product page shows: price, was price, RRP, OnePass price, deal text and promotions, colours, the sizes of the colour shown, delivery options, breadcrumbs, description, features, materials and images, plus every variant's price and stock counts. `stock` returns one variant's stock level (in stock, low stock, out of stock) in every Target store, one state's stores or a single store, with click and collect, home delivery and express delivery availability. `categories` returns Target's category tree with product counts and `stores` its 123 stores.
What a Target Australia field actually contains
Fields that read differently from how they look. Every row was measured against live target.com.au answers on 2026-10-18.
| Field | What it holds |
|---|---|
| price | The national online price Target prints, in AUD with GST included. It matched the printed price on the product page for 16 of 16 products across 8 searches, and was identical in three separate checks of the same 60 products in the same minute. Prices do not vary by store; only stock does. |
| was_price (search) vs was_price (product) | Search rows carry the struck-through price printed on the search card. The product page can print no was price for the same item: a clearance tea towel set showed $5 and was $7 on the card and only $5 on its page. product returns both: was_price from the page, listing_was_price from the card. |
| discount_pct_computed | Computed by us from price and was_price; Target does not print a percentage on these cards. |
| deal, promotions | Kept apart from the price. promotions lists Target's own promotion text, for example "Buy the Preview Beige Suit Jacket and Pants for $99"; the price field stays the single-item price. |
| online_stock_qty, store_stock_qty | Target's own unit counts for online stock and for all stores together, per variant. For one store's level use stock or product with store. |
| stock (per store) | inStock, lowStock or outOfStock exactly as Target's store-stock service reports it. Target answers outOfStock even for codes that do not exist, so the API checks the variant against the catalogue first and returns NOT_FOUND instead. |
| product_id, colour_variant_id, variant_id | product_id is the catalogue id (P72203439, Wgacbt); colour_variant_id and variant_id are the colour and size codes at the end of product URLs. Category pages list one row per colour, so the pair product_id plus colour_variant_id is the row key. All ids are strings: some colour codes are not numbers. |
| sizes | Size names (8, 10, 12, or S, M, L) appear on the product page only for the colour being shown. Pass another colour's code as product_id to get that colour's size names. |
| matched_by_text, matched_by_meaning | Target's search also returns related products. A nonsense query returned 100 products with 0 text matches; these two counts and a warning tell you when no row contains your words. |
Target publishes no barcode (GTIN) on target.com.au, no review texts (only the rating and review count), and serves at most the first 10,000 rows of any one query, so a full sweep goes category by category.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/target-au/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"query": "bath towel",
"sort": "price_asc"
}
}{
"ok": true,
"meta": {
"api": "target-au",
"endpoint": "search",
"mode": "live",
"latency_ms": 895.7,
"record_count": 48,
"bytes": 59312,
"cache_hit": false,
"total": 122,
"upstream_requests": 1,
"charged_credits": 2,
"version": "0.1.0",
"request_id": "e087dd2fdc2f41fc",
"queue_ms": 1.2,
"fetched_at": "2026-10-18T17:45:06.198Z"
},
"data": {
"results": [
{
"position": 1,
"product_id": "P72270998",
"colour_variant_id": "72270998",
"variant_id": "72270998",
"title": "Piper Australian Cotton Ribbed Face Washer",
"brand": "Target",
"url": "https://www.target.com.au/p/piper-australian-cotton-ribbed-face-washer/72270998",
"product_url": "https://www.target.com.au/p/piper-australian-cotton-ribbed-face-washer/P72270998",
"image": "https://assets.target.com.au/transform/1b08acda-fe27-4376-b3ac-e800647642f2/590_72270998_1-590T7227?io=transform:fill,width:298,height:298&quality=80&output=jpeg",
"colour": "Coco Bean",
"price": 3,
"was_price": null,
"discount_pct_computed": null,
"price_min": 3,
"price_max": 3,
"was_price_max": null,
"currency": "AUD",
"clearance": true,
"in_stock": true,
"online_stock_qty": 0,
"store_stock_qty": 78,
"variant_count": 1,
"colour_count": 1,
"rating": null,
"review_count": 0,
"category": "Clearance",
"category_ids": [
"W693993"
],
"online_exclusive": false,
"online_only_price": false
},
{
"position": 2,
"product_id": "P69415548",
"colour_variant_id": "69415548",
"variant_id": "69415548",
"title": "Australian Cotton Ribbed Face Washer - Piper - Sage Marle",
"brand": "Target",
"url": "https://www.target.com.au/p/australian-cotton-ribbed-face-washer-piper-sage-marle/69415548",
"product_url": "https://www.target.com.au/p/australian-cotton-ribbed-face-washer-piper-sage-marle/P69415548",
"image": "https://assets.target.com.au/transform/1fc738c3-d185-47fd-b7f2-7759bc5ed48f/590_69415548_1-282F9D?io=transform:fill,width:298,height:298&quality=80&output=jpeg",
"colour": "Sage Marle",
"price": 3,
"was_price": null,
"discount_pct_computed": null,
"price_min": 3,
"price_max": 3,
"was_price_max": null,
"currency": "AUD",
"clearance": true,
"in_stock": true,
"online_stock_qty": 260,
"store_stock_qty": 823,
"variant_count": 1,
"colour_count": 1,
"rating": null,
"review_count": 0,
"category": "Clearance",
"category_ids": [
"W693993"
],
"online_exclusive": false,
"online_only_price": false
},
{
"position": 3,
"product_id": "P70876253",
"colour_variant_id": "70876253",
"variant_id": "70876253",
"title": "Georgie Australian Cotton Gingham Hand Towel - Aqua",
"brand": "Target",
"url": "https://www.target.com.au/p/georgie-australian-cotton-gingham-hand-towel-aqua/70876253",
"product_url": "https://www.target.com.au/p/georgie-australian-cotton-gingham-hand-towel-aqua/P70876253",
"image": "https://assets.target.com.au/transform/6efc29a1-1700-48de-b532-5c40f68d8f19/590_70876253_1-590T7087?io=transform:fill,width:298,height:298&quality=80&output=jpeg",
"colour": "Aqua",
"price": 3,
"was_price": null,
"discount_pct_computed": null,
"price_min": 3,
"price_max": 3,
"was_price_max": null,
"currency": "AUD",
"clearance": true,
"in_stock": true,
"online_stock_qty": 0,
"store_stock_qty": 147,
"variant_count": 1,
"colour_count": 1,
"rating": null,
"review_count": 0,
"category": "Clearance",
"category_ids": [
"W693993"
],
"online_exclusive": false,
"online_only_price": false
}
],
"page": 1,
"page_size": 48,
"total": 122,
"total_capped": false,
"has_more": true,
"matched_by_text": 88,
"matched_by_meaning": 34,
"facets": [
{
"name": "size",
"label": "Size",
"options": [
{
"value": "[trimmed-depth]",
"label": "[trimmed-depth]",
"count": "[trimmed-depth]"
},
{
"value": "[trimmed-depth]",
"label": "[trimmed-depth]",
"count": "[trimmed-depth]"
},
{
"value": "[trimmed-depth]",
"label": "[trimmed-depth]",
"count": "[trimmed-depth]"
}
]
},
{
"name": "newarrivals",
"label": "New Arrivals",
"options": [
{
"value": "[trimmed-depth]",
"label": "[trimmed-depth]",
"count": "[trimmed-depth]"
},
{
"value": "[trimmed-depth]",
"label": "[trimmed-depth]",
"count": "[trimmed-depth]"
}
]
},
{
"name": "colour",
"label": "Colour",
"options": [
{
"value": "[trimmed-depth]",
"label": "[trimmed-depth]",
"count": "[trimmed-depth]"
},
{
"value": "[trimmed-depth]",
"label": "[trimmed-depth]",
"count": "[trimmed-depth]"
},
{
"value": "[trimmed-depth]",
"label": "[trimmed-depth]",
"count": "[trimmed-depth]"
}
]
}
],
"related_searches": [
"beach towel",
"bath sheet",
"tea towel"
],
"query": "bath towel",
"category": null,
"collection": null,
"brand": null,
"min_price": null,
"max_price": null,
"on_sale": false,
"sort": "price_asc",
"price_basis": "national online price printed by target.com.au for a logged-out shopper, AUD, GST included; it does not vary by store"
}
}What the Target Australia API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| search | Search Target Australia's catalogue by keywords, category or collection, with brand, price range, on-sale and sort filters, as the site's own search and category pages list it. Every row carries the printed price, the struck-through "was" price shown on the card, the price range across the product's variants, clearance and exclusivity flags, online and in-store stock counts, rating, review count, brand and category. Category pages list one row per colour (the pair product_id + colour_variant_id is the row key); keyword search one row per product. Omit query, category and collection to browse All Products. Target serves at most 10,000 rows per query (`total_capped`); sweep category by category with sort=price_asc. | Pricing teams call search to search Target Australia's catalogue by keywords, category or collection, with brand, price ra…. | query, category, collection, brand, min_price, ... |
| product | One Target Australia product as its product page shows it: title, printed price, "was" price, RRP, OnePass price, deal text and promotions (each separate from the price), colours and the shown colour's sizes with their codes, delivery options, breadcrumbs, description, features, materials, images, rating and review count — plus, from Target's catalogue, every variant's price, online stock count and in-store stock count, and the "was" price the search card prints (`listing_was_price`). Add `store` for that store's stock level of every variant. | Marketplace operators call product to get one Target Australia product as its product page shows it. | product_id, url, store |
| stock | Stock of one Target Australia variant (a colour or size code) in every Target store — or in one store, or one state's stores — as Target's own store-stock service reports it (inStock / lowStock / outOfStock), plus click & collect, home delivery and express delivery availability (give `postcode` for delivery to that postcode). The variant is checked against Target's catalogue first: an unknown code is NOT_FOUND, never a false "out of stock". | Catalog enrichment teams call stock to get stock of one Target Australia variant (a colour or size code) in every Target store. | variant_id, store, state, postcode |
| categories | Target Australia's category tree with Target's own product count per category: the top level, or the sub-categories of `parent`, down to `depth` levels. Each `category_id` plugs into `search` as `category`. | Retail analysts call categories to get target Australia's category tree with Target's own product count per category. | parent, depth |
| stores | The Target Australia store directory (Target's own store list): store number, name, state and store page. Store numbers plug into `stock` and `product` as `store`. | Pricing teams call stores to get the Target Australia store directory (Target's own store list). | state |
Call search from your stack
curl -X POST https://api.reefapi.com/target-au/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"bath towel","sort":"price_asc"}'import requests
r = requests.post(
"https://api.reefapi.com/target-au/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "bath towel",
"sort": "price_asc"
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/target-au/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"query": "bath towel",
"sort": "price_asc"
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.target-au.search with {"query":"bath towel","sort":"price_asc"}.Who uses this API and why
- Track Target Australia prices, was-prices and clearance flags across a category every day.
- Check which Target stores near a customer have a product in stock before sending them.
- Add Target Australia to an Australian price comparison or specials app next to Woolworths, Coles and Kogan data.
- Monitor sale collections and promotions for discount alerts.
- Map Target's category tree and product counts for assortment analysis.
Questions developers ask before integrating
Is this the same as the Target (US) API?
No. Target Australia is owned by Wesfarmers and runs its own catalogue, prices and stores at target.com.au. Use target-au for Australia and target for target.com.
Can I get stock for a specific Target store?
Yes. stock takes a variant code and returns its level in all 123 Target stores in one call, or pass state (nsw, vic, qld, sa, wa, tas, act, nt) or store (a store number from stores). product with store adds that store's level to every variant. Measured: one bath towel colour was in stock in 101 of 123 stores, low in 11 and out in 11.
How do I sweep the whole catalogue every day?
Page each top-level category from categories with sort=price_asc and page_size up to 200. Target serves at most 10,000 rows per query and the largest top-level category, Home, held 5,784 products. Price-sorted pages were identical across two runs with no product on two pages; Target's default relevance order is personalised and is not stable across pages.
Which filters are there?
Keywords, category, sale collection, brand, a price range, on sale only and six sorts (relevance, newest, rating, price low to high, price high to low, brand). Measured on "towel" (204 products): brand Anko 46, all Anko; 12.50 to 17 returned 18 priced 14 to 16; category Home 147. On sale in Women: 3,398 down to 161.
Do you return the OnePass price and promotions?
Yes, from the product page: onepass_price when Target shows one, the OnePass badge, the deal text and each promotion's text, all separate from the price.
Does the price change with the store or postcode?
No. Target Australia sells at one national online price; the same 60 products returned the same prices in three separate checks. postcode on stock only changes home and express delivery availability.
Is there a barcode or GTIN?
No. target.com.au does not publish one. Every product has Target's own product id and variant codes, which stay in its URLs.
What is the Target Australia API?
Target Australia API is a ReefAPI endpoint group for target australia (target.com.au) prices with was-price and promotions, online and per-store stock, colours, sizes and categories. It returns live JSON through POST requests under /target-au/v1.
Is the Target Australia API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. Target Australia calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Target Australia login or account?
No login to Target Australia is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the Target Australia data?
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Target Australia API use?
Target Australia actions currently cost 1-3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call Target Australia from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call target-au actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the Target Australia API a Target Australia scraper?
It is the managed alternative to a DIY Target Australia scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same target australia (target.com.au) prices with was-price and promotions, online and per-store stock, colours, sizes and categories back as clean JSON.