Kmart Australia Scraper – Products, Prices & Reviews avatar

Kmart Australia Scraper – Products, Prices & Reviews

Pricing

from $1.50 / 1,000 products

Go to Apify Store
Kmart Australia Scraper – Products, Prices & Reviews

Kmart Australia Scraper – Products, Prices & Reviews

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

Pricing

from $1.50 / 1,000 products

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

7

Total users

2

Monthly active users

3.8 hours

Issues response

5 days ago

Last modified

Share

Kmart Australia Scraper

Collect product listings and customer reviews from kmart.com.au. Search by keyword, browse a specials collection, or paste links, then get a clean, flat record per product: name, canonical title, brand, current price with the was/original price and discount (amount and percent), star rating, full per-review text with stats, colours, sizes, images, seller, category, stock flags, and every colour/size variation. Reviews and review statistics attach to each product automatically.

Why this scraper

  • Specials and discounts: browse Kmart's Clearance, Catalogue, and Online Exclusives collections, and capture the was/original price, saving amount and percent, and on-special flag on every product that is genuinely reduced.
  • Products and reviews together: each product carries its rating summary plus individual review text, author, date, helpful votes, and sub-ratings (Value, Quality).
  • Rich, flat records: 40+ fields per product, including canonical title, was/now pricing, variations, images, and category.
  • Full product copy: the product description exactly as Kmart publishes it, plus the same copy split into features, specifications, careInstructions, additionalInfo, safety warnings, and links to any instruction manual. See "Product description and details" below.
  • Two ways to start: search by keyword (with an optional specials collection), sorting and filters, or paste product, category, specials, and search URLs.
  • Filters that narrow results: brand, colour, category, and a price range. Third-party marketplace sellers are excluded by default (includeMarketplace opts in; marketplace records carry isMarketplace: true).
  • Resume & recurring updates: turn on Incremental mode to get only NEW, UPDATED, and REAPPEARED products on every scheduled run, or resume one specific interrupted crawl with resumeFromRunId. See "Resume & recurring updates" below.
  • Optional export: pipe results straight into Notion, Linear, Airtable, or Apify via MCP connectors.

Data you get

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

FieldExample
id00000001
nameSample Bath Towel
titleSample Brand Sample Bath Towel
brandSample Brand
price8.0
wasPrice12.0
savingsAmount4.0
savingsPercent33
isOnSpecialtrue
promoLabelClearance
listPrice8.0
promoPrice12.0
currencyAUD
onSalefalse
clearancetrue
averageRating4.6
reviewCount316
colourBlue
sizeOne Size
sellerkmart
isMarketplacefalse
merchDepartmentHome
primaryCategoryId00000
inStockNationallytrue
urlhttps://www.kmart.com.au/product/sample-bath-towel-00000001/
imagehttps://assets.kmart.com.au/transform/00000000-0000-0000-0000-000000000000/00000001-1
images["https://assets.kmart.com.au/transform/.../00000001-1", "..."]
variations[{ "colour": "Blue", "size": "One Size", "price": 12.0, "apn": "0000000000000" }]
description"Sample lead sentence.<br /><br /><strong>Product Details</strong><ul><li><strong>Material:</strong> Cotton</li></ul>"
descriptionText"Sample lead sentence.\nProduct Details:\n- Material: Cotton"
descriptionSummarySample lead sentence.
features["Sample feature", "Another feature"]
specifications{ "Dimensions/Size": "135cm (L) x 68cm (W)", "Material": "Cotton" }
careInstructions["Warm machine wash with similar colours"]
additionalInfo["Warranty: 12 months"]
warnings[{ "label": "Warning", "text": "Sample safety notice." }]
manuals[{ "title": "Instruction Manual", "url": "https://www.kmart.com.au/.../00000001_Manual.pdf" }]
detailSections[{ "heading": "Product Details", "items": ["Material: Cotton"] }]
reviewStats{ "totalReviews": 316, "averageScore": 4.58, "starDistribution": { "5": 222, "4": 64 } }
reviews[{ "rating": 5, "title": "Sample title", "content": "Sample review text.", "author": "Sample R.", "createdAt": "2026-01-01T00:00:00.000Z", "verifiedBuyer": true }]

