# Pilulka Scraper - Czech & Slovak Pharmacy Products (`studio-amba/pilulka-scraper`) Actor

Scrape products, prices, and availability from Pilulka.cz and Pilulka.sk. Extract pharmacy product data including prices, dosage forms, brands, and stock status. Supports search queries and category URLs. No login needed.

- **URL**: https://apify.com/studio-amba/pilulka-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

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-usage

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

## Pilulka Scraper

Scrape product data from **Pilulka.cz** (Czech Republic) and **Pilulka.sk** (Slovakia), the largest online pharmacy platforms in Central Europe. Extract product names, prices, availability, brands, dosage forms, and more.

No login or account needed. Works with Apify proxy for reliable access.

### How to scrape Pilulka data

1. Go to [Pilulka Scraper](https://apify.com/studio-amba/pilulka-scraper) on Apify Store.
2. Click **Try for free** to open the actor in Apify Console.
3. Enter a search query (e.g., "ibuprofen", "vitamin D", "nurofen") or paste a category URL.
4. Select the country: **CZ** for pilulka.cz (prices in CZK) or **SK** for pilulka.sk (prices in EUR).
5. Set **Max Results** to control how many products you want.
6. Click **Start** and wait for the run to finish.
7. Download your data as JSON, CSV, or Excel from the **Dataset** tab.

### Features

- Scrape product data from both **pilulka.cz** and **pilulka.sk**
- Search by keyword or scrape entire categories
- Extract prices in local currency (CZK for Czech, EUR for Slovak)
- Detect original prices and discounts
- Identify dosage forms (tablet, capsule, syrup, gel, etc.)
- Check stock availability
- Handles pagination automatically
- No login or cookies required

### Input parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `searchQuery` | string | Search keyword (e.g., "ibuprofen", "vitamin"). Defaults to "ibuprofen" if empty. |
| `categoryUrl` | string | Direct category URL to scrape. Overrides search query. |
| `country` | enum | `cz` for Czech Republic (pilulka.cz) or `sk` for Slovakia (pilulka.sk). Default: `cz`. |
| `maxResults` | integer | Maximum products to return. Default: 100, max: 10000. |
| `proxyConfiguration` | object | Proxy settings. Residential proxies recommended. |

### Output data

Each product in the dataset contains the following fields:

| Field | Type | Description |
|-------|------|-------------|
| `productName` | string | Full product name |
| `brand` | string | Brand or manufacturer |
| `price` | number | Current selling price |
| `currency` | string | CZK or EUR |
| `originalPrice` | number | Price before discount (if applicable) |
| `discount` | string | Discount label or percentage |
| `category` | string | Product category |
| `inStock` | boolean | Whether the product is in stock |
| `dosageForm` | string | Form: tablet, capsule, syrup, gel, etc. |
| `imageUrl` | string | Product image URL |
| `url` | string | Full product page URL |
| `productDescription` | string | Product description text |
| `country` | string | Country code (cz or sk) |
| `scrapedAt` | string | ISO 8601 timestamp |

### Example output

```json
{
    "productName": "Ibuprofen Aneos 400mg 100 tablet",
    "brand": "Aneos",
    "price": 129.9,
    "currency": "CZK",
    "originalPrice": 149.9,
    "discount": "-13%",
    "category": "Volne prodejne leky",
    "inStock": true,
    "dosageForm": "tablet",
    "imageUrl": "https://www.pilulka.cz/images/product/ibuprofen-aneos.jpg",
    "url": "https://www.pilulka.cz/ibuprofen-aneos-400mg-tbl-flm-100",
    "productDescription": "Ibuprofen Aneos contains the active substance ibuprofen...",
    "country": "cz",
    "scrapedAt": "2026-06-09T12:00:00.000Z"
}
````

### Use cases

- **Price monitoring**: Track pharmacy product prices across Czech and Slovak markets
- **Market research**: Compare product availability and pricing between CZ and SK
- **Competitor analysis**: Monitor pharmacy product assortments and pricing strategies
- **Healthcare data**: Collect pharmaceutical product data for research
- **Price comparison**: Build price comparison datasets for pharmacy products

### Tips for best results

- Use **residential proxies** for the most reliable scraping
- Set the proxy country to match your target (`CZ` for Czech, `SK` for Slovak)
- Start with a small `maxResults` (5-10) to test before running larger scrapes
- Category URLs give more targeted results than broad search queries
- The actor handles pagination automatically, so you can scrape large categories

### Supported websites

| Website | Country | Currency | URL |
|---------|---------|----------|-----|
| Pilulka.cz | Czech Republic | CZK | https://www.pilulka.cz |
| Pilulka.sk | Slovakia | EUR | https://www.pilulka.sk |

### Cost of usage

The actor uses Playwright with residential proxies for reliable access. A typical run scraping 100 products takes about 1-2 minutes and costs approximately $0.05-0.10 in platform credits, depending on proxy usage.

### Integrations

Pilulka Scraper can be connected with almost any cloud service or web app through Apify integrations. You can integrate with tools like Make, Zapier, Slack, Airbyte, GitHub, Google Sheets, Google Drive, and many more. You can also use webhooks to trigger actions whenever the scraper finishes a run.

### Questions or feedback?

If you have questions, need help, or want to report a bug, open an issue on the [actor's Issues tab](https://apify.com/studio-amba/pilulka-scraper/issues) or contact us through the Apify platform.

# Actor input Schema

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

Search for products by keyword (e.g., 'ibuprofen', 'vitamin', 'nurofen'). The actor searches on the selected Pilulka domain.

## `categoryUrl` (type: `string`):

A Pilulka category page URL to scrape. Example: https://www.pilulka.cz/volne-prodejne-leky or https://www.pilulka.sk/vitaminy-a-mineraly. Overrides search query if provided.

## `country` (type: `string`):

Which Pilulka domain to scrape. CZ = pilulka.cz (Czech, CZK), SK = pilulka.sk (Slovak, EUR).

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

Maximum number of products to return.

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

Proxy settings. Residential proxies recommended for reliable access.

## Actor input object example

```json
{
  "searchQuery": "ibuprofen",
  "country": "cz",
  "maxResults": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "CZ"
  }
}
```

# 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": "ibuprofen",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "CZ"
    }
};

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

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

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Pilulka Scraper - Czech & Slovak Pharmacy Products",
        "description": "Scrape products, prices, and availability from Pilulka.cz and Pilulka.sk. Extract pharmacy product data including prices, dosage forms, brands, and stock status. Supports search queries and category URLs. No login needed.",
        "version": "0.1",
        "x-build-id": "9ffwHYwaSg60J4uEW"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/studio-amba~pilulka-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-studio-amba-pilulka-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/studio-amba~pilulka-scraper/runs": {
            "post": {
                "operationId": "runs-sync-studio-amba-pilulka-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/studio-amba~pilulka-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-studio-amba-pilulka-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": {
                    "searchQuery": {
                        "title": "Search Query",
                        "type": "string",
                        "description": "Search for products by keyword (e.g., 'ibuprofen', 'vitamin', 'nurofen'). The actor searches on the selected Pilulka domain."
                    },
                    "categoryUrl": {
                        "title": "Category URL",
                        "type": "string",
                        "description": "A Pilulka category page URL to scrape. Example: https://www.pilulka.cz/volne-prodejne-leky or https://www.pilulka.sk/vitaminy-a-mineraly. Overrides search query if provided."
                    },
                    "country": {
                        "title": "Country",
                        "enum": [
                            "cz",
                            "sk"
                        ],
                        "type": "string",
                        "description": "Which Pilulka domain to scrape. CZ = pilulka.cz (Czech, CZK), SK = pilulka.sk (Slovak, EUR).",
                        "default": "cz"
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum number of products to return.",
                        "default": 100
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy settings. Residential proxies recommended for reliable access."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
