# Verkkokauppa.com Product Price and Stock Facts (`zinin/verkkokauppa-product-facts`) Actor

Check exact public Verkkokauppa.com product URLs for price, stock, SKU and optional aggregate rating facts. Fact-only output; source permissions remain the user's responsibility.

- **URL**: https://apify.com/zinin/verkkokauppa-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 $3.50 / 1,000 verkkokauppa.com product facts

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

## Verkkokauppa.com product price and stock facts

Check an exact Finnish Verkkokauppa.com product URL for SKU, price in EUR, availability and optional aggregate rating. The output is a small fact row for a known product basket. The Actor checks public pages directly and reports blocked or unavailable URLs without a paid result.

### What you get

- One dataset row per valid product, with source URL and check time.
- JSON-LD `Product` and `Offer` facts only; no descriptions, images or review text are copied.
- Up to 20 exact Finnish product URLs per run, with duplicate URLs checked once.
- Missing products, blocked pages and malformed responses recorded in the free `OUTPUT` summary.
- Export the dataset by API or schedule checks on Apify. A bounded cloud canary has produced two useful rows.

### How to run it

1. Supply one to 20 public `https://www.verkkokauppa.com/fi/product/...` URLs in `productUrls`.
2. Run the Actor. It checks `robots.txt` and then each exact URL without a proxy or account. Follow the source's applicable terms when choosing URLs and frequency.
3. Read valid fact rows from the default dataset and per-URL diagnostics from `OUTPUT`. Use `checkedAt` when comparing checks over time.

### Pricing

Current Apify PPE tariff: **0 USD start + 0.005 USD per `result-found` product row**. Six valid rows cost 0.030 USD. There is no free-tier row cap. An error, blocked page, missing product or an exhausted charge limit produces no paid row. The code refuses platform delivery if the required single-event price is missing or if start/default-dataset charges are configured.

The bounded local proof on 01 Nov 2026 found six valid rows from six exact URLs. A later private Apify canary returned two useful rows. A residential proxy is not enabled; availability can change by URL, geography and time.

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

| Useful rows | Actor event charges |
|---:|---:|
| 10 | $0.050 |
| 100 | $0.500 |
| 1,000 | $5.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 | One to 20 public https://www.verkkokauppa.com/fi/product/... URLs. Category, search, account and other hosts are rejected. No login or proxy is used. |

```json
{
  "productUrls": [
    "https://www.verkkokauppa.com/fi/product/634018/Big-Green-Egg-Genius-Temperature-Control-digitaalinen-paisto"
  ]
}
```

### Output

This row comes from a successful Actor run completed 2026-11-01T16:14:45.427Z. Values are copied from its dataset.

```json
{
  "found": true,
  "site": "Verkkokauppa.com",
  "sku": "634018",
  "price": 335.99,
  "currency": "EUR",
  "availability": "in_stock",
  "sourceUrl": "https://www.verkkokauppa.com/fi/product/634018/Big-Green-Egg-Genius-Temperature-Control-digitaalinen-paisto"
}
```

| Field | Meaning |
|---|---|
| `found` | True when a useful price observation exists. |
| `site` | Public career-site URL requested by the Actor. |
| `sku` | Product identifier shown by the source. |
| `price` | Numeric price or dated observation. |
| `currency` | Currency code. |
| `availability` | Availability reported on the source page. |
| `sourceUrl` | Direct attribution URL for the observation. |

### 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 |
| [Power.no Product Facts | Prices & Stock](https://apify.com/zinin/power-no-product-facts) | Pair it in the e-commerce workflow: Extract NOK prices, online stock and ratings from exact public Power.no product URLs |
| [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 |
| [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... |

### FAQ / Limitations

**Can I monitor a category?** No. This Actor accepts exact product URLs only. It does not discover products, follow pagination, log in or rotate identities.

**Do ratings always exist?** No. Only three of six live rows in this proof had an aggregate rating. The rest correctly returned null.

**Will every page fit the limit?** The six tested pages were 605–899 KB. The runtime caps a response at 1.5 MB and reports an oversize page as an unpaid error. Other products may be larger.

**What source permissions apply?** Use only public product URLs and comply with [Verkkokauppa.com's terms](https://www.verkkokauppa.com/fi/ehdot/sopimusehdot/yritysmyynti). The Actor does not confer a license to republish the retailer's catalog or content. Merchant-specific permission for commercial data reuse has not been established.

**What has been verified?** Parser and charge-gate tests, Apify schema and icon validation, a read-only local probe, and a bounded private Apify canary with two useful rows. The fixture classes are sanitized fact-only JSON-LD projections, not full saved retailer pages.

The [Verkkokauppa.com business sales terms](https://www.verkkokauppa.com/fi/ehdot/sopimusehdot/yritysmyynti) say they apply to contracts between the supplier and customer: “Näitä yleisiä sopimusehtoja (”Ehdot”) sovelletaan”. This is not a third-party catalog license.

# Changelog

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

# Actor input Schema

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

One to 20 public https://www.verkkokauppa.com/fi/product/... URLs. Category, search, account and other hosts are rejected. No login or proxy is used.

## Actor input object example

```json
{
  "productUrls": [
    "https://www.verkkokauppa.com/fi/product/634018/Big-Green-Egg-Genius-Temperature-Control-digitaalinen-paisto"
  ]
}
```

# Actor output Schema

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

Default dataset items API URL.

## `summary` (type: `string`):

OUTPUT key-value store record API URL.

# 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.verkkokauppa.com/fi/product/634018/Big-Green-Egg-Genius-Temperature-Control-digitaalinen-paisto"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("zinin/verkkokauppa-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.verkkokauppa.com/fi/product/634018/Big-Green-Egg-Genius-Temperature-Control-digitaalinen-paisto"] }

# Run the Actor and wait for it to finish
run = client.actor("zinin/verkkokauppa-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.verkkokauppa.com/fi/product/634018/Big-Green-Egg-Genius-Temperature-Control-digitaalinen-paisto"
  ]
}' |
apify call zinin/verkkokauppa-product-facts --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,zinin/verkkokauppa-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/tmmYxq7Azvd24HORH/builds/iFLSIbcoBfm0t6khE/openapi.json