Product description and details

Every product carries the description Kmart publishes on its product page. It arrives as a hidden field on the same storefront request that already returns the product, so there is no extra product-page visit or per-product request. The existing response is only slightly larger, with no significant runtime or request-count increase.

  • description: the site's own copy, verbatim, HTML and all. Nothing is reworded, summarised, or generated. Use this when you want to reproduce the product page as Kmart wrote it.
  • descriptionText: the same copy as plain text, for search indexes and database columns.
  • descriptionSummary: just the opening paragraph, before the detail lists start.

The rest of the fields are the same string, split along the headings Kmart's own content template uses, so you can put each part where it belongs without parsing HTML yourself:

FieldComes fromShape
featuresthe Features listarray of lines
specificationsthe labelled lines anywhere in the copy (Dimensions/Size, Material, Power source, Warranty, …)object of label → value
careInstructionsthe Care Instructions list, or the Care instructions: linearray of lines
additionalInfothe Additional Information list, plus labelled notes such as Disclaimer:array of lines
warningsinline Warning: / Caution: safety notices, kept separate from each otherarray of { label, text }
manualsany linked document, typically the instruction manual PDFarray of { title, url }
detailSectionsevery heading in the copy, in the order published, including headings not listed above such as Fit and Model Size, Technical specifications, or Ingredientsarray of { heading, items }

detailSections is the complete, un-opinionated view: if Kmart adds a new heading, it appears there rather than being dropped. Any part a product does not publish comes back as null, so an absent section is never confused with an empty one.

In a 400-product sample spanning four departments, all 400 products carried both the original description and the lossless detailSections view. Named fields such as features, specifications, and careInstructions are populated only when the product publishes the corresponding information; an absent section returns null.

How to use

Search for a keyword:

{
"mode": "search",
"searchTerms": ["towel"],
"maxItems": 20
}

Search with sorting and filters:

{
"mode": "search",
"searchTerms": ["towel"],
"sortBy": "price-asc",
"brand": "Anko",
"minPrice": 5,
"maxPrice": 30,
"maxItems": 25
}

Browse a specials collection (Clearance, Catalogue, or Online Exclusives):

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

Discounted products carry wasPrice, savingsAmount, savingsPercent and isOnSpecial. Kmart runs an everyday-low-price model, so a was/original price is shown only when an item is genuinely reduced; otherwise those fields are null and isOnSpecial reflects clearance status. You can also reach a collection in URL mode by pasting its page URL, e.g. https://www.kmart.com.au/category/online-exclusives/.

Search multiple keywords with reviews:

{
"mode": "search",
"searchTerms": ["air fryer", "mug"],
"fetchReviews": true,
"maxReviews": 20,
"maxItems": 40
}

Paste URLs:

{
"mode": "url",
"urls": [
"https://www.kmart.com.au/search/?searchTerm=towel",
"https://www.kmart.com.au/product/sample-bath-towel-00000001/"
],
"maxItems": 30
}

Input parameters

