# Yliopiston Apteekki Scraper - Finnish Pharmacy Products (`studio-amba/yliopistonapteekki-scraper`) Actor

Scrapes products from yliopistonapteekki.fi with prices, availability, brand, category and details.

- **URL**: https://apify.com/studio-amba/yliopistonapteekki-scraper.md
- **Developed by:** [Studio Amba](https://apify.com/studio-amba) (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.20 / 1,000 result scrapeds

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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## Yliopiston Apteekki Scraper — Finland's #1 Pharmacy Chain Products, Prices & Stock

Extract products, prices, brands, stock status, ratings, and categories from [Yliopiston Apteekki](https://www.yliopistonapteekki.fi) — Finland's largest pharmacy chain, with locations across the country and a full-scale online store covering OTC medicine, vitamins, skincare, and personal care.

### What is Yliopiston Apteekki Scraper?

Yliopiston Apteekki ("University Pharmacy") is Finland's #1 pharmacy chain by revenue and store count. Its online shop mirrors the in-store catalog: pain relief, cold and flu remedies, vitamins and supplements, skincare and cosmetics, baby and maternity products, and general wellness items — all with Finnish pricing in EUR.

This actor scrapes product data directly from the site's Klevu-powered search backend (a hosted search/merchandising service many Nordic and European e-commerce sites use for on-site search). Instead of parsing rendered HTML pages, the actor queries the same JSON API the website's own search box uses, which returns clean, structured product data in a single request per page of results. What people build with it:

- **Pharmacy price monitoring** — track OTC medicine and supplement prices in the Finnish market over time.
- **Market research** — Nordic health and wellness market analysts benchmark Finnish pharmacy pricing against Sweden (Apoteket, Apotek Hjartat) and other EU pharmacy chains already covered in this catalog.
- **Brand distribution tracking** — supplement and skincare brands check their presence, pricing, and category placement on Finland's largest pharmacy retailer.
- **Competitive analysis** — competing Finnish pharmacies and online drugstores monitor Yliopiston Apteekki's catalog breadth and pricing strategy.
- **Consumer health trend research** — track bestselling products, ratings, and category trends in the Finnish OTC and wellness market.

### What data does Yliopiston Apteekki Scraper extract?

Each product record includes:

- **Product name** — full product title as listed
- **Brand** — manufacturer or brand name (e.g. "Burana", "Panadol", "The Ordinary")
- **Price** — current selling price in EUR
- **Original price** — pre-discount price, when the product is on sale
- **Currency** — EUR
- **SKU** — the site's internal product code
- **Product ID** — Klevu's internal product/variant identifier
- **Stock status** — whether the product is currently in stock
- **Rating** — average customer rating (0–5 scale), when available
- **Review count** — number of customer reviews
- **Image** — main product image URL
- **Description** — product description text, when the catalog exposes one
- **Category / categories** — product category breadcrumb
- **Language** — content language (fi)
- **URL** — direct link to the product page on yliopistonapteekki.fi

### How to scrape Yliopiston Apteekki data

1. Go to the [Yliopiston Apteekki Scraper](https://apify.com/studio-amba/yliopistonapteekki-scraper) page on Apify Store.
2. Click **Try for free**.
3. Enter a Finnish search query (e.g. `"vitamiini"`, `"särkylääke"`, `"aurinkovoide"`).
4. Set `maxResults` to the number of products you need.
5. Click **Start** and wait for the run to finish.
6. Download your data in JSON, CSV, Excel, or connect via API.

### Input

| Field | Type | Required | Description |
|-------|------|----------|--------------|
| `searchQuery` | String | No | Search by Finnish keyword, e.g. `"vitamiini"` (vitamins), `"särkylääke"` (pain medicine), `"aurinkovoide"` (sunscreen) |
| `maxResults` | Integer | No | Maximum number of products to return (default: 100, max: 10,000) |
| `proxyConfiguration` | Object | No | Apify proxy settings. The Klevu search API has no anti-bot protection, so datacenter proxies (or no proxy at all) work fine |

#### Default behavior

If no `searchQuery` is provided, the scraper defaults to `"vitamiini"`. This ensures the actor always returns data, even with an empty input `{}`.

```json
{
    "searchQuery": "särkylääke",
    "maxResults": 50
}
```

#### Tips

- **Use Finnish keywords** for the best results: `"vitamiini"` (vitamin), `"särkylääke"` (pain medicine), `"aurinkovoide"` (sunscreen), `"ihovoide"` (skin cream), `"kuumemittari"` (thermometer).
- **Broad keywords return more products.** A general term like `"vitamiini"` returns 1,500+ matches; a specific product name returns a handful.
- **Pagination is automatic** up to `maxResults` — the actor pages through the Klevu search API until it has enough results or the catalog runs out of matches.

### Output

Every output item follows the shared Studio AMBA product schema. Example:

```json
{
    "name": "COSRX ADVANCED THE VITAMIN C 23 SERUM 20 ml",
    "brand": "COSRX",
    "price": 33.9,
    "currency": "EUR",
    "url": "https://www.yliopistonapteekki.fi/cosrx-advanced-the-vitamin-c-23-serum-20-ml-1002497",
    "scrapedAt": "2026-07-31T14:20:11.123Z",
    "language": "fi",
    "sku": "1002497",
    "productId": "88178",
    "inStock": true,
    "rating": 0,
    "reviewCount": 0,
    "imageUrl": "https://www.yliopistonapteekki.fi/media/catalog/product/cache/5d93c3eba1682290d2f2d04139515abe/1/0/1002497--t1773367217_1.jpg",
    "description": "Tehokas C-vitamiiniseerumi samealle ja epätasaiselle iholle. COSRX Advanced The Vitamin C 23 Serum 20 ml sisältää korkean pitoisuuden, 23 % puhdasta C-vitamiinia sekä E-vitamiinia ja glutationia.",
    "categories": [
        "Kosmetiikka",
        "Kasvojen ihonhoito",
        "Seerumit ja tehohoidot",
        "Seerumit ja tehohoidot kaikille ihotyypeille",
        "Kaikki kauneustuotteet",
        "K-Beauty – Korealainen kosmetiikka",
        "Korealaiset seerumit ja hoitonesteet",
        "Kauneuden huippumerkit -25 %",
        "Tarjoukset"
    ],
    "category": "Kosmetiikka"
}
```

### How much does it cost to scrape Yliopiston Apteekki?

The scraper talks directly to the site's search API (no browser rendering needed), so runs are fast and cheap:

| Results | Estimated cost | Time |
|---------|---------------|------|
| 20 products | ~$0.04 | ~5 sec |
| 100 products | ~$0.20 | ~15 sec |
| 500 products | ~$1.00 | ~1 min |

Costs are dominated by per-result pricing rather than compute, since no browser or proxy-heavy fetching is required for the search itself.

### Use cases

- **Price comparison**: Compare Finnish pharmacy pricing against Swedish and other Nordic/EU pharmacy chains.
- **Market research**: Track OTC medicine, vitamin, and skincare pricing and availability trends in Finland.
- **Inventory monitoring**: Monitor stock availability of specific products over time.
- **Competitive analysis**: Compare Yliopiston Apteekki's pricing and assortment with other pharmacy chains.
- **Product catalog extraction**: Build a database of Finnish pharmacy products with brand, category, and pricing detail.

### Integrations

Connect Yliopiston Apteekki Scraper output to your tools:

- **Google Sheets** — Export product data to spreadsheets
- **Slack / Email** — Get notifications when prices change
- **Webhooks** — Trigger actions when new data is available
- **API** — Access results programmatically via Apify API
- **Zapier / Make** — Connect to 5,000+ apps

### FAQ

**Is a Yliopiston Apteekki account required?**
No. This scraper extracts publicly available product data without any login or authentication.

**Can I scrape prescription medicines?**
The scraper extracts publicly listed product information from search results. Prescription-only medicines may appear but typically show limited pricing detail online, as is standard for EU pharmacy regulation.

**How often should I run the scraper?**
For price monitoring, daily or weekly runs are recommended. Yliopiston Apteekki updates prices, stock, and promotions regularly.

**Why am I getting zero results?**
Try a broader or more common Finnish keyword. Very specific or misspelled product names may not match anything in the catalog.

**Do I need residential proxies?**
No. The site's search backend (Klevu) has no anti-bot protection — plain requests work reliably without residential proxies.

### Related Scrapers

Studio AMBA maintains a full European pharmacy and drugstore coverage cluster:

- [Apoteket Scraper](https://apify.com/studio-amba/apoteket-scraper) — Sweden's largest online pharmacy
- [Apotek Hjärtat Scraper](https://apify.com/studio-amba/apotekhjartat-scraper) — Swedish pharmacy chain, omnichannel pricing
- [DrMax Scraper](https://apify.com/studio-amba/drmax-scraper) — Central European pharmacy chain (CZ/SK/PL/RO)
- [Mifarma Scraper](https://apify.com/studio-amba/mifarma-scraper) — Spanish online pharmacy
- [Rossmann Scraper](https://apify.com/studio-amba/rossmann-scraper) — European drugstore chain, health and beauty products

# Actor input Schema

## `searchQuery` (type: `string`):

Search term to find products (Finnish keywords work best, e.g. "vitamiini", "särkylääke", "aurinkovoide")

## `maxResults` (type: `integer`):

Maximum number of products to scrape

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

Apify proxy settings. The Klevu search API has no anti-bot protection, so datacenter proxies (or no proxy) work fine.

## Actor input object example

```json
{
  "searchQuery": "vitamiini",
  "maxResults": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "FI"
  }
}
```

# 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 = {
    "searchQuery": "vitamiini",
    "maxResults": 50,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "FI"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("studio-amba/yliopistonapteekki-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 = {
    "searchQuery": "vitamiini",
    "maxResults": 50,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "FI",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("studio-amba/yliopistonapteekki-scraper").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 '{
  "searchQuery": "vitamiini",
  "maxResults": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "FI"
  }
}' |
apify call studio-amba/yliopistonapteekki-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,studio-amba/yliopistonapteekki-scraper"
        }
    }
}

```

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/0e8QwLLdYa6cxy6iY/builds/utzoWMrbi8ZuCu1Zh/openapi.json
