# Karkkainen Product Search Scraper (`stealth_mode/karkkainen-product-search-scraper`) Actor

Scrape product listings from Karkkainen.com search results effortlessly. Collect product names, prices, SKUs, descriptions, ratings, variants, and 15+ additional fields — perfect for price monitoring, inventory analysis, and competitive research.

- **URL**: https://apify.com/stealth\_mode/karkkainen-product-search-scraper.md
- **Developed by:** [Stealth mode](https://apify.com/stealth_mode) (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

from $2.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## 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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use 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

## Karkkainen Product Search Scraper: Extract E-Commerce Inventory Data

---

### What Is Karkkainen.com?

Karkkainen.com is a major Finnish online retailer specializing in clothing, outdoor gear, sports equipment, and lifestyle products. With thousands of SKUs across multiple categories, the platform provides rich product data including pricing, inventory status, variants, and customer ratings. Manually extracting this data from search result pages is labor-intensive — the **Karkkainen Product Search Scraper** automates the collection process, delivering structured product intelligence at scale.

---

### Overview

The **Karkkainen Product Search Scraper** extracts product listings from Karkkainen search result pages, transforming unstructured web content into clean, actionable data. It is ideal for:

- **E-commerce analysts** monitoring product assortments and pricing strategies
- **Price comparison platforms** aggregating Karkkainen inventory
- **Market researchers** studying Nordic retail trends
- **Retailers** tracking competitor SKU catalogs and product attributes
- **Inventory managers** integrating product data into stock management systems

Key strengths include batch processing multiple search URLs, extracting comprehensive product metadata (20+ fields), handling product variants and grouping properties, and graceful error recovery via `ignore_url_failures`.

---

### Input Format

The scraper accepts a JSON configuration specifying search URLs and collection parameters:

```json
{
  "urls": [
    "https://www.karkkainen.com/verkkokauppa/naisten-pukeutuminen?offset=60"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 200
}
````

| Parameter | Type | Description |
|---|---|---|
| `urls` | Array (string) | Direct links to Karkkainen product search result pages. You can add category pages, filtered searches (e.g., by price, brand), or paginated results using the `offset` parameter. |
| `ignore_url_failures` | Boolean | If `true`, the scraper continues if a URL fails to load. If `false`, the entire run stops on the first failure. Recommended: `true` for bulk operations. |
| `max_items_per_url` | Integer | Maximum products collected per URL (e.g., `200`). Useful for limiting API usage or controlling dataset size. |

**Example URLs:**

- `https://www.karkkainen.com/verkkokauppa/naisten-pukeutuminen` — Women's clothing category
- `https://www.karkkainen.com/verkkokauppa/miesten-pukeutuminen?offset=60` — Men's clothing, page 2
- Filtered searches with price ranges, brands, or availability filters

***

### Output Format

**Sample output record:**

```json
{
  "id": "1533034509",
  "name": "Rieker  43850 naisten ballerinat",
  "manufacturer": null,
  "short_description": "",
  "buyable": "true",
  "has_single_sku": null,
  "thumbnail": "https://img.karkkainen.com/images/e_trim:4/c_pad%2Cf_auto%2Ch_80%2Cq_auto%2Cw_80/v1/tuotekuvat/4066707997056_1/rieker-43850-naisten-ballerinat.jpg",
  "part_number": "P1694789373189386",
  "categories": [
    {
      "levl3": "Pukeutuminen > Naiset > Kengät > Avokkaat"
    },
    {
      "levl3": "Pukeutuminen > Naiset > Kengät > Ballerinat"
    },
    {
      "levl3": "Ajankohtaista > Vaate ALE > Naisten Vaate ALE > Naisten kengät ALE"
    },
    {
      "levl4": "Ajankohtaista > Kampanjat > Kampanjatuotteet > Pukeutuminen > Naisten vaatteet"
    },
    {
      "levl3": "Ajankohtaista > Kampanjat > Kampanjatuotteet > Pukeutuminen"
    },
    {
      "levl5": "Ajankohtaista > Kampanjat > Kampanjatuotteet > Pukeutuminen > Naisten vaatteet > Naisten kengät"
    },
    {
      "levl2": "Pukeutuminen > Naiset > Kengät"
    },
    {
      "levl1": "Ajankohtaista > Vaate ALE"
    },
    {
      "levl0": "Pukeutuminen"
    },
    {
      "levl1": "Ajankohtaista > Kampanjat"
    },
    {
      "levl0": "Ajankohtaista"
    },
    {
      "levl2": "Ajankohtaista > Vaate ALE > Naisten Vaate ALE"
    },
    {
      "levl2": "Ajankohtaista > Kampanjat > Kampanjatuotteet"
    },
    {
      "levl1": "Pukeutuminen > Naiset"
    }
  ],
  "items": [
    {
      "part_number": "304149043",
      "id": "1533035009",
      "name": "Rieker  43850 naisten ballerinat",
      "thumbnail": "https://img.karkkainen.com/images/e_trim:4/c_pad,f_auto,h_80,q_auto,w_80/v1/tuotekuvat/4066707997056/rieker-43850-01-36-n-kengat.jpg",
      "price": [
        {
          "usage": "Offer",
          "value": 52.43,
          "description": "I",
          "currency": null
        },
        {
          "usage": "Display",
          "value": 74.9,
          "description": "L",
          "currency": null
        }
      ],
      "bottle_deposit": 0,
      "content_uom": "kpl",
      "content_qty": "0"
    },
    {
      "part_number": "304149049",
      "id": "1533035030",
      "name": "Rieker  43850 naisten ballerinat",
      "thumbnail": "https://img.karkkainen.com/images/e_trim:4/c_pad,f_auto,h_80,q_auto,w_80/v1/tuotekuvat/4066707997056/rieker-43850-01-39-n-kengat.jpg",
      "price": [
        {
          "usage": "Offer",
          "value": 52.43,
          "description": "I",
          "currency": null
        },
        {
          "usage": "Display",
          "value": 74.9,
          "description": "L",
          "currency": null
        }
      ],
      "bottle_deposit": 0,
      "content_uom": "kpl",
      "content_qty": "0"
    },
    {
      "part_number": "304149055",
      "id": "1533035061",
      "name": "Rieker  43850 naisten ballerinat",
      "thumbnail": "https://img.karkkainen.com/images/e_trim:4/c_pad,f_auto,h_80,q_auto,w_80/v1/tuotekuvat/4066707997056/rieker-43850-01-42-n-kengat.jpg",
      "price": [
        {
          "usage": "Offer",
          "value": 52.43,
          "description": "I",
          "currency": null
        },
        {
          "usage": "Display",
          "value": 74.9,
          "description": "L",
          "currency": null
        }
      ],
      "bottle_deposit": 0,
      "content_uom": "kpl",
      "content_qty": "0"
    },
    {
      "part_number": "304149045",
      "id": "1533035072",
      "name": "Rieker  43850 naisten ballerinat",
      "thumbnail": "https://img.karkkainen.com/images/e_trim:4/c_pad,f_auto,h_80,q_auto,w_80/v1/tuotekuvat/4066707997056/rieker-43850-01-37-n-kengat.jpg",
      "price": [
        {
          "usage": "Offer",
          "value": 52.43,
          "description": "I",
          "currency": null
        },
        {
          "usage": "Display",
          "value": 74.9,
          "description": "L",
          "currency": null
        }
      ],
      "bottle_deposit": 0,
      "content_uom": "kpl",
      "content_qty": "0"
    },
    {
      "part_number": "304149051",
      "id": "1533035104",
      "name": "Rieker  43850 naisten ballerinat",
      "thumbnail": "https://img.karkkainen.com/images/e_trim:4/c_pad,f_auto,h_80,q_auto,w_80/v1/tuotekuvat/4066707997056/rieker-43850-01-40-n-kengat.jpg",
      "price": [
        {
          "usage": "Offer",
          "value": 52.43,
          "description": "I",
          "currency": null
        },
        {
          "usage": "Display",
          "value": 74.9,
          "description": "L",
          "currency": null
        }
      ],
      "bottle_deposit": 0,
      "content_uom": "kpl",
      "content_qty": "0"
    },
    {
      "part_number": "304149047",
      "id": "1533035121",
      "name": "Rieker  43850 naisten ballerinat",
      "thumbnail": "https://img.karkkainen.com/images/e_trim:4/c_pad,f_auto,h_80,q_auto,w_80/v1/tuotekuvat/4066707997056/rieker-43850-01-38-n-kengat.jpg",
      "price": [
        {
          "usage": "Offer",
          "value": 52.43,
          "description": "I",
          "currency": null
        },
        {
          "usage": "Display",
          "value": 74.9,
          "description": "L",
          "currency": null
        }
      ],
      "bottle_deposit": 0,
      "content_uom": "kpl",
      "content_qty": "0"
    },
    {
      "part_number": "304149053",
      "id": "1533035125",
      "name": "Rieker  43850 naisten ballerinat",
      "thumbnail": "https://img.karkkainen.com/images/e_trim:4/c_pad,f_auto,h_80,q_auto,w_80/v1/tuotekuvat/4066707997056/rieker-43850-01-41-n-kengat.jpg",
      "price": [
        {
          "usage": "Offer",
          "value": 52.43,
          "description": "I",
          "currency": null
        },
        {
          "usage": "Display",
          "value": 74.9,
          "description": "L",
          "currency": null
        }
      ],
      "bottle_deposit": 0,
      "content_uom": "kpl",
      "content_qty": "0"
    }
  ],
  "attributes": [
    {
      "id": "72",
      "identifier": "Väri",
      "sequence": "1",
      "name": "Väri",
      "comparable": "true",
      "usage": "Defining",
      "values": [
        {
          "id": "304149043",
          "identifier": "Musta",
          "image1path": "https://img.karkkainen.com/images/e_trim:4/c_pad,f_auto,h_80,q_auto,w_80/v1/tuotekuvat/4066707997056/rieker-43850-01-36-n-kengat.jpg",
          "value": "Musta"
        },
        {
          "id": "304149049",
          "identifier": "Musta",
          "image1path": "https://img.karkkainen.com/images/e_trim:4/c_pad,f_auto,h_80,q_auto,w_80/v1/tuotekuvat/4066707997056/rieker-43850-01-39-n-kengat.jpg",
          "value": "Musta"
        },
        {
          "id": "304149055",
          "identifier": "Musta",
          "image1path": "https://img.karkkainen.com/images/e_trim:4/c_pad,f_auto,h_80,q_auto,w_80/v1/tuotekuvat/4066707997056/rieker-43850-01-42-n-kengat.jpg",
          "value": "Musta"
        },
        {
          "id": "304149045",
          "identifier": "Musta",
          "image1path": "https://img.karkkainen.com/images/e_trim:4/c_pad,f_auto,h_80,q_auto,w_80/v1/tuotekuvat/4066707997056/rieker-43850-01-37-n-kengat.jpg",
          "value": "Musta"
        },
        {
          "id": "304149051",
          "identifier": "Musta",
          "image1path": "https://img.karkkainen.com/images/e_trim:4/c_pad,f_auto,h_80,q_auto,w_80/v1/tuotekuvat/4066707997056/rieker-43850-01-40-n-kengat.jpg",
          "value": "Musta"
        },
        {
          "id": "304149047",
          "identifier": "Musta",
          "image1path": "https://img.karkkainen.com/images/e_trim:4/c_pad,f_auto,h_80,q_auto,w_80/v1/tuotekuvat/4066707997056/rieker-43850-01-38-n-kengat.jpg",
          "value": "Musta"
        },
        {
          "id": "304149053",
          "identifier": "Musta",
          "image1path": "https://img.karkkainen.com/images/e_trim:4/c_pad,f_auto,h_80,q_auto,w_80/v1/tuotekuvat/4066707997056/rieker-43850-01-41-n-kengat.jpg",
          "value": "Musta"
        }
      ]
    },
    {
      "id": "48",
      "identifier": "Koko",
      "sequence": "2",
      "name": "Koko",
      "comparable": "true",
      "usage": "Defining",
      "values": [
        {
          "id": "304149043",
          "identifier": "36",
          "image1path": null,
          "value": "36"
        },
        {
          "id": "304149049",
          "identifier": "39",
          "image1path": null,
          "value": "39"
        },
        {
          "id": "304149055",
          "identifier": "42",
          "image1path": null,
          "value": "42"
        },
        {
          "id": "304149045",
          "identifier": "37",
          "image1path": null,
          "value": "37"
        },
        {
          "id": "304149051",
          "identifier": "40",
          "image1path": null,
          "value": "40"
        },
        {
          "id": "304149047",
          "identifier": "38",
          "image1path": null,
          "value": "38"
        },
        {
          "id": "304149053",
          "identifier": "41",
          "image1path": null,
          "value": "41"
        }
      ]
    },
    {
      "id": "Hyllypaikka Jyväskylä",
      "identifier": "Hyllypaikka Jyväskylä",
      "sequence": "3",
      "name": "Hyllypaikka Jyväskylä",
      "comparable": "true",
      "usage": "Descriptive",
      "values": [
        {
          "id": "Hyllypaikka Jyväskylä_AJ 02 02",
          "identifier": "Hyllypaikka Jyväskylä_AJ 02 02",
          "image1path": null,
          "value": "AJ 02 02"
        }
      ]
    },
    {
      "id": "Kengän Euro koko",
      "identifier": "Kengän Euro koko",
      "sequence": "4",
      "name": "Kengän Euro koko",
      "comparable": "true",
      "usage": "Descriptive",
      "values": [
        {
          "id": "Kengän Euro koko_36",
          "identifier": "Kengän Euro koko_36",
          "image1path": null,
          "value": "36"
        },
        {
          "id": "Kengän Euro koko_37",
          "identifier": "Kengän Euro koko_37",
          "image1path": null,
          "value": "37"
        },
        {
          "id": "Kengän Euro koko_38",
          "identifier": "Kengän Euro koko_38",
          "image1path": null,
          "value": "38"
        },
        {
          "id": "Kengän Euro koko_39",
          "identifier": "Kengän Euro koko_39",
          "image1path": null,
          "value": "39"
        },
        {
          "id": "Kengän Euro koko_40",
          "identifier": "Kengän Euro koko_40",
          "image1path": null,
          "value": "40"
        },
        {
          "id": "Kengän Euro koko_41",
          "identifier": "Kengän Euro koko_41",
          "image1path": null,
          "value": "41"
        },
        {
          "id": "Kengän Euro koko_42",
          "identifier": "Kengän Euro koko_42",
          "image1path": null,
          "value": "42"
        }
      ]
    },
    {
      "id": "Tuotemerkki",
      "identifier": "Tuotemerkki",
      "sequence": "5",
      "name": "Tuotemerkki",
      "comparable": "true",
      "usage": "Descriptive",
      "values": [
        {
          "id": "Tuotemerkki_Rieker",
          "identifier": "Tuotemerkki_Rieker",
          "image1path": null,
          "value": "Rieker"
        }
      ]
    },
    {
      "id": "Hyllypaikka Ii",
      "identifier": "Hyllypaikka Ii",
      "sequence": "6",
      "name": "Hyllypaikka Ii",
      "comparable": "true",
      "usage": "Descriptive",
      "values": [
        {
          "id": "Hyllypaikka Ii_E 16 02",
          "identifier": "Hyllypaikka Ii_E 16 02",
          "image1path": null,
          "value": "E 16 02"
        }
      ]
    },
    {
      "id": "UOM_CONTENTS",
      "identifier": "UOM_CONTENTS",
      "sequence": "7",
      "name": "UOM_CONTENTS",
      "comparable": "true",
      "usage": "Descriptive",
      "values": [
        {
          "id": "UOM_CONTENTS_0",
          "identifier": "UOM_CONTENTS_0",
          "image1path": null,
          "value": "0"
        }
      ]
    },
    {
      "id": "Sukupuoli",
      "identifier": "Sukupuoli",
      "sequence": "8",
      "name": "Sukupuoli",
      "comparable": "true",
      "usage": "Descriptive",
      "values": [
        {
          "id": "Sukupuoli_Nainen",
          "identifier": "Sukupuoli_Nainen",
          "image1path": null,
          "value": "Nainen"
        }
      ]
    },
    {
      "id": "Hyllypaikka Seinäjoki",
      "identifier": "Hyllypaikka Seinäjoki",
      "sequence": "9",
      "name": "Hyllypaikka Seinäjoki",
      "comparable": "true",
      "usage": "Descriptive",
      "values": [
        {
          "id": "Hyllypaikka Seinäjoki_D 05 23",
          "identifier": "Hyllypaikka Seinäjoki_D 05 23",
          "image1path": null,
          "value": "D 05 23"
        }
      ]
    },
    {
      "id": "Koko",
      "identifier": "Koko",
      "sequence": "10",
      "name": "Koko",
      "comparable": "true",
      "usage": "Descriptive",
      "values": [
        {
          "id": "Koko_36",
          "identifier": "Koko_36",
          "image1path": null,
          "value": "36"
        },
        {
          "id": "Koko_37",
          "identifier": "Koko_37",
          "image1path": null,
          "value": "37"
        },
        {
          "id": "Koko_38",
          "identifier": "Koko_38",
          "image1path": null,
          "value": "38"
        },
        {
          "id": "Koko_39",
          "identifier": "Koko_39",
          "image1path": null,
          "value": "39"
        },
        {
          "id": "Koko_40",
          "identifier": "Koko_40",
          "image1path": null,
          "value": "40"
        },
        {
          "id": "Koko_41",
          "identifier": "Koko_41",
          "image1path": null,
          "value": "41"
        },
        {
          "id": "Koko_42",
          "identifier": "Koko_42",
          "image1path": null,
          "value": "42"
        }
      ]
    },
    {
      "id": "BO",
      "identifier": "BO",
      "sequence": "11",
      "name": "BO",
      "comparable": "true",
      "usage": "Descriptive",
      "values": [
        {
          "id": "BO_0",
          "identifier": "BO_0",
          "image1path": null,
          "value": "0"
        }
      ]
    },
    {
      "id": "Hyllypaikka Lahti",
      "identifier": "Hyllypaikka Lahti",
      "sequence": "12",
      "name": "Hyllypaikka Lahti",
      "comparable": "true",
      "usage": "Descriptive",
      "values": [
        {
          "id": "Hyllypaikka Lahti_2KRS E2623",
          "identifier": "Hyllypaikka Lahti_2KRS E2623",
          "image1path": null,
          "value": "2KRS E2623"
        }
      ]
    },
    {
      "id": "Saatavuus myyjältä",
      "identifier": "Saatavuus myyjältä",
      "sequence": "13",
      "name": "Saatavuus myyjältä",
      "comparable": "true",
      "usage": "Descriptive",
      "values": [
        {
          "id": "Saatavuus myyjältä_Kärkkäinen",
          "identifier": "Saatavuus myyjältä_Kärkkäinen",
          "image1path": null,
          "value": "Kärkkäinen"
        }
      ]
    },
    {
      "id": "Väri",
      "identifier": "Väri",
      "sequence": "14",
      "name": "Väri",
      "comparable": "true",
      "usage": "Descriptive",
      "values": [
        {
          "id": "Väri_Musta",
          "identifier": "Väri_Musta",
          "image1path": null,
          "value": "Musta"
        }
      ]
    },
    {
      "id": "Käyttäjän ikäryhmä",
      "identifier": "Käyttäjän ikäryhmä",
      "sequence": "15",
      "name": "Käyttäjän ikäryhmä",
      "comparable": "true",
      "usage": "Descriptive",
      "values": [
        {
          "id": "Käyttäjän ikäryhmä_Aikuiset",
          "identifier": "Käyttäjän ikäryhmä_Aikuiset",
          "image1path": null,
          "value": "Aikuiset"
        }
      ]
    },
    {
      "id": "Kengän varren korkeus",
      "identifier": "Kengän varren korkeus",
      "sequence": "16",
      "name": "Kengän varren korkeus",
      "comparable": "true",
      "usage": "Descriptive",
      "values": [
        {
          "id": "Kengän varren korkeus_Matalavartinen",
          "identifier": "Kengän varren korkeus_Matalavartinen",
          "image1path": null,
          "value": "Matalavartinen"
        }
      ]
    },
    {
      "id": "UOM",
      "identifier": "UOM",
      "sequence": "17",
      "name": "UOM",
      "comparable": "true",
      "usage": "Descriptive",
      "values": [
        {
          "id": "UOM_1.000",
          "identifier": "UOM_1.000",
          "image1path": null,
          "value": "1.000"
        }
      ]
    },
    {
      "id": "EAN",
      "identifier": "EAN",
      "sequence": "18",
      "name": "EAN",
      "comparable": "true",
      "usage": "Descriptive",
      "values": [
        {
          "id": "EAN_4066707997056",
          "identifier": "EAN_4066707997056",
          "image1path": null,
          "value": "4066707997056"
        },
        {
          "id": "EAN_4066707997100",
          "identifier": "EAN_4066707997100",
          "image1path": null,
          "value": "4066707997100"
        },
        {
          "id": "EAN_4066707997063",
          "identifier": "EAN_4066707997063",
          "image1path": null,
          "value": "4066707997063"
        },
        {
          "id": "EAN_4066707997087",
          "identifier": "EAN_4066707997087",
          "image1path": null,
          "value": "4066707997087"
        },
        {
          "id": "EAN_4066707997070",
          "identifier": "EAN_4066707997070",
          "image1path": null,
          "value": "4066707997070"
        },
        {
          "id": "EAN_4066707997094",
          "identifier": "EAN_4066707997094",
          "image1path": null,
          "value": "4066707997094"
        },
        {
          "id": "EAN_4066707997117",
          "identifier": "EAN_4066707997117",
          "image1path": null,
          "value": "4066707997117"
        }
      ]
    },
    {
      "id": "Hyllypaikka Ylivieska",
      "identifier": "Hyllypaikka Ylivieska",
      "sequence": "19",
      "name": "Hyllypaikka Ylivieska",
      "comparable": "true",
      "usage": "Descriptive",
      "values": [
        {
          "id": "Hyllypaikka Ylivieska_2KRS I2310",
          "identifier": "Hyllypaikka Ylivieska_2KRS I2310",
          "image1path": null,
          "value": "2KRS I2310"
        },
        {
          "id": "Hyllypaikka Ylivieska_2KRS I2311",
          "identifier": "Hyllypaikka Ylivieska_2KRS I2311",
          "image1path": null,
          "value": "2KRS I2311"
        }
      ]
    },
    {
      "id": "SUPPLIER_PARTNO",
      "identifier": "SUPPLIER_PARTNO",
      "sequence": "20",
      "name": "SUPPLIER_PARTNO",
      "comparable": "true",
      "usage": "Descriptive",
      "values": [
        {
          "id": "SUPPLIER_PARTNO_43850-01-MUSTA-36",
          "identifier": "SUPPLIER_PARTNO_43850-01-MUSTA-36",
          "image1path": null,
          "value": "43850-01-MUSTA-36"
        },
        {
          "id": "SUPPLIER_PARTNO_43850-01-MUSTA-38",
          "identifier": "SUPPLIER_PARTNO_43850-01-MUSTA-38",
          "image1path": null,
          "value": "43850-01-MUSTA-38"
        },
        {
          "id": "SUPPLIER_PARTNO_43850-01-MUSTA-37",
          "identifier": "SUPPLIER_PARTNO_43850-01-MUSTA-37",
          "image1path": null,
          "value": "43850-01-MUSTA-37"
        },
        {
          "id": "SUPPLIER_PARTNO_43850-01-MUSTA-39",
          "identifier": "SUPPLIER_PARTNO_43850-01-MUSTA-39",
          "image1path": null,
          "value": "43850-01-MUSTA-39"
        },
        {
          "id": "SUPPLIER_PARTNO_43850-01-MUSTA-41",
          "identifier": "SUPPLIER_PARTNO_43850-01-MUSTA-41",
          "image1path": null,
          "value": "43850-01-MUSTA-41"
        },
        {
          "id": "SUPPLIER_PARTNO_43850-01-MUSTA-40",
          "identifier": "SUPPLIER_PARTNO_43850-01-MUSTA-40",
          "image1path": null,
          "value": "43850-01-MUSTA-40"
        },
        {
          "id": "SUPPLIER_PARTNO_43850-01-MUSTA-42",
          "identifier": "SUPPLIER_PARTNO_43850-01-MUSTA-42",
          "image1path": null,
          "value": "43850-01-MUSTA-42"
        }
      ]
    },
    {
      "id": "Kengänpohjan tyyppi",
      "identifier": "Kengänpohjan tyyppi",
      "sequence": "21",
      "name": "Kengänpohjan tyyppi",
      "comparable": "true",
      "usage": "Descriptive",
      "values": [
        {
          "id": "Kengänpohjan tyyppi_Matalapohjainen/Koroton",
          "identifier": "Kengänpohjan tyyppi_Matalapohjainen/Koroton",
          "image1path": null,
          "value": "Matalapohjainen/Koroton"
        }
      ]
    },
    {
      "id": "Saatavuus myymälästä",
      "identifier": "Saatavuus myymälästä",
      "sequence": "22",
      "name": "Saatavuus myymälästä",
      "comparable": "true",
      "usage": "Descriptive",
      "values": [
        {
          "id": "Saatavuus myymälästä_Ii",
          "identifier": "Saatavuus myymälästä_Ii",
          "image1path": null,
          "value": "Ii"
        },
        {
          "id": "Saatavuus myymälästä_Jyväskylä",
          "identifier": "Saatavuus myymälästä_Jyväskylä",
          "image1path": null,
          "value": "Jyväskylä"
        },
        {
          "id": "Saatavuus myymälästä_Lahti",
          "identifier": "Saatavuus myymälästä_Lahti",
          "image1path": null,
          "value": "Lahti"
        },
        {
          "id": "Saatavuus myymälästä_Ylivieska",
          "identifier": "Saatavuus myymälästä_Ylivieska",
          "image1path": null,
          "value": "Ylivieska"
        },
        {
          "id": "Saatavuus myymälästä_Seinäjoki",
          "identifier": "Saatavuus myymälästä_Seinäjoki",
          "image1path": null,
          "value": "Seinäjoki"
        },
        {
          "id": "Saatavuus myymälästä_Oulu",
          "identifier": "Saatavuus myymälästä_Oulu",
          "image1path": null,
          "value": "Oulu"
        }
      ]
    },
    {
      "id": "Tuotteen väri",
      "identifier": "Tuotteen väri",
      "sequence": "23",
      "name": "Tuotteen väri",
      "comparable": "true",
      "usage": "Descriptive",
      "values": [
        {
          "id": "Tuotteen väri_Musta",
          "identifier": "Tuotteen väri_Musta",
          "image1path": null,
          "value": "Musta"
        }
      ]
    },
    {
      "id": "Hyllypaikka Oulu",
      "identifier": "Hyllypaikka Oulu",
      "sequence": "24",
      "name": "Hyllypaikka Oulu",
      "comparable": "true",
      "usage": "Descriptive",
      "values": [
        {
          "id": "Hyllypaikka Oulu_D 09 11",
          "identifier": "Hyllypaikka Oulu_D 09 11",
          "image1path": null,
          "value": "D 09 11"
        }
      ]
    },
    {
      "id": "Vaatteen päämateriaali",
      "identifier": "Vaatteen päämateriaali",
      "sequence": "25",
      "name": "Vaatteen päämateriaali",
      "comparable": "true",
      "usage": "Descriptive",
      "values": [
        {
          "id": "Vaatteen päämateriaali_Mokka",
          "identifier": "Vaatteen päämateriaali_Mokka",
          "image1path": null,
          "value": "Mokka"
        }
      ]
    },
    {
      "id": "Kengän lesti",
      "identifier": "Kengän lesti",
      "sequence": "26",
      "name": "Kengän lesti",
      "comparable": "true",
      "usage": "Descriptive",
      "values": [
        {
          "id": "Kengän lesti_Normaali",
          "identifier": "Kengän lesti_Normaali",
          "image1path": null,
          "value": "Normaali"
        }
      ]
    }
  ],
  "price": [
    {
      "value": 52.43,
      "usage": "Offer",
      "description": "I",
      "currency": null
    },
    {
      "value": 74.9,
      "usage": "Display",
      "description": "L",
      "currency": null
    }
  ],
  "grouping_properties": {
    "group_count": 7,
    "group_list_price_range": [
      "74.9",
      "74.9"
    ],
    "group_offer_price_range": [
      "52.43",
      "52.43"
    ],
    "group_max_price_value": "52.43",
    "group_min_price_value": "52.43"
  },
  "type": "product",
  "seo": {
    "href": "/rieker-43850-naisten-ballerinat"
  },
  "bottle_deposit": 0,
  "content_uom": "kpl",
  "content_qty": "0",
  "ratings": {
    "average": 0,
    "total_count": 0
  },
  "parent_categories": [
    {
      "id": "41144501",
      "name": "Naisten avokkaat"
    },
    {
      "id": "32533006",
      "name": "Naisten kengät ALE"
    },
    {
      "id": "25761501",
      "name": "Naisten ballerinat"
    },
    {
      "id": "41208005",
      "name": "Naisten kengät tarjoukset"
    }
  ],
  "variants": null,
  "from_url": "https://www.karkkainen.com/verkkokauppa/naisten-pukeutuminen?offset=60"
}
```

Each product record contains detailed metadata across 20+ fields:

#### Product Identification

| Field | Description |
|---|---|
| `ID` | Unique Karkkainen product identifier |
| `Name` | Product name as displayed in search results |
| `Part Number` | Internal part or SKU number for inventory tracking |
| `Manufacturer` | Brand or manufacturer name |
| `Type` | Product category type (e.g., clothing, footwear) |

#### Pricing & Availability

| Field | Description |
|---|---|
| `Price` | Current retail price (typically in EUR) |
| `Buyable` | Boolean indicating if the product is in stock and purchasable |
| `Has Single SKU` | Whether the product has a single SKU or multiple variants |
| `Bottle Deposit` | Deposit amount if applicable (for recyclable containers) |
| `Content UOM` | Unit of measure (e.g., liters, pieces, grams) |
| `Content Quantity` | Quantity per unit (e.g., "500 ml" or "1 piece") |

#### Product Details & Description

| Field | Description |
|---|---|
| `Short Description` | Brief product summary shown in search results |
| `Attributes` | Structured attributes (e.g., color, size, material, fit) as key-value pairs |
| `Thumbnail` | URL of the product image shown in search results |
| `Categories` | Assigned product categories (e.g., "Clothing > Women > Dresses") |
| `Parent Categories` | Higher-level category hierarchy for navigation |

#### Advanced Metadata

| Field | Description |
|---|---|
| `Items` | Detailed inventory items associated with the product (stock levels, locations) |
| `Variants` | Related product variants (different sizes, colors, styles); includes variant SKUs and availability |
| `Grouping Properties` | Properties that group related products (e.g., same item in multiple colors listed as variants) |
| `Ratings` | Customer ratings and review aggregates (average score, review count) |
| `SEO` | Search engine optimization metadata (meta title, meta description, canonical URL) |

***

### How to Use

1. **Identify search URLs** — Navigate to Karkkainen.com and perform a search or filter in your target category. Copy the full URL including any filter parameters or pagination offsets.
2. **Prepare input JSON** — Add URLs to the `urls` array. Set `max_items_per_url` based on your data needs (default: 20–200).
3. **Configure error handling** — Set `ignore_url_failures: true` to skip broken or blocked URLs without interrupting the entire run.
4. **Execute the scraper** — Start the actor and monitor progress in the run log.
5. **Export data** — Download results as JSON, CSV, or Excel; then import into your analytics platform, price monitoring tool, or database.

**Best practices:**

- Use category-level URLs for broad collections (e.g., all women's clothing).
- Apply pagination offsets (`?offset=60`) to split large categories across multiple URLs.
- Enable proxy rotation if scraping large volumes to avoid IP blocking.
- Test with a single URL first before running batch operations.

***

### Use Cases & Business Value

- **Price intelligence:** Track Karkkainen product pricing over time to identify trends and seasonal changes
- **Competitor analysis:** Monitor assortment breadth, brand partnerships, and promotional strategies
- **Inventory insights:** Understand product availability, variant distribution, and stock depth
- **Aggregation platforms:** Feed Karkkainen inventory into multi-retailer price comparison engines
- **Academic research:** Analyze e-commerce assortment strategies in Nordic retail
- **Supply chain optimization:** Integrate product metadata into procurement or inventory systems

By automating product data extraction, retailers and analysts save hundreds of hours manually browsing and copying information, enabling faster decision-making and more accurate market intelligence.

***

### Conclusion

The **Karkkainen Product Search Scraper** delivers comprehensive product data from one of Finland's leading online retailers. With 20+ data fields per product and flexible URL configuration, it simplifies everything from price monitoring to competitive benchmarking. Extract Karkkainen's full product catalog today and unlock insights that drive better business decisions.

# Actor input Schema

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

Add the URLs of the product search 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.karkkainen.com/verkkokauppa/naisten-pukeutuminen?offset=60"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}
```

# 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.karkkainen.com/verkkokauppa/naisten-pukeutuminen?offset=60"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("stealth_mode/karkkainen-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.karkkainen.com/verkkokauppa/naisten-pukeutuminen?offset=60"],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
}

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

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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.karkkainen.com/verkkokauppa/naisten-pukeutuminen?offset=60"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}' |
apify call stealth_mode/karkkainen-product-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=stealth_mode/karkkainen-product-search-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Karkkainen Product Search Scraper",
        "description": "Scrape product listings from Karkkainen.com search results effortlessly. Collect product names, prices, SKUs, descriptions, ratings, variants, and 15+ additional fields — perfect for price monitoring, inventory analysis, and competitive research.",
        "version": "0.0",
        "x-build-id": "szNN9lGUYO6Gz2oCq"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/stealth_mode~karkkainen-product-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-stealth_mode-karkkainen-product-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/stealth_mode~karkkainen-product-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-stealth_mode-karkkainen-product-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/stealth_mode~karkkainen-product-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-stealth_mode-karkkainen-product-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "urls": {
                        "title": "URLs of the product search list urls to scrape",
                        "type": "array",
                        "description": "Add the URLs of the product search list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "ignore_url_failures": {
                        "title": "Continue running even if some URLs fail to be scraped",
                        "type": "boolean",
                        "description": "If true, the scraper will continue running even if some URLs fail to be scraped."
                    },
                    "max_items_per_url": {
                        "title": "Max items per URL",
                        "type": "integer",
                        "description": "The maximum number of items to scrape per URL."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
