Kmart Australia Scraper – Products, Prices & Reviews
Pricing
from $1.50 / 1,000 products
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
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
1
Monthly active users
8 days ago
Last modified
Categories
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 (
includeMarketplaceopts in; marketplace records carryisMarketplace: 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.
| Field | Example |
|---|---|
| id | 00000001 |
| name | Sample Bath Towel |
| title | Sample Brand Sample Bath Towel |
| brand | Sample Brand |
| price | 8.0 |
| wasPrice | 12.0 |
| savingsAmount | 4.0 |
| savingsPercent | 33 |
| isOnSpecial | true |
| promoLabel | Clearance |
| listPrice | 8.0 |
| promoPrice | 12.0 |
| currency | AUD |
| onSale | false |
| clearance | true |
| averageRating | 4.6 |
| reviewCount | 316 |
| colour | Blue |
| size | One Size |
| seller | kmart |
| isMarketplace | false |
| merchDepartment | Home |
| primaryCategoryId | 00000 |
| inStockNationally | true |
| url | https://www.kmart.com.au/product/sample-bath-towel-00000001/ |
| image | https://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
| Parameter | Type | Default | Description |
|---|---|---|---|
| mode | string | search | search for keywords, url for pasted links. |
| searchTerms | array | ["towel"] | Keywords to search (search mode). |
| specialsCategory | string | Optional specials collection: clearance, catalogue, or online-exclusives. | |
| sortBy | string | relevance | relevance, popular, newest, price-asc, price-desc. |
| brand | string | Keep only this brand (exact facet value). | |
| colour | string | Keep only this colour (exact facet value). | |
| category | string | Keep only this category (exact facet value). | |
| includeMarketplace | boolean | false | Also keep third-party marketplace sellers' products (thousands of extra items). By default only the Kmart, Target and Officeworks ranges are returned. |
| minPrice | integer | Keep products at or above this price. | |
| maxPrice | integer | Keep products at or below this price. | |
| urls | array | Product, category, or search URLs (url mode). | |
| fetchReviews | boolean | true | Attach reviews and review stats to each product. |
| maxReviews | integer | 20 | Cap on reviews per product. 0 disables reviews. |
| maxItems | integer | 20 | Total products to return. 0 = unlimited. |
| maxPages | integer | 100 | Safety cap on pages walked per search. |
| resumeFromRunId | string | Continue 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. | |
| incrementalMode | boolean | false | Daily/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. |
| stateKey | string | Optional 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. | |
| emitUnchanged | boolean | false | Incremental mode only. Also return products unchanged since the last run, marked UNCHANGED. Adds and bills extra rows you already have. |
| emitExpired | boolean | false | Incremental 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. |
| proxy | object | Apify Proxy | Connection configuration. |
| mcpConnectors | array | Optional MCP connectors to export results into. | |
| notionParentPageUrl | string | Notion parent page for the Notion connector. | |
| maxNotifyListings | integer | 50 | Cap 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:
| Field | Description |
|---|---|
changeType | NEW | UPDATED | UNCHANGED | REAPPEARED | EXPIRED |
changedFields | Top-level fields that changed since last seen; non-empty only for UPDATED |
firstSeenAt | When this product was first observed by this monitoring campaign |
lastSeenAt | When 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:
| Need | Use |
|---|---|
| A crawl stopped and should continue | resumeFromRunId / automatic checkpoint recovery |
| Run the same search/specials/URLs every day and receive only changes | incrementalMode |
| Keep separate daily campaigns for similar searches | distinct stateKey values |
| Run a normal full snapshot | leave 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.