Target AU Scraper – Products, Prices & Reviews
Pricing
from $1.00 / 1,000 product results
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
Maintained by CommunityActor stats
1
Bookmarked
4
Total users
0
Monthly active users
5 days ago
Last modified
Categories
Security
Limited permissionsShare
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.
| Field | Example |
|---|---|
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" |
price | 45.0 |
wasPrice | 60.0 (null when the product isn't reduced) |
savingsAmount / savingsPercent | 15.0 / 25 (both null when there's no genuine reduction) |
isOnSpecial / promoLabel | true / null (promoLabel is "Clearance" on a clearance line, otherwise null) |
onePassPrice | null (set only when the site publishes a OnePass member price) |
currency | "AUD" |
onSale / clearance | true / 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 / images | first image URL / full image URL array |
variantCount / variations | 1 / [{ "colour": "White", "price": 45.0, "wasPrice": 60.0, "inStock": true }] |
averageRating / reviewCount | 4.8 / 18 |
reviews | array 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
- Pick a mode:
search(keywords) orurl(paste product, category or search links). - Fill in the fields for that mode, add any filters (brand, colour, price range, specials collection) and a sort order.
- Turn on Fetch ratings and reviews if you want review text and rating breakdowns, and set Max products to control run size and cost.
- Click Start, then download the dataset as JSON, CSV or Excel, or read it through the API.
URL mode: supported link shapes
| Link shape | Example | Behaviour |
|---|---|---|
| Search page | https://www.target.com.au/search?text=shirt | Walks the keyword results. |
| Search page, paginated | https://www.target.com.au/search?text=shirt&page=2 | Starts at the page in the link (partial scope: earlier pages are not collected). |
| Search page, sorted | https://www.target.com.au/search?text=shirt&sortBy=price-asc | Uses the link's sortBy while Sort by is left at Relevance. |
Search page, no www | https://target.com.au/search?text=shirt | Same as the search page. |
| Category leaf page | https://www.target.com.au/c/baby/sleep/monitors/W118762 | Walks the category by its trailing id. |
| Category page, paginated | https://www.target.com.au/c/women/jackets-coats/W1507165?page=2 | Starts at the page in the link. |
| Product, numeric code | https://www.target.com.au/p/x/72544778 | One product, matched on its code. |
| Product, W-code | https://www.target.com.au/p/anything/W2250321627 | One 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 ApifyClientclient = 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.
- Authorize a connector once under Apify then Settings then API & Integrations (Notion, Linear, Airtable, or Apify).
- Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
- For Notion, also set
notionParentPageUrlto 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
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | search | search (keywords) or url (paste product, category, or search URLs). |
searchTerms | array | no default (prefill: ["shirt"]) | Keywords to search (search mode). |
urls | array | one example per supported link shape (eight links, see the URL mode table) | Product, category or search URLs to walk (URL mode). |
sortBy | string | relevance | relevance, newest, rating, price-asc, price-desc, or brand. |
specialsCategory | string | "" (no promo filter) | Limit to a promotional collection: on-sale, clearance, or new-arrivals. |
brand | string | no default | Filter to one brand; case and spacing are matched to the storefront value. |
colour | string | no default | Filter to one exact colour facet value. |
onlyWithPrice | boolean | false | Skip products with no price before reviews are fetched and before anything is delivered or billed. |
minPrice | integer | no default | Only keep products at or above this price. |
maxPrice | integer | no default | Only keep products at or below this price. |
fetchReviews | boolean | true | Attach ratings, review stats and individual reviews to each product (detail enrichment). |
maxReviews | integer | 20 | Cap on reviews captured per product. 0 disables reviews. |
maxItems | integer | 20 | Total products to return across all searches or URLs (up to 1,000,000). 0 = unlimited. |
maxPages | integer | 0 | Safety 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. |
resumeFromRunId | string | no default | ID of a previous run (or dataset) of this actor; already-collected products are skipped. |
incrementalMode | boolean | false | Recurring monitoring: return only NEW, UPDATED, REAPPEARED and EXPIRED products against the last run. |
stateKey | string | no default | Name a monitoring campaign to keep or share its state. |
emitUnchanged | boolean | false | Incremental mode only: also return unchanged products as plain rows (billed as results). |
emitExpired | boolean | true | Incremental mode only: return products that disappeared after a complete scan (billed as results). |
ignoreFieldsForChanges | array | no default | Incremental mode only: field names excluded from change detection. |
proxy | object | {"useApifyProxy": true} | Apify Proxy configuration. |
mcpConnectors | array | no default | Optional: send a summary of each product to apps you authorized under Integrations. |
notionParentPageUrl | string | no default | Notion connector only: page under which product pages are created. |
maxNotifyListings | integer | 50 | Cap 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.
Is it legal to scrape target.com.au?
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... |
💬 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.