# Elgiganten / Elkjøp / Gigantti API — Nordic electronics prices, previous price, Club price, online and per-store stock, GTIN and specifications for Sweden, Denmark, Norway and Finland

> Search the Elkjøp Nordic catalogue (elgiganten.se, elgiganten.dk, elkjop.no, gigantti.fi) by keyword and/or category or brand, with price range, in-stock-online, in-stock-at-a-store, on-sale, seller / marketplace and minimum-rating filters. Each row: sku, GTIN, manufacturer part number, title, brand, URL, image, price incl. and ex. VAT, previous price, discount, Club price, online stock level, number of stores with stock, click & collect, fast delivery, rating, review count, category path, energy class. Plus the source's own total. Either `query`, `category` or `brand` is required.
> ReefAPI engine `elgiganten` · 3 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/elgiganten/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/elgiganten/v1/search — 2 credits
Search the Elkjøp Nordic catalogue (elgiganten.se, elgiganten.dk, elkjop.no, gigantti.fi) by keyword and/or category or brand, with price range, in-stock-online, in-stock-at-a-store, on-sale, seller / marketplace and minimum-rating filters. Each row: sku, GTIN, manufacturer part number, title, brand, URL, image, price incl. and ex. VAT, previous price, discount, Club price, online stock level, number of stores with stock, click & collect, fast delivery, rating, review count, category path, energy class. Plus the source's own total. Either `query`, `category` or `brand` is required.

**Parameters:**
- `country` (enum, optional, default "se") — Which store: se (Elgiganten Sweden), dk (Elgiganten Denmark), no (Elkjøp Norway), fi (Gigantti Finland). Prices come in that country's currency. [one of: se, dk, no, fi]
- `query` (string, optional) — Search words as typed into the site's search box.
- `category` (string, optional) — Category id as a row's category_ids returns it (PT115 = washing machines in every country), or the category name exactly as a row's categories prints it in that country's language (Tvättmaskin). An unknown category returns 0 rows.
- `brand` (string, optional) — Brand exactly as rows print it (Apple, Samsung, LG …). An unknown brand returns 0 rows.
- `min_price` (number, optional) — Lowest price incl. VAT, in the country's currency.
- `max_price` (number, optional) — Highest price incl. VAT, in the country's currency.
- `in_stock` (boolean, optional) — true = only articles in stock for online delivery.
- `store_id` (string, optional) — Only articles in stock at this store (store_id from the `stores` action or a product's store_stock).
- `on_sale` (boolean, optional) — true = only articles priced below their previous price.
- `seller` (string, optional) — Only articles sold by this seller, exactly as rows print it (the chain itself — Elgiganten, Elkjøp, Gigantti — or a marketplace seller).
- `marketplace` (boolean, optional) — true = only marketplace sellers' articles; false = only articles sold by the chain itself.
- `min_rating` (number, optional) — Only articles rated at least this (1-5).
- `page` (integer, optional, default 1) — Result page (the source stops at 1,500 results; see last_page).
- `page_size` (integer, optional, default 24) — Rows per page (1-100).

**Returns:** results[]{sku, article_number, internal_code, manufacturer_part_number, gtin, title, brand, brand_id, url, image, country, currency, price, price_ex_vat, previous_price, previous_price_ex_vat, discount_amount, discount_pct, discount_mismatch, club_price, club_price_ex_vat, in_stock_online, online_stock_level, next_incoming, stores_with_stock_count, collect_at_store, fast_delivery, buyable_online, buyable_in_store, sales_status, rating, review_count, categories[], category_ids[], energy_class, campaign_text, seller, marketplace, release_date, has_variants} + total, page, page_size, last_page, has_more

**Example request body:**
```json
{
  "query": "iphone 16",
  "country": "se"
}
```

### POST https://api.reefapi.com/elgiganten/v1/product — 2 credits
Full catalogue record of one article in one country: title, brand, sku, GTIN, manufacturer part number, price incl. and ex. VAT, previous price (the site's lowest price of the 30 days before a reduction), discount, Club member price when published, online stock level and next incoming date, stock per store with store names, click & collect, fast delivery, sales status, rating and review count, energy class, short description, key selling points, labelled key specifications, payment plans, category path, release date.

**Parameters:**
- `sku` (string, optional) — Article number exactly as a search row returns it in `sku` (usually 6-7 digits, sometimes letters + digits like MEL21445; the last part of the product URL). A product URL of any of the four sites is accepted too.
- `country` (enum, optional, default "se") — Which store: se (Elgiganten Sweden), dk (Elgiganten Denmark), no (Elkjøp Norway), fi (Gigantti Finland). Prices come in that country's currency. [one of: se, dk, no, fi]

**Returns:** {…every search row field, short_description, bullet_points[], specs[]{attribute_id, label, value}, store_stock[]{store_id, store_name, city, listed_store, in_stock, stock_level, on_display}, payment_plans[]{provider, product, installments, per_installment, description} (empty for most articles), energy_scale}

**Example request body:**
```json
{
  "sku": "604300",
  "country": "se"
}
```

### POST https://api.reefapi.com/elgiganten/v1/stores — 1 credit
The chain's stores in one country: store id (the id used by store stock and the store_id filter), name, street, postal code, city, coordinates, store page, click & collect.

**Parameters:**
- `country` (enum, optional, default "se") — Which store: se (Elgiganten Sweden), dk (Elgiganten Denmark), no (Elkjøp Norway), fi (Gigantti Finland). Prices come in that country's currency. [one of: se, dk, no, fi]
- `city` (string, optional) — Only stores whose city or name contains this text.

**Returns:** stores[]{store_id, name, street, postal_code, city, lat, lng, page_url, collect_at_store} + total

**Example request body:**
```json
{
  "country": "dk"
}
```

## 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=elgiganten
- Human docs page: https://reefapi.com/docs/elgiganten
- Overview page: https://reefapi.com/elgiganten-api
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
