Kogan.com Scraper icon

Kogan.com Scraper

Scrape Kogan.com products with full details and customer reviews. Search by keyword or paste category/search URLs across the AU, NZ and US stores.…

Start using this actor on Apify ↗Need a custom scraper?Contact us ↗

Kogan.com Scraper at a glance

Kogan.com Scraper is a ready-to-run Apify actor from abotapi for collecting ecommerce data. Its documented output includes title, brand, price, was/rrp price and discount %, 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
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 Kogan.com products with full details and customer reviews. Search by keyword or paste category/search URLs across the AU, NZ and US stores. Returns price, stock, brand, GTIN, images, ratings, and review text.

What Kogan.com Scraper can do

  • Three regional stores in one actor. Australia (kogan.com/au), New Zealand (/nz) and United States (/us), each with its own currency and catalogue.
  • Two ways to find products. Search by keyword with brand, price-range and sort filters, or paste your own Kogan category and search URLs.
  • Kogan's own deals grids. Browse Hot Deals, Clearance or Smart Savers as a dedicated search target alongside (or instead of) a keyword.
  • Genuine markdown detection. originalPrice, discountPercent and isOnSpecial are filled only when Kogan itself shows a Was, SRP, Don't Pay or RRP reference price next to the current price, never fabricated.
  • Full product detail and reviews on demand. Description, images, category, condition and rating come from the product page; review text, star rating, author and date come from the reviews feed, with a per-product cap you control.
  • Built for recurring monitoring. Incremental mode returns only new and changed products on repeat runs, and a run that could not reach the site fails loudly instead of quietly returning an empty dataset. Read the limits under "Resume and recurring updates" before tracking several keywords or URLs in one run.

Choose what to collect

These inputs let you configure Kogan.com Scraper - Products, Prices, Stock & Reviews. Open the actor on Apify to enter your values and review the current options.

Supported input fields
InputWhat it controls
modestring · requiredChoose 'search' to use keywords and filters, or 'url' to scrape specific Kogan category/search URLs you paste below.

Choices: search, url

queriesarrayOne or more keywords to search, for example 'headphones' or 'air fryer'. Each keyword is searched separately.
storestringWhich Kogan regional store to scrape. Prices, stock and catalogue differ per region.

Choices: au, nz, us

brandstringOptional. Limit results to a single brand, for example 'Kogan' or 'Samsung'. Type it however you like: the actor normalizes the spelling for you. Confirmed for single-word brand names. Multi-word brands such as 'Gorilla Gaming' are not confirmed to narrow, so search those by keyword instead.
sortBystringResult ordering. Note: Kogan inserts some promoted items regardless of sort.

Choices: relevance, price_asc, price_desc, newest, rating

specialsCategorystringOptional. Browse one of Kogan's own deals grids instead of (or alongside) a keyword search. Adds this as an extra search target; brand/sort filters don't apply to it. Each product also gets originalPrice/discountPercent/isOnSpecial fields when Kogan itself shows a Was/SRP/Don't Pay/RRP reference price.

Choices: , hot-deals, clearance, smart-savers

