# DrMax Scraper - Pharmacy Products CZ SK PL RO (`studio-amba/drmax-scraper`) Actor

Scrape pharmacy products, prices, and availability from DrMax.cz, DrMax.sk, DrMax.pl, and DrMax.ro. Search by keyword, list a category, or export the full catalogue of any of the 4 Central European sites. No login needed.

- **URL**: https://apify.com/studio-amba/drmax-scraper.md
- **Developed by:** [Studio Amba](https://apify.com/studio-amba) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 2 monthly users, 93.3% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 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.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#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

## DrMax Scraper

Scrape pharmacy products, prices, and availability from **DrMax** — Central Europe's largest pharmacy chain with 3,000+ locations across Czech Republic, Slovakia, Poland, and Romania.

Extract medicines, supplements, cosmetics, dosage information, pack sizes, and pricing from all four DrMax e-commerce domains. No login or account needed.

### How to scrape DrMax data

1. Go to the [DrMax Scraper](https://apify.com/studio-amba/drmax-scraper) page on Apify Store.
2. Click **Try for free**.
3. Enter a search query (e.g., "ibuprofen", "vitamín C").
4. Select the country you want to scrape (CZ, SK, PL, RO).
5. Click **Start** and wait for the run to finish.
6. Download your data in JSON, CSV, Excel, or connect via API.

### What data can you extract from DrMax?

This scraper extracts the following fields from DrMax product pages:

| Field | Description |
|-------|-------------|
| `productName` | Full product name including dosage and form |
| `brand` | Brand or manufacturer name |
| `price` | Current selling price |
| `currency` | Currency code (CZK, EUR, PLN, RON) |
| `originalPrice` | Original price before discount |
| `discount` | Discount percentage or label |
| `category` | Product category from breadcrumbs |
| `inStock` | Whether the product is available |
| `packSize` | Package size (e.g., 20 tablets, 100 ml) |
| `imageUrl` | Main product image URL |
| `url` | Full product page URL |
| `productDescription` | Product description text |
| `country` | Country code (cz, sk, pl, ro) |
| `scrapedAt` | ISO 8601 timestamp |

### Supported countries

DrMax operates online pharmacies in four Central European countries:

| Country | Domain | Currency |
|---------|--------|----------|
| Czech Republic | drmax.cz | CZK |
| Slovakia | drmax.sk | EUR |
| Poland | drmax.pl | PLN |
| Romania | drmax.ro | RON |

All four domains share a similar page structure, so the scraper works consistently across all of them. Select the country in the input to target a specific domain, or provide direct URLs from any domain.

### Input options

#### Search mode

Enter a search query and select a country. The scraper will search DrMax and extract products from the results:

```json
{
    "searchQuery": "ibuprofen",
    "country": "cz",
    "maxResults": 50
}
```

#### Category mode

Set `category` to a DrMax category name, written exactly as the site shows it, and leave the search query empty. The scraper returns every product in that category, including its sub-categories.

```json
{
    "category": "Doplňky stravy",
    "country": "cz",
    "maxResults": 10000
}
```

Category names differ per country (Czech names on drmax.cz, Slovak on drmax.sk, and so on). Sub-category names work too, for example `"Péče o pleť"`. If the name is not found, the run stops and lists the top-level categories for that country so you can pick one. A category and a search query can be combined to search inside one category.

#### Full catalogue mode

Set `fullCatalog` to `true` to list every product on the selected site. The scraper walks the catalogue category by category, so nothing is cut off by the search limit described below.

```json
{
    "fullCatalog": true,
    "country": "cz",
    "maxResults": 100000
}
```

Catalogue sizes as of September 2026: about 81,000 products on drmax.cz, 122,000 on drmax.sk, 38,000 on drmax.pl and 43,000 on drmax.ro. Through the residential proxy a run does roughly 1,600 products per minute, so drmax.cz takes about an hour and drmax.sk about 80 minutes. Raise `maxResults` above the catalogue size. The run saves its progress, so a platform migration during a long run resumes where it stopped instead of starting over.

#### The 10,000 results limit on searches

DrMax's search backend returns at most 10,000 products for any one search query, no matter how many pages you request. A run with a broad keyword and `maxResults` above 10,000 stops at 10,000 and logs a warning. To get more than that, use the category filter or full catalogue mode: those split the work into slices that each stay under the limit.

#### Countries

Each country has its own catalog, currency, and language. Set `country` to one of `cz`, `sk`, `pl`, or `ro`, and use native-language keywords for the best results (e.g. `vitamín C` on CZ, `witamina D` on PL).

```json
{
    "searchQuery": "vitamín C",
    "country": "cz",
    "maxResults": 100
}
```

#### Default behavior

If no search query, category or full catalogue flag is provided, the scraper searches "ibuprofen" on drmax.cz. This ensures the actor always returns data.

### Example output

```json
{
    "productName": "Dr. Max Ibuprofen 400 mg 100 potahovaných tablet",
    "brand": "Dr. Max",
    "price": 129,
    "currency": "CZK",
    "originalPrice": 159,
    "discount": "-19%",
    "category": "Bolest a zánět",
    "inStock": true,
    "packSize": "100 tablet",
    "imageUrl": "https://www.drmax.cz/media/product-image.jpg",
    "url": "https://www.drmax.cz/ibuprofen-dr-max-400-mg-potahovane-tablety-100-tablet",
    "productDescription": "Ibuprofen Dr. Max 400 mg je lék určený k úlevě od bolesti...",
    "country": "cz",
    "scrapedAt": "2026-06-09T12:00:00.000Z"
}
```

### How much does it cost to scrape DrMax?

You pay $0.002 per product returned plus a small start fee per run. The scraper reads DrMax's search API directly, so runs are fast and platform usage is negligible:

| Results | Price | Typical run time |
|---------|-------|------------------|
| 100 products | $0.20 | under 30 seconds |
| 1,000 products | $2.00 | about 1 minute |
| 10,000 products | $20.00 | 6 to 7 minutes |
| Full drmax.cz catalogue (~81,000) | ~$162 | about 1 hour |

Products are counted once per run: duplicates across categories are removed before they reach the dataset. Platform usage (compute and proxy traffic) is settled separately by Apify once the run finishes and is small compared to the per-result price.

### Tips for best results

- **Use native language**: Search in Czech on drmax.cz, Polish on drmax.pl, etc. For example, use "vitamín C" instead of "vitamin C" for better results on Czech and Slovak domains.
- **Residential proxies recommended**: DrMax uses Cloudflare protection. Residential proxies provide the most reliable access.
- **Start with a small test**: Use `maxResults: 20` first to verify the scraper works with your proxy setup.
- **Broad keywords return more products**: A general term (e.g. "vitamín", "krém") returns a larger result set than a very specific product name, up to the 10,000 limit per search.
- **Need the whole range?** Use `fullCatalog` or one `category` per run instead of many broad keywords. Keyword runs overlap heavily, so you pay for the same products several times; category runs do not overlap.
- **Stock status**: `inStock` reflects DrMax's own stock flag at scrape time. Products the site lists but cannot ship right now come back as `false`.

### Use cases

- **Price comparison**: Compare pharmacy product prices across 4 Central European countries.
- **Market research**: Track medicine and supplement pricing and availability in the Czech, Slovak, Polish, and Romanian markets.
- **Inventory monitoring**: Monitor stock availability of specific products across DrMax domains.
- **Competitive analysis**: Compare DrMax pricing with other pharmacy chains in the region.
- **Product catalog extraction**: Build a database of pharmacy products with dosage forms, pack sizes, and pricing.

### Integrations

Connect DrMax 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 DrMax 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. Prescription medicines may appear in search results but typically don't show online pricing.

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

**Why am I getting zero results?**
DrMax uses Cloudflare protection. Make sure you're using residential proxies in the proxy configuration. If you still get zero results, try reducing concurrency or increasing timeouts.

# Actor input Schema

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

Search for products by name or keyword. Use the native language for best results (e.g., 'ibuprofen', 'vitamín C', 'witamina D'). Leave empty and set a category or Full catalogue to list products instead of searching.

## `category` (type: `string`):

Only return products from one DrMax category, named exactly as the site shows it (e.g. 'Doplňky stravy', 'Krása a péče', 'Matka a dítě' on drmax.cz). Works on its own (lists the whole category) or together with a search query. Sub-categories work too.

## `fullCatalog` (type: `boolean`):

List every product on the selected DrMax site instead of searching (about 81,000 products on drmax.cz, 122,000 on drmax.sk, 38,000 on drmax.pl, 43,000 on drmax.ro). Raise Max Results accordingly; a full run takes about an hour (drmax.sk about 80 minutes). The search query is ignored in this mode.

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

Which DrMax domain to search (each country has its own catalog, currency, and language).

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

Maximum number of products to return. A single search query can return at most 10,000 products (a limit of DrMax's search API); the category filter and Full catalogue mode go beyond that by scraping category by category.

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

Proxy settings. DrMax uses Cloudflare protection — residential proxies recommended.

## Actor input object example

```json
{
  "searchQuery": "ibuprofen",
  "fullCatalog": false,
  "country": "cz",
  "maxResults": 20,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

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

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

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

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,studio-amba/drmax-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/ATgduah5cJCJarYvt/builds/oAsZvGa6S1lRwhOfC/openapi.json
