# Power.no Product Facts | Prices & Stock (`zinin/power-no-product-facts`) Actor

Extract NOK prices, online stock and ratings from exact public Power.no product URLs. Structured facts with free diagnostics for blocked pages.

- **URL**: https://apify.com/zinin/power-no-product-facts.md
- **Developed by:** [Tim Zinin](https://apify.com/zinin) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.40 / 1,000 result founds

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Power.no Product Facts

Turn exact public Power.no product URLs into structured Norwegian product facts: name, brand, NOK price, online stock status, rating and product image. Designed for retail analysts who already have a list of products to monitor. This Actor reads only supplied product pages.

### What you get

- One result row per valid product, keyed by Power.no product ID and canonical URL.
- Current online NOK price and `InStock`/`OutOfStock` state from Product JSON-LD when present.
- Optional rating and review count, image URL, category slug and observation timestamp.
- A free diagnostic row for invalid, removed, blocked or unavailable pages.
- On Apify, schedule runs, monitor them, call the API and export datasets to JSON, CSV or Excel.

### How to run it

1. Paste exact `https://www.power.no/.../p-<id>/` URLs into **Exact Power.no product URLs**.
2. Leave **Maximum products** at 20 or set a value up to 50. An explicit `useApifyProxy:false` is accepted; enabled proxies are disabled in this candidate.
3. Start the Actor and read the `Products` dataset or its `/items` API URL. It checks `robots.txt` first and requests only the supplied product URLs.

### Pricing

The Actor's PPE price was confirmed by API GET on 2026-11-01: **$0.002 per valid product** (`result-found`), **$0 per start** and **$0 per diagnostic**. At that price, 100 valid products cost **$0.20**. A valid row and its charge are linked in one dataset write. There is **no actor-specific free quota**. Apify's [Free plan](https://apify.com/pricing) lists $5 monthly usage credit (checked 2026-11-01), which may cover eligible runs subject to the user's other usage; Free-plan buyer behavior has not been measured for this Actor. See [ECONOMICS.md](ECONOMICS.md) for the usage-cost and margin estimates.

The current `result-found` event price is $0.002 per useful row. The following are Actor event charges:

| Useful rows | Actor event charges |
|---:|---:|
| 10 | $0.020 |
| 100 | $0.200 |
| 1,000 | $2.000 |

These examples assume that many valid, billed rows across one or more runs. Input limits and source availability may require several runs. Apify platform compute usage is separate.

### Input

| Field | Required | Purpose |
|---|---|---|
| `productUrls` | Yes | Public HTTPS www.power.no URLs ending /p-<id>/. Search, category, login and redirect routes are not used. |
| `maxItems` | No | Maximum distinct exact URLs read in this run. |
| `proxyConfiguration` | No | Optional. useApifyProxy:false or an empty proxyUrls list is accepted and runs directly; a configured proxy returns a free PROXY_DISABLED diagnostic. |

```json
{
  "productUrls": [
    "https://www.power.no/mobil-og-foto/mobiltelefon/apple-iphone-18-pro-256-gb-svart/p-4532290/",
    "https://www.power.no/data-og-tilbehoer/pc-og-mac/baerbar-pc/lenovo-ideapad-flex-5-14alc7-r5-14-baerbar-pc/p-1813003/"
  ]
}
```

### Output

This row comes from a successful Actor run completed 2026-11-01T15:22:09.289Z. Values are copied from its dataset.

```json
{
  "id": "4532290",
  "name": "Apple iPhone 18 Pro 256 GB, svart",
  "brand": "Apple",
  "price": 15990,
  "currency": "NOK",
  "availability": "InStock",
  "url": "https://www.power.no/mobil-og-foto/mobiltelefon/apple-iphone-18-pro-256-gb-svart/p-4532290/"
}
```

| Field | Meaning |
|---|---|
| `id` | Public source identifier for this result. |
| `name` | Published product or job name. |
| `brand` | Brand reported on the product page. |
| `price` | Numeric price or dated observation. |
| `currency` | Currency code. |
| `availability` | Availability reported on the source page. |
| `url` | Direct source page for this result. |

### Other tools we built

#### Related tools

Related tools for adjacent workflows in e-commerce.

| Actor | What it does |
|---|---|
| [Jumia Product Facts | Direct Product Pages](https://apify.com/zinin/jumia-product-facts) | Pair it in the e-commerce workflow: Extract price, stock, brand and rating facts from exact public Jumia product URLs |
| [Shopify Catalog & Merchandising Intelligence](https://apify.com/zinin/shopify-store-intelligence) | Pair it in the e-commerce workflow: Qualify Shopify merchant leads with evidence-backed public catalog coverage, observed price positioning,... |
| [Chotot Vietnam Listings Scraper](https://apify.com/zinin/chotot-listings) | Pair it in the e-commerce workflow: Pull live classified ad listings (real estate, vehicles, electronics, jobs and more) straight from... |
| [Open Prices Product Price](https://apify.com/zinin/open-prices-product-price) | Pair it in the e-commerce workflow: Find observed product prices by barcode or date in the Open Prices dataset |
| [Zid Product Export Intelligence](https://apify.com/zinin/zid-store-products) | Pair it in the e-commerce workflow: Turn merchant-owned, merchant-authorized, or otherwise licensed Zid product exports into stable evidence,... |

### FAQ / Limitations

**Will it search or discover products?** No. Supply exact product URLs. Power.no's [robots.txt](https://www.power.no/robots.txt), checked 2026-11-01, says “Disallow: /search/” and “Disallow: /category/”; this Actor does not crawl those routes or feeds. It requests one URL at a time with at least a two-second pause. HTTP 403/429 and captchas are reported, never bypassed.

**What this is not.** It is not product discovery, a category crawler, or a license to reuse Power.no catalog content commercially.

**Which price and availability are returned?** The online Product offer in NOK. `InStoreOnly` offers are excluded because store-only prices differ from web prices (observed 9998 NOK online versus 4999 NOK in-store on one fixture). Source `Discontinued` maps to `OutOfStock`. `oldPrice` remains null unless a clear original-price field is present; the five fixtures had none.

**Source rights.** The [Power.no purchase terms page](https://www.power.no/kundeservice/kjoepsvilkaar/) returned HTTP 200 on 2026-11-01, but its server HTML exposed only a client-rendered shell; no operative data-reuse clause could be verified. The exact [robots.txt](https://www.power.no/robots.txt) lines quoted above restrict search and category routes, but robots access is not a commercial reuse license. The Actor owner authorized Store publication on 2026-11-01; this does not grant users commercial reuse rights. Users must assess the source terms and their own use before redistribution.

The Actor does not read accounts, customer reviews, personal contacts or checkout data. Report source changes through the Actor issue page when available.

# Changelog

This Actor's version history is a separate document: https://apify.com/zinin/power-no-product-facts/changelog.md

# Actor input Schema

## `productUrls` (type: `array`):

Public HTTPS www.power.no URLs ending /p-<id>/. Search, category, login and redirect routes are not used.

## `maxItems` (type: `integer`):

Maximum distinct exact URLs read in this run.

## `proxyConfiguration` (type: `object`):

Optional. useApifyProxy:false or an empty proxyUrls list is accepted and runs directly; a configured proxy returns a free PROXY_DISABLED diagnostic.

## Actor input object example

```json
{
  "productUrls": [
    "https://www.power.no/mobil-og-foto/mobiltelefon/apple-iphone-18-pro-256-gb-svart/p-4532290/",
    "https://www.power.no/data-og-tilbehoer/pc-og-mac/baerbar-pc/lenovo-ideapad-flex-5-14alc7-r5-14-baerbar-pc/p-1813003/"
  ],
  "maxItems": 20
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "productUrls": [
        "https://www.power.no/mobil-og-foto/mobiltelefon/apple-iphone-18-pro-256-gb-svart/p-4532290/",
        "https://www.power.no/data-og-tilbehoer/pc-og-mac/baerbar-pc/lenovo-ideapad-flex-5-14alc7-r5-14-baerbar-pc/p-1813003/"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("zinin/power-no-product-facts").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 = { "productUrls": [
        "https://www.power.no/mobil-og-foto/mobiltelefon/apple-iphone-18-pro-256-gb-svart/p-4532290/",
        "https://www.power.no/data-og-tilbehoer/pc-og-mac/baerbar-pc/lenovo-ideapad-flex-5-14alc7-r5-14-baerbar-pc/p-1813003/",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("zinin/power-no-product-facts").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "productUrls": [
    "https://www.power.no/mobil-og-foto/mobiltelefon/apple-iphone-18-pro-256-gb-svart/p-4532290/",
    "https://www.power.no/data-og-tilbehoer/pc-og-mac/baerbar-pc/lenovo-ideapad-flex-5-14alc7-r5-14-baerbar-pc/p-1813003/"
  ]
}' |
apify call zinin/power-no-product-facts --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,zinin/power-no-product-facts"
        }
    }
}
```

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

## OpenAPI specification

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