Target AU Scraper at a glance
Target AU Scraper is a ready-to-run Apify actor from abotapi for collecting ecommerce data. Its documented output includes id, title, brand, price and was, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $1.80 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify.
- Runs on
- Apify cloud: console, API, schedules and integrations
- Data type
- Ecommerce, Automation, Developer Tools
- Region
- Oceania
- Pricing
- $1.80 per 1,000 results (Free plan), from $1.00 on paid plans
- Output
- Documented below · JSON, CSV, Excel
- Inputs
- 23 options
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.
What Target AU Scraper can do
- 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.
Choose what to collect
These inputs let you configure Target AU Scraper – Products, Prices & Reviews. Open the actor on Apify to enter your values and review the current options.
| Input | What it controls |
|---|---|
modestring · required | search = provide search terms and filters. url = paste product, category, or search URLs and walk them. |
searchTermsarray | One or more keywords to search, e.g. shirt, towel, kids toys. Leave empty (with no specials category) to search the example term shirt. |
urlsarray | Paste product, category, or search URLs from target.com.au. Multi-URL supported. Filter fields still apply. A ?page=N in a pasted link starts the walk at that page (partial scope), and a ?sortBy= in the link is honoured while Sort by is left at Relevance. Left unedited, this field scrapes one example per URL shape (fifteen links). An empty list in URL mode stops the run with an input message. |
sortBystring | Order of results within each search or pasted category/search URL. Ignored for a pasted single product URL. |
specialsCategorystring | Limit results to a promotional collection: On sale keeps reduced products with a strike-through was-price, Clearance keeps run-out lines, New arrivals keeps the latest range. Applies to search terms and to pasted category or search URLs. Leave terms empty in search mode to walk the whole collection. Ignored for a pasted single product URL. |
brandstring | Filter to one brand. Type the name as shown on target.com.au (e.g. Target Woman); case and spacing are matched to the storefront's exact value, and a loud warning is logged when nothing matches. Ignored for a pasted single product URL. |
colourstring | Filter to one colour. Type the name as shown on target.com.au (e.g. White); case and spacing are matched to the storefront's exact value, and a loud warning is logged when nothing matches. Ignored for a pasted single product URL. |
Show 16 more inputs
| Input | What it controls |
|---|---|
minPriceinteger | Only keep products at or above this price. Applies to search, category and search URLs, and also to a pasted single product URL (the product is dropped when outside the range). |
maxPriceinteger | Only keep products at or below this price. Applies to search, category and search URLs, and also to a pasted single product URL (the product is dropped when outside the range). |
onlyWithPriceboolean | Skip products that carry no price. They are dropped before reviews are fetched and before anything is delivered or billed. |
fetchReviewsboolean | Attach ratings, review stats and individual reviews to each product (detail enrichment). |
maxReviewsinteger | Cap on reviews captured per product. 0 disables reviews. |
maxItemsinteger | Total products to return across all searches or URLs. 0 = unlimited. Capped at 1,000,000. |
maxPagesinteger | Safety cap on pages walked per search term or category. 0 = walk every page (the run still stops naturally once the storefront's own result total is reached or a page repeats). A hard limit of 1000 pages per search or URL always applies. |
resumeFromRunIdstring | Optional. ID of a previous run of this actor (or a dataset ID). Products already in that dataset are skipped, so this run returns only NEW products (a delta). Combine both runs' datasets for the full set. Max products then counts only the new products. |
incrementalModeboolean | Turn this on for daily or recurring monitoring. The first run returns all matching products as NEW. Later runs compare every product against the last run (title, brand, colour, price, was-price and discount, promo label, stock and availability) and return only NEW and UPDATED products; an UPDATED row's changedFields names exactly what moved. Reviews, ratings, images, links and the scrape time are never compared. Unchanged products are not returned, not enriched and not billed. State is kept separately for each search or URL setup; use State key to name or share a campaign. Products that disappear are returned once as EXPIRED (see 'Return products that disappeared') and a product that comes back is returned as REAPPEARED. |
stateKeystring | Optional. Name this monitoring campaign to keep its state stable, or to deliberately share state across differently configured runs. Leave empty to derive a key automatically from the search terms or URLs and the filters. With Incremental mode on and a State key set, search mode needs a search term, URL or specials category; otherwise the run stops with an input message. |
emitUnchangedboolean | Incremental mode only. Return products that did not change, as plain rows (no reviews fetch, no detail-enrichment charge). Each returned UNCHANGED row counts as a returned result and is billed under the per-result event. Off by default: unchanged products are skipped. |
emitExpiredboolean | Incremental mode only. When a run walks its whole search to the end, return products seen earlier that are no longer listed, with changeType EXPIRED. Each returned EXPIRED row counts as a returned result and is billed under the per-result event (no detail-enrichment charge). Never emitted for capped, partial, single-product or resumed runs. |
ignoreFieldsForChangesarray | Optional. Field names to exclude from UPDATED change detection, in addition to the built-in handling (reviews, ratings, images, links and scrape time never trigger UPDATED). Nested fields can be given as dotted paths. Ignored fields are still returned in the row. |
mcpConnectorsarray | Optionally send results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify then Settings then API & Integrations, then select it here. Notion gets a page-per-item export; other connectors get a best-effort write. Leave empty to skip. Supported: Notion, Linear, Airtable, Apify. |
notionParentPageUrlstring | URL or id of the Notion page under which item pages are created. Required only for the Notion export. |
maxNotifyListingsinteger | Cap on items written to each connector per run. Does not affect the dataset. |
Fields in the output
The documented dataset includes the fields below. Availability can depend on the source page and selected mode.
idID (text)titleTitle (text)brandBrand (text)pricePrice (number)wasPriceWas (number)savingsAmountSave $ (number)savingsPercentSave % (number)isOnSpecialOn Special (boolean)promoLabelPromo (text)currencyCur (text)averageRatingRating (number)reviewCountReviews (number)Show 19 more fields
inStockIn Stock (boolean)urlURL (link)nameProduct (text)reviewsreviewsonePassPriceOnePass price (number)clearanceClearance (boolean)onSaleOn sale (boolean)availabilityAvailability (text)availableOnlineQtyOnline qty (number)availableStoreQtyStore qty (number)targetExclusiveTarget exclusive (boolean)onlineExclusiveOnline exclusive (boolean)onePassExclusiveOnePass exclusive (boolean)bulkyProductBulky (boolean)advFreeDeliveryEligibleFree delivery eligible (boolean)changeTypeChange (text)changedFieldsChanged fields (array)firstSeenAtFirst seen (date)lastSeenAtLast seen (date)Example output
An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.
{
"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,
"wasPrice": 60,
"onePassPrice": null,
"currency": "AUD",
"onSale": true,
"isOnSpecial": true,
"savingsAmount": 15,
"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,
"wasPrice": 60,
"savingsAmount": 15,
"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": {
"4": 3,
"5": 15
},
"recommendedCount": 17,
"reviewsCollected": 1,
"reviewStats": {
"totalReviews": 18,
"averageRating": 4.8,
"ratingDistribution": {
"4": 3,
"5": 15
},
"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
}
}
]
}Ways to use this data
- 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.
Before you run
Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.
Questions about this actor
What data does Target AU Scraper return?
The documented output for Target AU Scraper includes id, title, brand, price, was, save $, save % and on special. Availability of each field depends on the source page and the selected mode.
How much does Target AU Scraper cost?
It costs $1.80 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.
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.
