Target AU Scraper – Products, Prices & Reviews avatar

Target AU Scraper – Products, Prices & Reviews

Pricing

from $1.00 / 1,000 product results

Go to Apify Store
Target AU Scraper – Products, Prices & Reviews

Target AU Scraper – Products, Prices & Reviews

Scrape products and customer reviews from Target.com.au. Search by keyword or use product/category URLs with sorting and filters. Returns name, brand, price, OnePass price, ratings, review text and stats, colours, sizes, images, category, stock, and variations.

Pricing

from $1.00 / 1,000 product results

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

1

Bookmarked

4

Total users

0

Monthly active users

5 days ago

Last modified

Security

Limited permissions

Share

Target Australia Scraper: Products, Prices & Reviews

Target Australia Scraper turns target.com.au into a clean product data API. Search by keyword or paste product, category and search links, and get back one flat record per product with current price, was/original price, savings amount and percent, stock, colour and size variants, images, category breadcrumbs, and, when you switch it on, the full rating breakdown and individual customer reviews. Filter to On sale, Clearance or New arrivals, sort by price or rating, then export to JSON, CSV or Excel, or read the results straight through the API.

Why This Scraper?

  • Two ways in. Search by keyword, or paste a mix of product, category and search URLs from target.com.au in one run.
  • One flat record, every mode. A pasted product link is resolved through the same product backend as a search result, so it carries the exact same fields, not a stripped-down detail shape.
  • Real discounts, never invented. Was-price, savings amount and percent, and the on-special flag are only set when the site itself publishes a genuine strike-through reduction or a clearance classification.
  • Specials and offers built in. Scope a search or pasted category/search URL to On sale, Clearance or New arrivals, store-wide or combined with a keyword.
  • Ratings and reviews on demand. Switch on detail enrichment to attach the full rating distribution and individual, per-review text to every product, and pay only for the products you enrich.
  • Filters and sorting that actually apply. Brand, colour and a price range work the same way in search mode and a pasted category or search URL; a pasted single product URL only respects the price range. Sort by relevance, latest, rating or price.
  • Resume a big crawl. Point a new run at a previous run or dataset ID and it returns only the products it hasn't collected yet, so topping up a full-catalogue pull never re-pays for duplicates.

Use Cases

  • Price and discount tracking: monitor the was/current price, savings and on-special status of a product line over time.
  • Specials and clearance monitoring: pull On sale, Clearance or New arrivals collections on a schedule to catch new markdowns first.
  • Catalogue and assortment research: walk a category or a keyword across the whole result set to map brands, price bands and stock levels.
  • Voice-of-customer analysis: collect ratings, review text and sub-ratings for a product range to spot recurring praise or complaints.
  • Competitive benchmarking: compare price, promo status and review scores for the same products against other retailers you scrape separately.

Data You Get

Sample shape: values are illustrative placeholders, not from a live record.

