# Prisradar Product Search Scraper (`stealth_mode/prisradar-product-search-scraper`) Actor

Scrape product listings from Prisradar.no search results with complete pricing and shop data. Collect titles, prices, discounts, promotional status, variants, and 20+ fields per product — ideal for price intelligence, market research, and competitive analysis.

- **URL**: https://apify.com/stealth\_mode/prisradar-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

## Prisradar Product Search Scraper: Extract Norwegian Product Data & Pricing
---

### What Is Prisradar.no?

Prisradar.no is Norway's leading price comparison platform, aggregating product listings across thousands of online and physical retailers. It covers categories from electronics and home goods to groceries and toys, displaying real-time pricing, shop availability, and promotional offers. For price researchers, e-commerce analysts, and retailers, manually extracting this data is impractical — the **Prisradar Product Search Scraper** automates collection at scale, delivering structured product intelligence instantly.

---

### Overview

The **Prisradar Product Search Scraper** extracts product listings from Prisradar's category and search result pages, transforming unstructured web data into clean, machine-readable records. It is built for:

- **Price analysts** monitoring competitor pricing and discount trends
- **E-commerce retailers** tracking product availability across channels
- **Market researchers** studying Norwegian consumer goods and pricing patterns
- **Data aggregators** building product catalogs or pricing dashboards
- **Marketing teams** analyzing promotional activity and sales rankings

The scraper handles category pages with filtering, search queries, and pagination, collecting up to 200 items per URL with optional proxy support to prevent blocking.

---

### Input Format

The scraper accepts a JSON configuration object controlling which pages to scrape and how much data to collect:

```json
{
  "urls": [
    "https://prisradar.no/kategorier/barn-og-foreldre?query=lip&page=2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 200
}
````

| Field | Type | Description |
|---|---|---|
| `urls` | Array | Links to Prisradar product search or category pages. Example: category pages, filtered searches, or paginated results. Paste full URLs including query parameters. |
| `ignore_url_failures` | Boolean | If `true`, the scraper continues if one or more URLs fail to load. If `false`, a failed URL halts the entire run. Default: `true` (recommended for bulk scraping). |
| `max_items_per_url` | Integer | Maximum products extracted per URL (e.g., `200`). Useful to control output size and scraping duration. Default: `20`. |

> **Example:** To scrape multiple search queries, add separate URLs: `?query=laptop&page=1`, `?query=laptop&page=2`, etc.

***

### Output Format

**Sample output**

```json
{
  "id": 15485974,
  "slug": "pokemon-mega-evolution-4-chaos-rising-booster-bundle",
  "url": "https://prisradar.no/produkter/pokemon-mega-evolution-4-chaos-rising-booster-bundle",
  "shops_count": 3,
  "single_shop_offer_id": 74717999,
  "title": "Pokémon Mega Evolution 4 Chaos Rising Booster Bundle",
  "short_description": "Oppdag de nyeste Pokémon-kortene og utvid samlingen din med spennende nye kort!",
  "price": 599,
  "is_promoted": false,
  "is_on_sale": false,
  "is_new": false,
  "is_eco": false,
  "is_offer": false,
  "energy_level": "",
  "offers_count": 3,
  "ranking_place": 3,
  "max_price": 699,
  "ranking": {
    "__typename": "Ranking",
    "slug": "beste-spill-barn"
  },
  "single_offer_id": "$undefined",
  "discount": {
    "__typename": "ProductDiscount",
    "old_price": 0,
    "discount_price": 0,
    "discount_percent": "0"
  },
  "image": {
    "__typename": "Image",
    "id": 23583737,
    "path": "https://images.prisradar.no/uploads/images/product_image/medium/44/51rqGUhi0kd54ZinwgYsjxfaZcH9vAR7nCGVKZfBLRqYtxEK68mp4YvjMQMxLH.jpg?20260521084829"
  },
  "attributes": [],
  "variants": "$undefined",
  "from_url": "https://prisradar.no/kategorier/barn-og-foreldre"
}
```

Each product record contains 23 fields capturing pricing, availability, promotional status, and product details:

#### Product Identification

| Field | Meaning | Example |
|---|---|---|
| `ID` | Unique Prisradar product identifier | `"prod_12345"` |
| `Slug` | URL-friendly product name | `"apple-airpods-pro"` |
| `URL` | Direct link to product page on Prisradar | `"https://prisradar.no/produkter/..."` |
| `Title` | Full product name as displayed | `"Apple AirPods Pro (2nd generation)"` |
| `Short Description` | Brief product summary | `"Wireless earbuds with noise cancellation"` |

#### Pricing & Discounts

| Field | Meaning | Example |
|---|---|---|
| `Price` | Current lowest price across retailers (NOK) | `"2499"` |
| `Max Price` | Highest price found among shops | `"3299"` |
| `Discount` | Percentage or amount off original price | `"20%"` or `"500 NOK"` |
| `Is On Sale` | Boolean flag indicating active discount | `true` / `false` |
| `Single Offer ID` | Identifier for specific price offer | `"offer_98765"` |
| `Single Shop Offer ID` | Unique ID linking to individual retailer offer | `"shop_offer_55321"` |

#### Availability & Visibility

| Field | Meaning | Example |
|---|---|---|
| `Shops Count` | Number of retailers stocking this product | `"15"` |
| `Offers Count` | Total number of price offers available | `"12"` |
| `Ranking Place` | Position in search or category results | `"3"` |
| `Ranking` | Overall ranking score (quality/relevance) | `"4.8"` |

#### Promotional Attributes

| Field | Meaning | Example |
|---|---|---|
| `Is Promoted` | Whether product has paid promotion active | `true` / `false` |
| `Is New` | Flag indicating newly listed product | `true` / `false` |
| `Is Eco` | Environmentally certified or sustainable label | `true` / `false` |
| `Is Offer` | Part of a special deal or bundle | `true` / `false` |
| `Energy Level` | Energy efficiency rating (for applicable products) | `"A+"` / `"B"` |

#### Product Variants & Details

| Field | Meaning | Example |
|---|---|---|
| `Image` | URL of product image | `"https://cdn.prisradar.no/images/..."` |
| `Attributes` | Product specifications (color, size, brand, etc.) | `{"color": "silver", "size": "M"}` |
| `Variants` | Available product options (colors, sizes, models) | `[{"name": "Black", "sku": "123"}, {...}]` |

***

### How to Use

1. **Identify target URLs** — Navigate Prisradar.no and find category or search results pages. Copy the full URL including query parameters and page numbers.

2. **Build your URL list** — Paste URLs into the `urls` array. Examples:
   - Category pages: `https://prisradar.no/kategorier/barn-og-foreldre`
   - Filtered search: `https://prisradar.no/kategorier/barn-og-foreldre?query=lip`
   - Paginated results: Add `&page=1`, `&page=2`, etc. for multi-page collection

