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

4

Total users

1

Monthly active users

8 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: 30+ fields per product, including canonical title, was/now pricing, variations, images, and category.
  • 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" }]
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 }]

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.
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.
maxPagesinteger100Safety cap on pages walked per search.
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",
"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, and so on. reviews, reviewStats, averageRating, and reviewCount are deliberately excluded from that comparison: they come from a separate review widget (foreign to the product) 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.

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 — same search, run daily:

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.