# Komplett Product Search Scraper (`soft_alexist/komplett-product-search-scraper`) Actor

Scrape product listings from Komplett.no search results instantly. Collect 16+ product fields including prices, stock levels, ratings, images, and manufacturer details — perfect for price monitoring, market research, and competitive intelligence.

- **URL**: https://apify.com/soft\_alexist/komplett-product-search-scraper.md
- **Developed by:** [Soft Alexist](https://apify.com/soft_alexist) (community)
- **Categories:** Automation, Developer tools, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-usage

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Komplett Product Search Scraper: Extract Norwegian E-Commerce Data at Scale

***

### What Is Komplett.no?

Komplett.no is Norway's leading electronics and technology e-commerce platform, offering thousands of products across categories like computing, mobile devices, gaming, and peripherals. With daily price changes and product updates, staying informed on Komplett's inventory and pricing is essential for resellers, price comparison sites, and market researchers. Manual product scraping is inefficient and error-prone — the **Komplett Product Search Scraper** automates extraction of detailed product data directly from search results.

***

### Overview

The **Komplett Product Search Scraper** extracts product listings from Komplett.no search result pages, transforming raw e-commerce data into structured, machine-readable records. It is ideal for:

- **Price monitoring platforms** tracking Komplett's competitive pricing
- **Resellers & dropshippers** sourcing products and managing inventory
- **Market researchers** analyzing Nordic tech product trends
- **Affiliate marketers** building product databases for content generation
- **E-commerce aggregators** integrating Komplett inventory into multi-channel platforms

The scraper supports batch processing with configurable item limits, automatic failure recovery, and comprehensive product metadata extraction.

***

### Input Format

The scraper accepts a JSON configuration object with the following parameters:

```json
{
  "urls": [
    "https://www.komplett.no/search?q=mobile&list_view=list"
  ],
  "max_items_per_url": 200,
  "ignore_url_failures": true
}
```

#### Input Parameters Explained

| Parameter | Type | Description | Example |
|---|---|---|---|
| `urls` | Array | Direct links to Komplett search results or category pages | `["https://www.komplett.no/search?q=mobile&list_view=list"]` |
| `max_items_per_url` | Integer | Maximum products to extract per URL (1–200) | `200` |
| `ignore_url_failures` | Boolean | If `true`, scraper continues if a URL fails; if `false`, it halts | `true` |

**URL Guidelines:**

- Use direct search URLs (e.g., `search?q=keyword`)
- Category pages work well (e.g., `/category/...`)
- List view (`list_view=list`) is recommended for stable extraction
- Pagination is handled automatically up to `max_items_per_url`

**Best Practices:**

- Start with `max_items_per_url: 100` and increase after testing
- Always enable `ignore_url_failures: true` for large batch runs
- Use 2–5 seed URLs per scrape to avoid timeouts

***

### Output Format

**Example Output Row:**

```json
{
  "store_id": "310",
  "material_number": "1300717",
  "manufacturer_part_number": "EP-T2510NBEGEU",
  "name": "Samsung T2510N GaN 25W Vegglader (sort)",
  "description": "USB-C hurtiglader, null standby strømforbruk, bred kompatibilitet, uten kabel",
  "sticker": {
    "open_in_new_window": false
  },
  "url": "/product/1300717/mobil-tablets-klokker/tilbehoer-til-mobil-tablets-klokker/mobiltilbehoer/mobilladere/samsung-t2510n-gan-25w-vegglader-sort",
  "stock": {
    "availability_status": "Stocked",
    "availability_quantity": "20+",
    "stock_icon_color": "green",
    "availability_text": "20+ stk. på lager.",
    "is_pending_release": false,
    "show_stock_status": true
  },
  "price": {
    "list_price": "196,-",
    "list_price_number": 196.0,
    "discount_number": 0.0,
    "monthly_price_duration": 0,
    "monthly_discount_type": "NoDiscount",
    "is_applicable_for_leasing": false,
    "price_is_excluding_vat": false,
    "point_benefit": false,
    "tax_rate": 25.0,
    "is_loyalty_price": false,
    "hide_flex_price": false,
    "list_price_ex_vat": 156.8,
    "discount_ex_vat": 0.0
  },
  "variant_groups": [
    {
      "type": "COLOR",
      "name": "Farge",
      "products": [
        {
          "material_number": "1300717",
          "value": "#353535",
          "display_value": "Sort",
          "url": "/product/1300717"
        },
        {
          "material_number": "1300718",
          "value": "#F7F7F7",
          "display_value": "Hvit",
          "url": "/product/1300718"
        }
      ],
      "group_by_in_listing": false
    }
  ],
  "review_rating": {
    "review_count": 57,
    "review_rating": 4.7368
  },
  "energy_logo": {
    "energy_grade_letter": "",
    "legacy_energy_logo_icon": "0-0",
    "is_legacy_energy_logo": true,
    "url_to_technical_specification": "",
    "url_to_details": ""
  },
  "button": "None",
  "images": [
    "1300717_01.jpg",
    "1300717_02.jpg",
    "1300717_03.jpg",
    "1300717_04.jpg"
  ],
  "product_images": [
    {
      "url": "product-media/b2c/en-us",
      "alt_text": "",
      "file_name": "1300717.jpg",
      "width": 2272,
      "height": 1515
    },
    {
      "url": "product-media/b2c/en-us",
      "alt_text": "",
      "file_name": "1300717_1.jpg",
      "width": 2272,
      "height": 1515
    },
    {
      "url": "product-media/b2c/en-us",
      "alt_text": "",
      "file_name": "1300717_2.jpg",
      "width": 2272,
      "height": 1515
    },
    {
      "url": "product-media/b2c/en-us",
      "alt_text": "",
      "file_name": "1300717_3.jpg",
      "width": 2272,
      "height": 1515
    }
  ],
  "product_box_visibility": {
    "hide_on_tablet": false,
    "hide_on_mobile": false,
    "hide_on_desktop": false
  },
  "from_url": "https://www.komplett.no/search?q=mobile&list_view=list"
}
```

Each scraped product returns a structured record with 16 fields, providing complete product intelligence:

#### Product Identification

| Field | Meaning | Example |
|---|---|---|
| `Store ID` | Komplett's internal product/store reference number | `12345678` |
| `Material Number` | Komplett's SKU or material code for inventory tracking | `KOM-0012345` |
| `Manufacturer Part Number` | Original manufacturer/brand part number | `SM-G991B` |
| `Name` | Product title as displayed on Komplett | `Samsung Galaxy S21 5G 256GB` |

#### Product Details & Content

| Field | Meaning | Example |
|---|---|---|
| `Description` | Short product summary or tagline | `Flagship 5G smartphone with 120Hz display` |
| `Sticker` | Promotional labels (e.g., "New", "Sale", "Best seller") | `["New", "In stock"]` |
| `URL` | Direct link to the product detail page | `https://www.komplett.no/product/1234567/...` |

#### Inventory & Pricing

| Field | Meaning | Example |
|---|---|---|
| `Stock` | Current stock/availability status (in stock, low stock, out of stock) | `In stock (15 units)` |
| `Price` | Current price in Norwegian Krone (NOK) | `7999.00` |

#### Product Variants & Options

| Field | Meaning | Example |
|---|---|---|
| `Variant Groups` | Available product variations (color, storage, etc.) | `["Color: Black, White, Silver", "Storage: 128GB, 256GB"]` |

#### Customer & Marketing Data

| Field | Meaning | Example |
|---|---|---|
| `Review Rating` | Average customer rating (typically 0–5 stars) | `4.7` |
| `Energy Logo` | EU energy efficiency certification (if applicable) | `A++` |
| `Button` | Call-to-action button state or label | `Add to Cart` |

#### Media & Visual Assets

| Field | Meaning | Example |
|---|---|---|
| `Images` | All image URLs associated with the product | `["https://cdn.komplett.no/image1.jpg", "..."]` |
| `Product Images` | Primary product photos (clean URLs) | `["https://cdn.komplett.no/product-main.jpg"]` |
| `Product Box Visibility` | Whether product packaging images are visible | `true` |

***

### How to Use

1. **Prepare URLs** — Visit Komplett.no, use the search bar or browse categories. Copy the full URL from the browser address bar. Use list view for best results.

2. **Set configuration** — Populate the input JSON with your URLs. Adjust `max_items_per_url` (recommended: 100–200).

3. **Enable failure recovery** — Set `ignore_url_failures: true` to ensure large runs complete even if one URL times out.

4. **Run the scraper** — Start the actor via the Apify platform or API. Monitor the run log in real-time.

5. **Export data** — Download results as JSON, CSV, or Excel. Integrate into your database, spreadsheet, or BI tool.

**Troubleshooting:**

- **No results returned:** Verify the URL loads in a browser and contains products. Try removing filters.
- **Timeouts on large URLs:** Reduce `max_items_per_url` to 50–75 and run multiple jobs in parallel.
- **Missing price data:** Some products may have dynamic pricing; refresh the run or check manually.

***

### Use Cases & Business Value

- **Price monitoring:** Track Komplett's pricing vs. competitors to optimize your e-commerce strategy
- **Inventory aggregation:** Build a centralized product database across multiple retailers
- **Market analysis:** Identify trending products, new launches, and category gaps in the Nordic tech market
- **Affiliate marketing:** Scrape product data to fuel blog posts, comparison tables, and review sites
- **Competitor intelligence:** Monitor competitor pricing, promotions, and stock levels in real time

Extracting this data manually would take weeks; the Komplett Product Search Scraper delivers it in minutes, enabling faster decision-making and better market positioning.

***

### Conclusion

The **Komplett Product Search Scraper** streamlines data collection from Norway's leading tech retailer. With detailed extraction of 16+ product fields—from pricing and stock to images and ratings—it empowers resellers, aggregators, and researchers to stay competitive. Automate your Komplett data workflows today and unlock actionable market insights.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the product list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "urls": [
    "https://www.komplett.no/search?q=mobile&list_view=list"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 100
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "urls": [
        "https://www.komplett.no/search?q=mobile&list_view=list"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("soft_alexist/komplett-product-search-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "urls": ["https://www.komplett.no/search?q=mobile&list_view=list"],
    "ignore_url_failures": True,
    "max_items_per_url": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("soft_alexist/komplett-product-search-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "urls": [
    "https://www.komplett.no/search?q=mobile&list_view=list"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 100
}' |
apify call soft_alexist/komplett-product-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,soft_alexist/komplett-product-search-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/Cw3KdEmVT15y8f1qA/builds/KsndLisza3XtUGG7D/openapi.json