ParameterTypeDefaultDescription
modestringsearchsearch for keywords, url for pasted links.
searchTermsarray["towel"]Keywords to search (search mode).
specialsCategorystringOptional specials collection: clearance, catalogue, or online-exclusives.
sortBystringrelevancerelevance, popular, newest, price-asc, price-desc.
brandstringKeep only this brand (exact facet value).
colourstringKeep only this colour (exact facet value).
categorystringKeep only this category (exact facet value).
includeMarketplacebooleanfalseAlso keep third-party marketplace sellers' products (thousands of extra items). By default only the Kmart, Target and Officeworks ranges are returned. Applies in every mode, including a single pasted product URL, so while it is off a pasted marketplace product URL returns no result.
minPriceintegerKeep products at or above this price.
maxPriceintegerKeep products at or below this price.
urlsarrayProduct, category, or search URLs (url mode).
fetchReviewsbooleantrueAttach reviews and review stats to each product.
maxReviewsinteger20Cap on reviews per product. 0 disables reviews.
maxItemsinteger20Total products to return. 0 = unlimited.
maxPagesinteger0Safety cap on pages per search. 0 = no cap; a run still stops on its own once the storefront's result total is reached or a page repeats.
resumeFromRunIdstringContinue one specific interrupted previous run/dataset: products already collected there are skipped. For recurring daily monitoring of the same search, use Incremental mode instead; see "Resume & recurring updates" below.
incrementalModebooleanfalseDaily/recurring monitoring of this same search, specials collection, or URL set. First run returns everything as NEW; later runs return only NEW/UPDATED/REAPPEARED by default. See "Resume & recurring updates" below.
stateKeystringOptional name for a monitoring campaign, so its incremental state stays stable or is deliberately shared. Auto-derived from your search/filter settings when left empty.
emitUnchangedbooleanfalseIncremental mode only. Also return products unchanged since the last run, marked UNCHANGED. Adds and bills extra rows you already have.
emitExpiredbooleanfalseIncremental mode only. Also return products from a previous run no longer found, marked EXPIRED, once a run has fully scanned the search/URLs (not capped, not a resume). Adds and bills extra synthetic rows.
proxyobjectApify ProxyConnection configuration.
mcpConnectorsarrayOptional MCP connectors to export results into.
notionParentPageUrlstringNotion parent page for the Notion connector.
maxNotifyListingsinteger50Cap on items exported per connector.

Send results into your apps (MCP connectors)

Optionally forward results into the apps you already use. Authorize a connector under Apify then Settings then Integrations, select it in the mcpConnectors input, and set notionParentPageUrl for Notion. Each item is written as a condensed, human-readable summary (a title plus key fields), not the full JSON; nested objects collapse to their main value and arrays trim to a few names. The complete record always stays in the Apify dataset.

Output example

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

{
"kind": "product",
"id": "00000001",
"name": "Sample Bath Towel",
"title": "Sample Brand Sample Bath Towel",
"url": "https://www.kmart.com.au/product/sample-bath-towel-00000001/",
"brand": "Sample Brand",
"apn": "0000000000000",
"description": "Sample lead sentence about the product.<br /><br /><strong>Product Details</strong><ul><li><strong>Dimensions/Size:</strong> 000cm (L) x 00cm (W)</li><li><strong>Material:</strong> Cotton</li></ul><strong>Features</strong><ul><li>Sample feature</li></ul><strong>Care Instructions</strong><ul><li>Warm machine wash with similar colours</li></ul>",
"descriptionText": "Sample lead sentence about the product.\nProduct Details:\n- Dimensions/Size: 000cm (L) x 00cm (W)\n- Material: Cotton\nFeatures:\n- Sample feature\nCare Instructions:\n- Warm machine wash with similar colours",
"descriptionSummary": "Sample lead sentence about the product.",
"features": ["Sample feature"],
"specifications": { "Dimensions/Size": "000cm (L) x 00cm (W)", "Material": "Cotton" },
"careInstructions": ["Warm machine wash with similar colours"],
"additionalInfo": null,
"warnings": null,
"manuals": null,
"detailSections": [
{ "heading": "Product Details", "items": ["Dimensions/Size: 000cm (L) x 00cm (W)", "Material: Cotton"] },
{ "heading": "Features", "items": ["Sample feature"] },
{ "heading": "Care Instructions", "items": ["Warm machine wash with similar colours"] }
],
"price": 8.0,
"listPrice": 8.0,
"promoPrice": 12.0,
"wasPrice": 12.0,
"savingsAmount": 4.0,
"savingsPercent": 33,
"isOnSpecial": true,
"promoLabel": "Clearance",
"variantBadges": ["Clearance"],
"currency": "AUD",
"onSale": false,
"clearance": true,
"freeShipping": false,
"averageRating": 4.6,
"reviewCount": 316,
"colour": "Blue",
"size": "One Size",
"seller": "kmart",
"merchDepartment": "Home",
"inStockNationally": true,
"images": ["https://assets.kmart.com.au/transform/00000000-0000-0000-0000-000000000000/00000001-1"],
"variations": [
{ "colour": "Blue", "size": "One Size", "price": 12.0, "apn": "0000000000000" }
],
"reviewStats": {
"totalReviews": 316,
"averageScore": 4.58,
"starDistribution": { "5": 222, "4": 64, "3": 24, "2": 4, "1": 2 },
"subRatings": { "Value": 5.0, "Quality": 4.0 }
},
"reviews": [
{
"rating": 5,
"title": "Sample title",
"content": "Sample review text.",
"author": "Sample R.",
"createdAt": "2026-01-01T00:00:00.000Z",
"verifiedBuyer": true,
"votesUp": 6,
"votesDown": 0,
"subRatings": { "Value": 5, "Quality": 5 }
}
]
}

