# Kogan.com API — Australia & New Zealand: search products, prices with was-price and Kogan FIRST member price, stock, dispatch, Marketplace seller, specs and reviews

> Search kogan.com (Australia or New Zealand store) by keywords and/or category, with brand, seller (Kogan.com only), price range and sort. Every row carries the price a logged-out shopper sees, the struck-through "was" price, the Kogan FIRST member price, stock and pre-sale flags, the dispatch promise, the seller (Kogan.com or the Marketplace seller's name), brand, rating and review count, and `is_sponsored`. The answer also returns the site's facets with counts (brands, categories, price ranges, attribute filters). Needs `query` or `category` (or both). Kogan publishes no reliable total: page with `page` until `has_more` is false.
> ReefAPI engine `kogan` · 3 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/kogan/v1/<action>` with a JSON body.
- **Auth:** header `x-api-key: <YOUR_REEFAPI_KEY>` — create one free (1,000 credits, no card): https://reefapi.com/signup
- **Response (every call):** `{ ok: boolean, data: ..., meta: { record_count, credits, ... }, error: { code, message } }` — branch on `ok`. Failed calls are free except verified SHEIN NOT_FOUND on product/detail and price (4 credits).
- **One key + one shared credit pool** across every ReefAPI API. Per-call credits are listed on each endpoint below.
- **Use it from an AI agent (MCP):** connect `https://api.reefapi.com/mcp` (remote streamable-http). Send the key as `Authorization: Bearer <key>`, or put it in the URL (`?key=<key>`) when the client has no header field, as ChatGPT does.

## Endpoints

### POST https://api.reefapi.com/kogan/v1/search — 2 credits
Search kogan.com (Australia or New Zealand store) by keywords and/or category, with brand, seller (Kogan.com only), price range and sort. Every row carries the price a logged-out shopper sees, the struck-through "was" price, the Kogan FIRST member price, stock and pre-sale flags, the dispatch promise, the seller (Kogan.com or the Marketplace seller's name), brand, rating and review count, and `is_sponsored`. The answer also returns the site's facets with counts (brands, categories, price ranges, attribute filters). Needs `query` or `category` (or both). Kogan publishes no reliable total: page with `page` until `has_more` is false.

**Parameters:**
- `query` (string, optional) — Search words as typed in Kogan's search box (`office chair`, `65 inch tv`, `air fryer`). Kogan may map the words to one of its categories — the answer says how in `interpreted_as`. Provide query OR category (or both).
- `category` (string, optional) — A Kogan category slug, as in its category URLs after `/shop/category/` (`office-chairs`, `home-entertainment-3762/led-tv`, `computerstablets-networking-laptops-38644`) or a `facets.categories[].value` of a previous answer.
- `brand` (string, optional) — One brand slug, as listed in `facets.brands[].value` of a previous answer (`ergolux`, `apple`, `dell`, `samsung`). A slug Kogan does not know answers an empty list with a warning.
- `sold_by` (enum, optional, default "any") — `kogan` = only items sold by Kogan.com itself (no Marketplace sellers). [one of: any, kogan]
- `min_price` (number, optional) — Lowest price, in the store's currency (GST included).
- `max_price` (number, optional) — Highest price, in the store's currency (GST included). Sponsored rows the site injects are not price-filtered by Kogan — see `exclude_sponsored`.
- `sort` (enum, optional, default "featured") — Result order. [one of: featured, newest, price_asc, price_desc]
- `page` (integer, optional, default 1) — Result page, 36 organic rows a page (page 1 of the featured order can add up to 6 sponsored rows). A page past the end answers 0 rows with has_more false.
- `store` (enum, optional, default "au") — Kogan storefront. `au` = kogan.com/au (AUD), `nz` = kogan.com/nz (NZD). Product ids and slugs belong to one store. [one of: au, nz]
- `exclude_sponsored` (boolean, optional, default false) — Drop the sponsored rows Kogan injects into page 1 (they ignore the price filter). Their number is still reported in `sponsored_rows`.

**Returns:** results[]{position, product_id, slug, sku, gtin, title, brand, url, image, price, was_price, was_price_text, discount_pct, kogan_first_price, future_price, future_kogan_first_price, future_price_date, price_note, member_benefit, currency, rating (0-5), review_count, in_stock, is_sold_out, is_presale, is_coming_soon, is_international_stock, free_shipping, dispatch, seller{is_marketplace, name, slug, disclaimer}, categories[], badges[], promo, is_sponsored} + page + has_more + title + interpreted_as{category, keywords} + breadcrumbs[] + facets{brands[], categories[], price_ranges[], other[]} + sponsored_rows

**Example request body:**
```json
{
  "query": "office chair"
}
```

### POST https://api.reefapi.com/kogan/v1/product — 2 credits
One kogan.com product: title, brand, SKU, GTIN, images, description, what's in the box, the full specification table, prices (logged-out price, "was" price and saving, Kogan FIRST member price with its free-shipping flag and reward, scheduled future price), price type (Full / Presale / …), stock, dispatch date, condition, the seller (Kogan.com or the Marketplace seller), variants with their own price and stock, warranty and returns text, the rating distribution and the first page of reviews.

**Parameters:**
- `slug` (string, optional) — The product slug — the part of a product URL after `/buy/` (kogan.com/au/buy/<slug>/). Returned by `search` as `slug`. Provide slug OR url.
- `url` (string, optional) — A kogan.com product URL (/au/buy/… or /nz/buy/…); its store wins over `store`.
- `store` (enum, optional, default "au") — Kogan storefront. `au` = kogan.com/au (AUD), `nz` = kogan.com/nz (NZD). Product ids and slugs belong to one store. [one of: au, nz]

**Returns:** product{product_id, slug, sku, gtin, title, brand, brand_url, url, image, images[], price, was_price, discount_pct, saving, price_type, kogan_first{price, price_saving, free_shipping, reward_amount, member_exclusive}, future_price, future_price_date, price_note, currency, in_stock, unavailable, is_presale, condition, fast_dispatch, ships_by, dispatch, free_shipping, seller{is_marketplace, name, slug}, description, in_the_box[], features[], specifications[]{group, name, value, unit}, warranty_and_returns, breadcrumbs[], variants[]{group, value, slug, url, selected, price, kogan_first_price, in_stock}, qantas_points, finance_options[], rating, review_count, reviews_summary{count, average_rating, distribution}, reviews_preview[]}

**Example request body:**
```json
{
  "slug": "ergolux-plus-ergonomic-mesh-office-chair-with-footrest-black-ergolux"
}
```

### POST https://api.reefapi.com/kogan/v1/reviews — 1 credit
Customer reviews of one Kogan product, 5 per page, newest first as Kogan lists them: star rating, text, reviewer display name, date, whether the reviewer is a Kogan FIRST member, the variant reviewed, helpful votes — plus the product's review count, average and star distribution. Page with `cursor` = the previous `next_cursor`.

**Parameters:**
- `product_id` (integer, required) — Kogan's numeric product id — `product_id` of a `search` row or of `product`.
- `cursor` (string, optional) — `next_cursor` of the previous reviews page; omit for the first page.
- `store` (enum, optional, default "au") — Kogan storefront. `au` = kogan.com/au (AUD), `nz` = kogan.com/nz (NZD). Product ids and slugs belong to one store. [one of: au, nz]

**Returns:** reviews[]{review_id, stars (0-5), rating_raw_out_of_10, comment, reviewer_name, reviewer_type, date, is_kogan_first_member, helpful_count, variant[]{name, value}, disclaimer} + count + average_rating + distribution{5..1} + next_cursor + has_more

**Example request body:**
```json
{
  "product_id": 329279277
}
```

## At scale
- **Volume:** 5M+ requests a day, measured at 60 requests a second across the fleet with no
  central bottleneck. Per-key limits are raised for high-volume accounts; volume pricing on request.
- **Missing a source:** tell us a site we do not cover and it becomes an engine. A customer asked
  for bestprice.gr on 21 Sep 2026 and it was in the catalog on 22 Sep.
- **Support:** 2 minute median time from a question in the live chat to the first answer. Setup
  help included, no support tier to buy.
- **One key, one credit pool** across every API. No per-site plans, no separate subscriptions.

## More
- Try it live, no code: https://reefapi.com/playground?engine=kogan
- Human docs page: https://reefapi.com/docs/kogan
- Overview page: https://reefapi.com/kogan-api
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