urlsarrayCategory or search URLs to scrape, for example https://www.kogan.com/au/shop/?q=air+fryer or https://www.kogan.com/au/c/smart-tvs/. Multiple URLs supported.
Show 16 more inputs
More input fields
InputWhat it controls
minPriceintegerOptional. Only keep products priced at or above this amount (in the store's currency). Applied to each product's price.
maxPriceintegerOptional. Only keep products priced at or below this amount (in the store's currency).
fetchDetailsbooleanOpen each product page for full description, all images, category, condition, average rating and rating count. Adds one request per product.
fetchReviewsbooleanAlso collect customer reviews for each product (review text, star rating, author, date). Adds requests per product.
maxReviewsPerProductintegerCap on reviews collected per product when 'Fetch customer reviews' is on (1 to 500). Higher values are capped at 500, and 0 or blank (which used to mean all reviews) now means the 500 maximum.
maxItemsintegerMaximum number of products to return across the whole run. Use 0 for unlimited.
maxPagesintegerOptional safety cap on result pages walked per keyword/URL/specials category. Use 0 to walk every page; the run still stops automatically once Max products is reached, a page repeats with no new products, or the store's own result total is reached.
resumeFromRunIdstringOptional. 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. For recurring daily/weekly monitoring of the same search, use Incremental mode below instead.
incrementalModebooleanTurn this on for daily or recurring monitoring. The first run returns all matching products as NEW. Later runs normally return only NEW, UPDATED and REAPPEARED products. Turn on 'Emit unchanged' or 'Emit expired' only when you also want those products returned (and billed). State is kept separately per keyword/URL/store/brand/price-range/specials-category/detail+review setup; use State key when you want to name or deliberately share a monitoring campaign. To continue one specific interrupted run instead, use Resume from a previous run above.
stateKeystringOptional. Name this monitoring campaign to keep its state stable, or to deliberately share state across differently-configured runs. Leave empty to let the actor derive a key automatically from the keyword/URL, store, brand, price range, sort, specials category and detail/review settings -- different searches then never mix state with each other.
emitUnchangedbooleanOff by default. Turn on to also return products that have not changed since the last run, marked UNCHANGED. This returns -- and bills -- extra rows you already have, so leave it off unless you specifically want the full snapshot every run.
emitExpiredbooleanOff by default. Turn on to also return products that were present in a previous run but are no longer found, marked EXPIRED. Only produced once a run has fully scanned the tracked search -- not when Max products capped it, Max pages cut a walk short, or Resume was used. This returns -- and bills -- extra synthetic rows, so leave it off unless you need expiry tracking.
ignoreFieldsForChangesarrayOptional. Field names that must not make a product count as UPDATED, e.g. 'averageRating', 'ratingCount', 'reviewCount' or 'availability'. Use the top-level field names of the output. The fields are still returned in the output; they just do not trigger a change. Adding or removing a name never causes a wave of UPDATED rows by itself.
mcpConnectorsarrayOptionally send results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify, Settings, API & Integrations, then select it here. Notion gets a rich page-per-item export; other connectors get a best-effort write/digest. Leave empty to skip; never changes the dataset output. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com).
notionParentPageUrlstringURL or id of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors.
maxNotifyListingsintegerCap 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.

titleTitle
brandBrand
pricePrice
originalPriceWas/RRP price
discountPercentDiscount %
isOnSpecialOn special
currencyCurrency
availabilityAvailability
averageRatingRating
ratingCountRatings
reviewCountReviews
skuSKU
Show 20 more fields
gtinGTIN
categoryCategory
specialsCategorySpecials category
changeTypeChange type (incremental mode)
changedFieldsChanged fields (incremental mode) (array)
firstSeenAtFirst seen (incremental mode) (date)
lastSeenAtLast seen (incremental mode) (date)
imageImage (image)
urlURL (link)
productIdProduct ID
priceMaxMax price
originalPriceLabelWas/RRP label
discountAmountDiscount amount
conditionCondition
descriptionDescription
imagesImages (array)
storeStore
positionPosition
searchModeSearch mode
reviewsReview list (array)

Example output

An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.

{
  "store": "au",
  "url": "https://www.kogan.com/au/buy/sample-product-slug-000000/",
  "title": "Sample 55 inch 4K Smart TV",
  "brand": "Kogan",
  "sku": "ABC-000000",
  "gtin": "0000000000000",
  "price": 499,
  "priceMax": 549,
  "originalPrice": 699,
  "originalPriceLabel": "Was",
  "discountAmount": 200,
  "discountPercent": 28.6,
  "isOnSpecial": true,
  "specialsCategory": "clearance",
  "currency": "AUD",
  "availability": "InStock",
  "category": "TVs",
  "condition": "New",
  "description": "Full product description text appears here when details are fetched.",
  "image": "https://assets.kogan.com/images/sample/000000/1-000000.jpg",
  "images": [
    "https://assets.kogan.com/images/sample/000000/1-000000.jpg"
  ],
  "averageRating": 4.8,
  "ratingCount": 166,
  "productId": "000000000",
  "position": 3,
  "searchMode": "search",
  "reviewCount": 1,
  "reviews": [
    {
      "reviewId": 0,
      "author": "Sample Reviewer",
      "rating": 10,
      "stars": 5,
      "comment": "Great value for the price.",
      "reviewerType": "kogan",
      "reviewDate": "2026-01-01T00:00:00",
      "isK1Member": null,
      "helpfulCount": 0
    }
  ]
}

Ways to use this data

  • Price trackers and deal hunters: watch Hot Deals, Clearance and Smart Savers for markdowns, then alert on a genuine price drop.
  • Comparison shopping sites: pull price, brand, stock and rating across the AU, NZ and US stores to power a comparison listing.
  • Brand and reseller monitoring: track how a specific brand's products are priced, stocked and reviewed on Kogan over time.
  • Customer sentiment analysis: collect review text, star ratings and reviewer type to gauge how buyers feel about specific products.
  • Catalogue and stock monitoring: schedule recurring runs that surface new listings, price changes and delistings without re-collecting everything each time.

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 Kogan.com Scraper return?

The documented output for Kogan.com Scraper includes title, brand, price, was/rrp price, discount %, on special, currency and availability. Availability of each field depends on the source page and the selected mode.

How much does Kogan.com 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.

Can I get only new or changed products on a schedule?

Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new and updated products (plus reappeared ones once Emit expired has been on), and unchanged ones are not billed unless you ask for them.

What is the difference between Resume and Incremental mode?

Resume (resumeFromRunId) continues one specific interrupted run from a pasted run or dataset ID; it is a one-off delta, and it restarts each search from its first page (see its limitation above). Incremental mode remembers the search itself, run after run, so you never have to paste an ID; each scheduled run reports what changed since the last one.

Why are some products missing, or marked EXPIRED while still on Kogan?

Two known limitations, described under "Pagination and page caps" and "Resume and recurring updates". First, when one run covers several keywords, URLs or a specials category, a later one stops as soon as a page holds only products an earlier one already returned, so its deeper pages are skipped. Second, a results page that fails to load is treated as the end of that search. With Emit expired on, products the run did not reach for either reason are marked EXPIRED even though they are still listed, and come back as REAPPEARED on a later run. Run overlapping keywords or URLs as separate runs, and treat EXPIRED as "not seen this run" rather than proof of delisting.

Why did my run fail instead of returning an empty dataset?

If not one request could be read from the site, the run stops with a clear message so "no products matched" is never confused with "nothing could be read". Run it again in a few minutes. If only some keywords or URLs could be read, you still get what was found.

Ready to collect with Kogan.com Scraper?

Run it on Apify with your own input and export the results as JSON, CSV or Excel.