FieldExample
id"W1234567890"
name / title"Sample Linen Shirt" / "Sample Brand Sample Linen Shirt"
url"https://www.target.com.au/p/sample-linen-shirt/12345678"
brand"Sample Brand"
price45.0
wasPrice60.0 (null when the product isn't reduced)
savingsAmount / savingsPercent15.0 / 25 (both null when there's no genuine reduction)
isOnSpecial / promoLabeltrue / null (promoLabel is "Clearance" on a clearance line, otherwise null)
onePassPricenull (set only when the site publishes a OnePass member price)
currency"AUD"
onSale / clearancetrue / false
description"A lightweight, breathable everyday shirt."
features["Regular fit", "Button-through front", "Curved hemline"]
careInstructions["Warm delicate machine wash", "Do not bleach"]
category / breadcrumbs"Clothing & Accessories > Clothing > Shirts & Tops" / ["Clothing & Accessories", "Clothing", "Shirts & Tops"]
topLevelCategory"Women"
availability / inStock"NORMAL" / true
colour"White"
image / imagesfirst image URL / full image URL array
variantCount / variations1 / [{ "colour": "White", "price": 45.0, "wasPrice": 60.0, "inStock": true }]
averageRating / reviewCount4.8 / 18
reviewsarray of { rating, title, body, author, date, verifiedPurchase, helpfulCount, subRatings } (present only when reviews were collected)
onlineDate"2026-05-24"

Every record also carries baseUrl, merchDepartmentCode, productType, groupIds, colourVariantCode, sizeVariantCode, availableOnlineQty, availableStoreQty, and boolean flags for bulkyProduct, targetExclusive, onlineExclusive, onePassExclusive and advFreeDeliveryEligible. When detail enrichment collects reviews, each product also gets reviewStats (the full aggregate: total reviews, recommended/not-recommended counts, helpful-vote count, first/last review dates, sub-rating averages) and ratingDistribution, recommendedCount and reviewsCollected. Products with no reviews simply leave the rating and review fields empty; they are never faked.

How to Use

  1. Pick a mode: search (keywords) or url (paste product, category or search links).
  2. Fill in the fields for that mode, add any filters (brand, colour, price range, specials collection) and a sort order.
  3. Turn on Fetch ratings and reviews if you want review text and rating breakdowns, and set Max products to control run size and cost.
  4. Click Start, then download the dataset as JSON, CSV or Excel, or read it through the API.
Link shapeExampleBehaviour
Search pagehttps://www.target.com.au/search?text=shirtWalks the keyword results.
Search page, paginatedhttps://www.target.com.au/search?text=shirt&page=2Starts at the page in the link (partial scope: earlier pages are not collected).
Search page, sortedhttps://www.target.com.au/search?text=shirt&sortBy=price-ascUses the link's sortBy while Sort by is left at Relevance.
Search page, no wwwhttps://target.com.au/search?text=shirtSame as the search page.
Category leaf pagehttps://www.target.com.au/c/baby/sleep/monitors/W118762Walks the category by its trailing id.
Category page, paginatedhttps://www.target.com.au/c/women/jackets-coats/W1507165?page=2Starts at the page in the link.
Product, numeric codehttps://www.target.com.au/p/x/72544778One product, matched on its code.
Product, W-codehttps://www.target.com.au/p/anything/W2250321627One product, matched on its code whatever the slug; a code the site does not know is skipped with a warning, never replaced by an unrelated product.

A bare department page such as /c/women/ has no category id; it is resolved against the site's category list when possible, otherwise it is skipped with a warning in the log (never a silent empty result).

Unedited URL field: in URL mode, if you leave the URLs field as it is, the run scrapes one example link per shape above (eight links), and Max products is split across them. Replace the list with your own links to scrape only those.

Brand and colour: type the name as shown on target.com.au. Case and spacing are matched to the storefront's exact value, and a warning is logged when no option matches.

Search with filters, sorted by price:

{
"mode": "search",
"searchTerms": ["linen shirt"],
"brand": "Target Woman",
"colour": "White",
"minPrice": 20,
"maxPrice": 60,
"sortBy": "price-asc",
"maxItems": 30,
"fetchReviews": false
}

Store-wide clearance, no keyword:

{
"mode": "search",
"specialsCategory": "clearance",
"maxItems": 50,
"fetchReviews": false
}

Paste links and attach reviews:

{
"mode": "url",
"urls": [
"https://www.target.com.au/p/sample-ceramic-mug/98765432",
"https://www.target.com.au/c/kitchen-dining/mugs/W2000000"
],
"fetchReviews": true,
"maxReviews": 20,
"maxItems": 40
}

Whole catalogue for a keyword, no caps:

{
"mode": "search",
"searchTerms": ["kids toys"],
"maxItems": 0,
"maxPages": 0,
"fetchReviews": false
}

Run it from your code

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("abotapi/target-au-scraper").call(run_input={"mode": "search", "searchTerms": ["shirt"], "maxItems": 20})
for product in client.dataset(run["defaultDatasetId"]).iterate_items():
print(product["name"], product["price"], product["isOnSpecial"])

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('abotapi/target-au-scraper').call({ mode: 'search', searchTerms: ['shirt'], maxItems: 20 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.

Caps and full-catalogue runs

Max products (maxItems) stops the whole run once that many products are pushed; 0 means unlimited. With more than one search term or pasted URL, that cap is split evenly across them, so a run doesn't exhaust the budget on the first term alone. Max pages per search (maxPages) is a safety cap on pages walked per term or category; leave it at 0 to walk every page, since the walk already stops on its own once the storefront's own result total is reached or a page repeats.

Recurring monitoring (incremental mode)

Turn on Incremental mode to schedule the same search daily. The first run returns every matching product as NEW. Later runs return only NEW and UPDATED products (the changedFields list names what moved: price, was-price, promo, stock and so on), plus REAPPEARED products, and EXPIRED products once the whole search has been walked to its end. Reviews, ratings, images (including variation images), links and the scrape time never trigger UPDATED. Unchanged products are not returned, not enriched and not billed unless you switch on Also return unchanged products. Every returned row, including UNCHANGED and EXPIRED rows, is billed as a normal result; the review-enrichment charge applies only to NEW, UPDATED and REAPPEARED rows with reviews fetched. EXPIRED rows are never emitted for capped, partial, single-product or resumed runs; state is kept per search or URL setup, or per State key.

Resuming a large run

Pass a previous run's ID (or its dataset ID) as Resume from a previous run. The actor reads every product ID already in that dataset, skips them, and this run then returns only the products it hasn't collected before, a delta you can append to the earlier dataset. This is separate from the automatic checkpoint the actor keeps for its own migrations and Resurrects: if a run is interrupted by the platform, resuming it automatically continues from the exact page it left off, without needing resumeFromRunId.

Send results into your apps (MCP connectors)

Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape: the Apify dataset is never changed.

What gets written to the connector: a condensed, human-readable summary of each product, not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.

  1. Authorize a connector once under Apify then Settings then API & Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
  3. For Notion, also set notionParentPageUrl to the page where items should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.

Input Parameters

ParameterTypeDefaultDescription
modestringsearchsearch (keywords) or url (paste product, category, or search URLs).
searchTermsarrayno default (prefill: ["shirt"])Keywords to search (search mode).
urlsarrayone example per supported link shape (eight links, see the URL mode table)Product, category or search URLs to walk (URL mode).
sortBystringrelevancerelevance, newest, rating, price-asc, price-desc, or brand.
specialsCategorystring"" (no promo filter)Limit to a promotional collection: on-sale, clearance, or new-arrivals.
brandstringno defaultFilter to one brand; case and spacing are matched to the storefront value.
colourstringno defaultFilter to one exact colour facet value.
onlyWithPricebooleanfalseSkip products with no price before reviews are fetched and before anything is delivered or billed.
minPriceintegerno defaultOnly keep products at or above this price.
maxPriceintegerno defaultOnly keep products at or below this price.
fetchReviewsbooleantrueAttach ratings, review stats and individual reviews to each product (detail enrichment).
maxReviewsinteger20Cap on reviews captured per product. 0 disables reviews.
maxItemsinteger20Total products to return across all searches or URLs (up to 1,000,000). 0 = unlimited.
maxPagesinteger0Safety cap on pages walked per search term or category. 0 = walk every page, up to a hard limit of 1000 pages per search or URL.
resumeFromRunIdstringno defaultID of a previous run (or dataset) of this actor; already-collected products are skipped.
incrementalModebooleanfalseRecurring monitoring: return only NEW, UPDATED, REAPPEARED and EXPIRED products against the last run.
stateKeystringno defaultName a monitoring campaign to keep or share its state.
emitUnchangedbooleanfalseIncremental mode only: also return unchanged products as plain rows (billed as results).
emitExpiredbooleantrueIncremental mode only: return products that disappeared after a complete scan (billed as results).
ignoreFieldsForChangesarrayno defaultIncremental mode only: field names excluded from change detection.
proxyobject{"useApifyProxy": true}Apify Proxy configuration.
mcpConnectorsarrayno defaultOptional: send a summary of each product to apps you authorized under Integrations.
notionParentPageUrlstringno defaultNotion connector only: page under which product pages are created.
maxNotifyListingsinteger50Cap on items written to each connector per run.

Every row also carries query (the search term or URL that produced it), retailer (always Target), source (target.com.au), fetchedAt (ISO timestamp), imageUrl, and priceText (formatted price). unitPriceText is always null because the storefront data carries no unit-price text; saleStory mirrors promoLabel.

Dataset views

The Output tab offers four views over the same records: Products Overview (name, brand, price, was-price, stock), Reviews (one row per review, flattened from the reviews array), Pricing & specials (price, was-price, savings, promo label, priceText) and Stock & availability (in-stock flag, online and store quantities, variants).

Output Example

Sample shape: values are illustrative placeholders, not from a live record.

{
"kind": "product",
"id": "W1234567890",
"name": "Sample Linen Long Sleeve Shirt",
"title": "Sample Brand Sample Linen Long Sleeve Shirt",
"url": "https://www.target.com.au/p/sample-linen-long-sleeve-shirt/12345678",
"baseUrl": "https://www.target.com.au/p/sample-linen-long-sleeve-shirt/12345678",
"brand": "Sample Brand",
"price": 45.0,
"wasPrice": 60.0,
"onePassPrice": null,
"currency": "AUD",
"onSale": true,
"isOnSpecial": true,
"savingsAmount": 15.0,
"savingsPercent": 25,
"promoLabel": null,
"onlineOnlyPrice": false,
"clearance": false,
"description": "A lightweight, breathable everyday shirt.",
"features": ["Regular fit", "Button-through front", "Curved hemline"],
"careInstructions": ["Warm delicate machine wash", "Do not bleach"],
"category": "Clothing & Accessories > Clothing > Shirts & Tops",
"breadcrumbs": ["Clothing & Accessories", "Clothing", "Shirts & Tops"],
"topLevelCategory": "Women",
"merchDepartmentCode": "WMN01",
"productType": "SHIRT",
"availability": "NORMAL",
"groupIds": ["W951361"],
"colour": "White",
"colourVariantCode": "WHT",
"sizeVariantCode": "M",
"inStock": true,
"availableOnlineQty": 25,
"availableStoreQty": null,
"bulkyProduct": false,
"targetExclusive": true,
"onlineExclusive": false,
"newArrival": false,
"onePassExclusive": false,
"advFreeDeliveryEligible": true,
"onlineDate": "2026-05-24",
"image": "https://assets.target.com.au/transform/00000000-0000-0000-0000-000000000000/sample_1",
"images": [
"https://assets.target.com.au/transform/00000000-0000-0000-0000-000000000000/sample_1",
"https://assets.target.com.au/transform/11111111-1111-1111-1111-111111111111/sample_2"
],
"variations": [
{ "variationId": "V1", "colour": "White", "colourVariantCode": "WHT", "sizeVariantCode": "M", "price": 45.0, "wasPrice": 60.0, "savingsAmount": 15.0, "savingsPercent": 25, "inStock": true, "url": "https://www.target.com.au/p/sample-linen-long-sleeve-shirt/12345678", "image": "https://assets.target.com.au/transform/00000000-0000-0000-0000-000000000000/sample_1" }
],
"variantCount": 1,
"searchMode": "search",
"averageRating": 4.8,
"reviewCount": 18,
"ratingDistribution": { "5": 15, "4": 3 },
"recommendedCount": 17,
"reviewsCollected": 1,
"reviewStats": {
"totalReviews": 18,
"averageRating": 4.8,
"ratingDistribution": { "5": 15, "4": 3 },
"recommendedCount": 17,
"notRecommendedCount": 1,
"helpfulVoteCount": 9,
"firstReviewDate": "2025-11-02T08:00:00.000+00:00",
"lastReviewDate": "2026-03-19T12:18:09.000+00:00",
"subRatings": { "Quality": 4.6, "Value For Money": 4.5 }
},
"reviews": [
{
"id": "100000001",
"rating": 5,
"title": "Great everyday shirt",
"body": "Comfortable and true to size.",
"author": "Sample Reviewer",
"location": "Victoria",
"date": "2026-03-19T12:18:09.000+00:00",
"verifiedPurchase": true,
"isRecommended": true,
"isRatingsOnly": false,
"helpfulCount": 3,
"notHelpfulCount": 0,
"isSyndicated": false,
"syndicatedFrom": null,
"pros": null,
"cons": null,
"subRatings": { "Quality": 5, "Value For Money": 5 }
}
]
}

Plan Requirement

The default automatic proxy pool (datacenter) returned real product, search and category data for target.com.au in our checks, so no residential proxy is required. If the default pool keeps rejecting pages, the run may retry on a residential Australian connection, which Apify free plans do not include; if that connection is refused, the log says "The selected connection is unavailable to this run. Apify free plans do not include residential proxies." and the run returns to the default pool. If the proxy connection itself is refused for your account, or no page can be read at all, the run fails with a clear message instead of returning an empty dataset. You can also select a proxy group directly under Connection. You are charged per product returned, plus detail enrichment units for each product whose review feed was read: one unit per started block of 10 delivered reviews, minimum 1 when the feed was read (10 reviews is 1 unit, 11 is 2, 25 is 3). A product whose review feed could not be read adds no enrichment unit. The Pricing tab shows the current rates.

FAQ

How much does it cost?

You pay per product returned to the dataset, plus detail enrichment units where it ran (Fetch ratings and reviews on and Max reviews above 0): one unit per started block of 10 delivered reviews, minimum 1 when the review feed was read, even if the product has no reviews. Nothing is charged when the feed could not be read. The Pricing tab shows the current rates. Use Max products to cap the cost of any run.

This actor collects only publicly available product data. You are responsible for how you use it: follow target.com.au's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Product facts like price and stock are generally not protected, but images, descriptions and review text may be subject to third-party rights.

Does turning on reviews always add a charge?

No. Ratings and reviews are only fetched, and only billed, when Fetch ratings and reviews is on and Max reviews per product is above 0. This applies the same way to every mode, including a single pasted product URL: turn the toggle off (or set Max reviews to 0) and no review fetch happens and no enrichment charge is added for that run.

Why did my pasted product URL return nothing?

A single product URL resolves to exactly one record. If a price range (Min price / Max price) is set and that product's price falls outside it, that one product is dropped, so the run legitimately returns zero items. Clear or widen the price range to confirm.

Can I top up a large crawl without paying twice?

Yes. Pass a previous run's ID (or its dataset ID) as Resume from a previous run; the actor skips every product already in that dataset and returns only the new ones. Combine both datasets for the full set.

Why did my run fail instead of returning an empty dataset?

If a result-page fetch is rejected and zero products were collected, the run stops with a clear error message so "no results for these terms" is never confused with "the connection never worked". Resurrect the failed run from the Console in a few minutes; it resumes from the exact page that was rejected, unlike a brand-new run, which starts from the beginning. If some products were already collected before a mid-run rejection, you still get those, with a status message noting the run was only partial.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push product summaries into Notion, Linear or Airtable.

🔗 Want more e-commerce data?

Pair this actor with these related scrapers from the same team:

🛒 Kmart Scraper
Scrape products and customer reviews from Kmart.com.au. Search by keyword or use...
🛒 Costco AU Scraper
Scrape Costco.com.au products by keyword or product, search and category URLs. Extract...
🛒 Myer Scraper
Scrape Myer (myer.com.au) department-store products: name, brand, price, was-price...
🛒 Harvey Norman Scraper
Scrape Harvey Norman Australia products: name, brand, price, was-price / discount...
🛒 Chemist Warehouse AU
Scrape chemistwarehouse.com.au products with prices, RRP, discounts, stock, images...
🛒 Amazon Australia Product & Reviews Scraper
Scrape Amazon Australia (amazon.com.au) products and customer reviews. Search by keyword...

👉 Browse all abotapi scrapers

💬 Support

  • 🐞 Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
  • 🛠️ Need another site, extra fields or a private build? Email contact@abotapi.com.
  • ⭐ Enjoying it? A quick review on the actor page helps other users find it.