# Pricerunner Product Search Scraper (`stealth_mode/pricerunner-product-search-scraper`) Actor

Scrape product listings from Pricerunner.dk with detailed pricing, merchant offers, and product metadata. Collect up to 200 items per search category—perfect for price monitoring, market research, and competitive intelligence in the Danish e-commerce market.

- **URL**: https://apify.com/stealth\_mode/pricerunner-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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.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/platform/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

## Pricerunner Product Search Scraper: Extract Price Comparison Data

---

### What Is Pricerunner?

Pricerunner.com (All Counties site) is leading price comparison platform, aggregating thousands of products from hundreds of online retailers. From skincare to electronics, users browse categories, compare prices, and find the best deals. For businesses and researchers, this wealth of structured pricing data represents a goldmine—yet manual data collection is impractical at scale. The **Pricerunner Product Search Scraper** solves this, automating extraction of product listings, prices, merchant offers, and ratings from any category page.

---

### Overview

The **Pricerunner Product Search Scraper** extracts product listings from category search pages on Pricerunner, delivering detailed product intelligence with 19+ data fields per item. It is ideal for:

- **Price monitoring services** tracking competitor pricing and discounts
- **E-commerce analysts** benchmarking product availability and merchant coverage
- **Retailers** monitoring market position and price trends
- **Researchers** studying online market dynamics and consumer pricing

The scraper supports bulk URL processing, configurable item limits, and graceful error handling—allowing reliable collection of hundreds of products in a single run.

---

### Input Format

The scraper accepts a JSON configuration specifying which product categories to scrape:

```json
{
  "urls": [
    "https://www.pricerunner.dk/cl/253/Hudpleje"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 200
}
````

#### Input Parameters

| Parameter | Type | Description |
|---|---|---|
| `urls` | Array | List of Pricerunner product category URLs (e.g., skincare, electronics). Paste full URLs directly. |
| `max_items_per_url` | Integer | Maximum products to scrape per URL (default: 20, max: 200). Higher limits capture more listings but increase run time. |
| `ignore_url_failures` | Boolean | If `true`, the scraper continues if some URLs fail; if `false`, it stops on first error. Recommended: `true` for bulk runs. |

***

### Output Format

**Sample output**

```json
{
  "id": "3201101324",
  "name": "La Roche-Posay Anthelios UVMune 400 Invisible Fluid SPF50+ 50ml",
  "description": "Solcreme til ansigtet, 1stk, Beroligende, Anti-pollution, Vandafvisende, SPF, Dermatologisk testet, Ikke-komedogen, UVA-beskyttelse, UVB-beskyttelse, Antioxidanter, Ceramider, Hyaluronsyre, Niacinamid",
  "url": "/pl/253-3201101324/Hudpleje/La-Roche-Posay-Anthelios-UVMune-400-Invisible-Fluid-SPF50-50ml-Sammenlign-Priser",
  "image": {
    "id": "3242509916",
    "url": null,
    "path": "/product/3242509916/La-Roche-Posay-Anthelios-UVMune-400-Invisible-Fluid-SPF50-50ml.jpg",
    "description": "La Roche-Posay Anthelios UVMune 400 Invisible Fluid SPF50+ 50ml"
  },
  "filter_hits": [],
  "rank": {
    "rank": 1
  },
  "brand": {
    "id": "168191",
    "name": "La Roche-Posay",
    "image": null
  },
  "rating": {
    "number_of_ratings": 696,
    "average_rating": "4.55",
    "count": 696,
    "average": "4.55"
  },
  "price_drop": null,
  "ribbon": {
    "type": "WATCHED",
    "value": "200+",
    "description": null
  },
  "product_group": null,
  "cheapest_offer": {
    "price": {
      "amount": "139.00",
      "currency": "DKK"
    },
    "merchant": {
      "id": "2957",
      "name": "",
      "image": null
    },
    "price_per_unit": {
      "price": {
        "amount": "2780.00",
        "currency": "DKK"
      },
      "unit": "L"
    }
  },
  "classification": "ONE",
  "preview_merchants": {
    "count": 23,
    "merchants": []
  },
  "installment": {
    "price": {
      "amount": "46.33",
      "currency": "DKK"
    },
    "term_length": 3,
    "interval": "MONTHLY",
    "frequency": 30
  },
  "lowest_price": {
    "amount": "139.00",
    "currency": "DKK"
  },
  "out_of_stock": false,
  "condition": "NEW",
  "from_url": "https://www.pricerunner.dk/cl/253/Hudpleje"
}
```

Each scraped product returns a comprehensive record with the following fields:

#### Product Identity & Metadata

| Field | Meaning | Example |
|---|---|---|
| `ID` | Unique Pricerunner product identifier | `12345678` |
| `Name` | Official product name | `CeraVe Moisturizing Cream` |
| `Description` | Product summary or subtitle | `Daily facial moisturizer for sensitive skin` |
| `URL` | Direct link to the product page on Pricerunner | `https://www.pricerunner.dk/p/...` |
| `Image` | Product image URL | `https://www.pricerunner.dk/mimg/...` |
| `Brand` | Manufacturer or brand name | `CeraVe` |
| `Product Group` | Category classification (e.g., skincare type) | `Face Moisturizers` |
| `Classification` | Additional product classification | `Creams & Balms` |