3. **Configure settings** — Adjust `max_items_per_url` (default 20, up to 200) and set `ignore_url_failures` to `true` for robustness.

4. **Start the scraper** — Execute and monitor progress in the run log.

5. **Export data** — Download results as JSON, CSV, or Excel for analysis in spreadsheets or databases.

**Best practices:**

- Use `ignore_url_failures: true` when scraping 10+ URLs to prevent a single failed page from stopping the run
- Set realistic `max_items_per_url` values (200 is safe; higher may increase timeouts)
- Include query parameters in URLs to ensure result consistency across runs

***

### Use Cases & Business Value

- **Price intelligence:** Track price changes, competitor positioning, and seasonal trends across Norwegian retailers
- **Promotion monitoring:** Identify which products get promoted and measure promotional lift
- **Retailer analysis:** Understand product distribution across shops and availability patterns
- **Product research:** Gather variant and attribute data for catalog enrichment
- **Market insights:** Analyze product rankings, eco certifications, and emerging categories

The Prisradar scraper transforms hours of manual price checking into automated, scalable data collection — enabling data-driven decisions for e-commerce, retail, and market research teams.

***

### Conclusion

The **Prisradar Product Search Scraper** is the go-to solution for anyone needing accurate, real-time product and pricing data from Norway's largest price comparison platform. With 23 output fields covering pricing, availability, promotions, and variants, it delivers comprehensive market intelligence in seconds. Start scraping today and unlock competitive advantages in price optimization and market analysis.

# 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://prisradar.no/kategorier/barn-og-foreldre?query=lip&page=2"
  ],
  "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://prisradar.no/kategorier/barn-og-foreldre?query=lip&page=2"
    ],
    "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/prisradar-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://prisradar.no/kategorier/barn-og-foreldre?query=lip&page=2"],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("stealth_mode/prisradar-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://prisradar.no/kategorier/barn-og-foreldre?query=lip&page=2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}' |
apify call stealth_mode/prisradar-product-search-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Prisradar Product Search Scraper",
        "description": "Scrape product listings from Prisradar.no search results with complete pricing and shop data. Collect titles, prices, discounts, promotional status, variants, and 20+ fields per product — ideal for price intelligence, market research, and competitive analysis.",
        "version": "0.0",
        "x-build-id": "gp7ZAjSfTte9VWDGN"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/stealth_mode~prisradar-product-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-stealth_mode-prisradar-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~prisradar-product-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-stealth_mode-prisradar-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~prisradar-product-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-stealth_mode-prisradar-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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