Incremental mode only. When incrementalMode is on, every returned record also carries:

FieldDescription
changeTypeNEW | UPDATED | UNCHANGED | REAPPEARED | EXPIRED
changedFieldsTop-level fields that changed since last seen; non-empty only for UPDATED
firstSeenAtWhen this product was first observed by this monitoring campaign
lastSeenAtWhen this product was last observed

Change detection is based on the product itself: price, was/now pricing and specials, stock, brand, colour, size, seller, images, badges, the description and its details, and so on. reviews, reviewStats, averageRating, and reviewCount are deliberately excluded from that comparison. They come from a separate review widget and normally shift between two runs of the same product (a new review, or just a fresh vote count) with nothing about the product having changed, so including them would mark almost every product UPDATED on every run.

If you were already running incremental mode before the description fields existed, your first run after this update does not re-report your whole catalogue as UPDATED just because those fields are new. The run quietly brings each stored product up to date instead, so nothing extra is emitted or charged. The trade-off: with emitUnchanged off, an already-tracked product only delivers its description once it changes for some other reason. To pull the description for an entire existing catalogue in one go, run once with a new stateKey (or with incremental mode off); every product is then reported fresh, with its full copy.

Resume & recurring updates

There are two different things here. Pick the one that matches what you're doing:

NeedUse
A crawl stopped and should continueresumeFromRunId / automatic checkpoint recovery
Run the same search/specials/URLs every day and receive only changesincrementalMode
Keep separate daily campaigns for similar searchesdistinct stateKey values
Run a normal full snapshotleave both off

Resume (resumeFromRunId) continues one specific interrupted or previous large crawl: paste a run ID or dataset ID and this run skips products already collected there, returning only the remaining new products. An automatic same-run checkpoint also protects against platform migrations/Resurrects without any input needed.

Incremental mode (incrementalMode) is for a schedule (for example, daily): the actor remembers the previous run of the same search/specials/URL/filter setup by itself, so you never paste a run ID. The first run returns everything as NEW. Later runs return only NEW, UPDATED, and REAPPEARED products by default; duplicates and unchanged products are suppressed (and not charged). Turn on emitUnchanged or emitExpired only when you also want those rows returned (and billed for). State is isolated per search/specials/URL/filter setup automatically; set stateKey to name or deliberately share a monitoring campaign.

Scheduled-run example, using the same search each day:

Day 1 (first run ever for this search):

{ "mode": "search", "searchTerms": ["towel"], "incrementalMode": true }

→ every product comes back with "changeType": "NEW".

Day 2 (the schedule fires again, identical input):

{ "mode": "search", "searchTerms": ["towel"], "incrementalMode": true }

→ products whose price/specials/stock/etc. changed come back as "changeType": "UPDATED" with changedFields listing what changed, brand-new products come back as "changeType": "NEW", products that vanished and came back come back as "changeType": "REAPPEARED", and products that are still there, unchanged, are not returned at all (suppressed, not charged) unless emitUnchanged is on.

Reviews are still fetched for every scanned product (needed to classify it), but the review-enrichment surcharge is only charged for products that actually reach the dataset. A product suppressed as UNCHANGED is never charged for its reviews.

Plan requirement

Apify Proxy is used by default and works on every plan. Leave proxy enabled for the most reliable results.