#### Pricing & Availability

| Field | Meaning | Example |
|---|---|---|
| `Lowest Price` | Cheapest current price across all merchants | `149 DKK` |
| `Cheapest Offer` | Merchant offering the lowest price | `Matas` |
| `Price Drop` | Percentage or amount price has decreased | `15%` |
| `Out Of Stock` | Whether the product is currently unavailable | `false` |
| `Installment` | Whether installment payment is available | `true` |

#### Ratings, Ranks & Visibility

| Field | Meaning | Example |
|---|---|---|
| `Rating` | Customer review rating (typically 0–5 stars) | `4.5` |
| `Rank` | Product popularity ranking within category | `1` |
| `Filter Hits` | Number of user searches matching this product | `1,245` |
| `Ribbon` | Special tag or label (e.g., "Best Buy", "Bestseller") | `Bestseller` |
| `Preview Merchants` | List of up to 5 retailers offering the product | `["Matas", "ApotekA", "Cosmonova"]` |
| `Condition` | Product condition status (new, used, refurbished) | `New` |

***

### How to Use

1. **Identify categories** — On Pricerunner.dk, navigate to product categories (e.g., Hudpleje, Electronics, Fashion). Copy the full URL from your browser.
2. **Build your input** — Paste category URLs into the `urls` array in JSON format. Set `max_items_per_url` based on your needs (e.g., 200 for comprehensive capture).
3. **Enable error tolerance** — Set `ignore_url_failures: true` to handle occasional timeouts without stopping the entire run.
4. **Run the scraper** — Start the actor and monitor progress in the task log.
5. **Retrieve & process results** — Download results as JSON or CSV, then import into spreadsheets, databases, or analytics tools.

**Tips:**

- Start with `max_items_per_url: 50` to test, then increase for production runs.
- Pricerunner sometimes sorts dynamically; results may vary slightly between runs.
- Use a proxy (residential recommended) if scraping high-volume categories.

***

### Use Cases & Business Value

- **Price intelligence:** Track competitor pricing, identify price drops, and monitor retail margins
- **Market research:** Analyze product availability, merchant coverage, and rating trends
- **Aggregator platforms:** Feed price data into deal-finder or shopping comparison apps
- **Retail analytics:** Benchmark your product positioning against market alternatives
- **Trend monitoring:** Identify bestselling or emerging products in real-time

By automating data collection, you eliminate days of manual work while ensuring data freshness and accuracy. Structured pricing data unlocks actionable insights for procurement, marketing, and strategic pricing decisions.

***

### Conclusion

The **Pricerunner Product Search Scraper** delivers reliable, large-scale access to Danish e-commerce pricing and product data. Whether you're monitoring the market, powering an aggregator, or conducting research, this scraper transforms Pricerunner listings into ready-to-analyze datasets. Configure your URLs, set your limits, and start collecting competitive intelligence today.

# 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.pricerunner.dk/cl/253/Hudpleje"
  ],
  "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.pricerunner.dk/cl/253/Hudpleje"
    ],
    "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/pricerunner-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.pricerunner.dk/cl/253/Hudpleje"],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("stealth_mode/pricerunner-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.pricerunner.dk/cl/253/Hudpleje"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}' |
apify call stealth_mode/pricerunner-product-search-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Pricerunner Product Search Scraper",
        "description": "Scrape product listings from Pricerunner.dk with detailed pricing, merchant offers, and product metadata. Collect up to 200 items per search category—perfect for price monitoring, market research, and competitive intelligence in the Danish e-commerce market.",
        "version": "0.0",
        "x-build-id": "oW54xwsnc4bT3fmvJ"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/stealth_mode~pricerunner-product-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-stealth_mode-pricerunner-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~pricerunner-product-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-stealth_mode-pricerunner-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~pricerunner-product-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-stealth_mode-pricerunner-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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
