# BENU Hungary Scraper — Pharmacy Products & Prices (`studio-amba/benu-hu-scraper`) Actor

Scrape products, prices, brands, and stock status from benu.hu, Hungary's BENU pharmacy chain online store. Supports browsing all products, filtering by collection, or searching by keyword.

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

## BENU Hungary Scraper

Scrape pharmacy products, prices, brands, and stock status from [benu.hu](https://benu.hu) — the Hungarian branch of the BENU pharmacy chain's online store. No cookies or login required.

### Why use this actor?

BENU Hungary carries medicines, dietary supplements, vitamins, baby care, cosmetics, and medical devices from hundreds of Hungarian and international manufacturers. If you need pharmacy price monitoring, product catalog feeds, brand availability tracking, or vitamin/supplement market data for the Hungarian market, this actor delivers structured data straight from the store's own product feed — fast and reliable.

This is part of Studio AMBA's European BENU pharmacy-chain coverage (built alongside the site's Shopify-family siblings across other markets, and complements DOZ.pl, Wells.pt, Catena.ro, Rossmann, and Dr.Max in the wider EU pharmacy vertical).

### Features

- **Three scraping modes** — search by keyword, browse by Shopify collection (e.g. `a-vitamin`, `ajakapolo`), or scrape the full product catalog
- **Fast API-based scraping** — uses the store's native Shopify JSON endpoints, no HTML parsing needed
- **Rich product data** — names, brands (manufacturer/vendor), prices, sale prices, SKUs, images, descriptions, and product categories
- **No cookies, no login required** — works out of the box
- **Empty input still works** — leave the input blank and the actor scrapes the open catalog feed page by page

### Input

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `searchQuery` | String | No | Product search term, Hungarian keywords work best (e.g. `"vitamin"`, `"fejfájás"`, `"napozó"`) |
| `collection` | String | No | Shopify collection handle (e.g. `"a-vitamin"`, `"ajakapolo"`) |
| `maxResults` | Integer | No | Maximum products to return (default: 100) |
| `proxyConfiguration` | Object | No | Apify proxy settings — defaults to RESIDENTIAL (Hungary), see Anti-bot note below |

Without input, all products are scraped page by page via `/products.json`.

### Output

Each result contains:

| Field | Type | Example |
|-------|------|---------|
| `name` | String | `"Vegnum Energy-D kapszula 30 db"` |
| `brand` | String | `"Gemil Pharma Kft."` |
| `price` | Number | `6019` |
| `originalPrice` | Number | `6469` |
| `currency` | String | `"HUF"` |
| `sku` | String | `"203919"` |
| `productId` | String | `"8997021515995"` |
| `inStock` | Boolean | `true` |
| `category` | String | `"Étrend kiegészítők (ETR)"` |
| `url` | String | Full product page URL |
| `imageUrl` | String | Primary product image URL |
| `imageUrls` | Array | All product image URLs |
| `description` | String | Cleaned product description |
| `variants` | Array | Variant-level SKUs with pricing and availability |
| `scrapedAt` | String | ISO 8601 timestamp of when the item was scraped |

### Example output

```json
{
    "name": "Boularix Cink A-Vitamin étrendkiegészítő kapszula",
    "brand": "BENU Gyógyszertár Webshop",
    "price": 4349,
    "currency": "HUF",
    "url": "https://benu.hu/products/boularix-cink-a-vitamin-etrendkiegeszito-kapszula",
    "scrapedAt": "2026-08-12T09:13:47.540Z",
    "originalPrice": 6129,
    "sku": "782138",
    "productId": "15934203429194",
    "inStock": true,
    "imageUrl": "https://cdn.shopify.com/s/files/1/0769/7278/5883/files/6312a237-df2c-487b-ae28-7270bc717c5d.jpg",
    "imageUrls": [
        "https://cdn.shopify.com/s/files/1/0769/7278/5883/files/6312a237-df2c-487b-ae28-7270bc717c5d.jpg"
    ],
    "description": "A készítményben található saccharomyces boulardii élesztő kultúra jól ismert és széles körben alkalmazott jótékony mikroorganizmus...",
    "category": "Egyéb",
    "variants": [
        {"title": "Default Title", "sku": "782138", "price": 4349, "available": true, "originalPrice": 6129}
    ]
}
```

### Cost estimate

This actor uses approximately **0.25 compute units per 1,000 products** — it calls the store's native JSON API directly (250 products per request), so it's one of the cheapest scrapers in this catalog to run. A 20-item test run cost under $0.01 in Apify platform usage. Note that a run's usage cost only settles after it reports **SUCCEEDED** — reading the dataset mid-run will show a cost far below the final total.

### How it works

benu.hu runs on Shopify. The scraper uses the store's native Shopify API endpoints:

1. `/products.json?limit=250&page=N` for full catalog browsing
2. `/collections/{handle}/products.json` for collection-specific browsing
3. `/search/suggest.json` for keyword search, with fallback to full-catalog filtering for queries that need more than the suggest endpoint's ~10 results

### Anti-bot note

The site itself has no anti-bot protection — the products.json feed is fully open. Shopify's own infrastructure, however, rate-limits (HTTP 429) Apify's shared automatic proxy pool on high-volume feed requests, because those IPs are already busy hitting other Shopify stores. This actor defaults to RESIDENTIAL proxy (Hungary) for that reason, not because benu.hu itself blocks requests.

### Limitations

- Search mode uses Shopify's suggest endpoint (max 10 initial results), then scans the full catalog for additional matches
- `inStock` reflects whether at least one product variant is available; most BENU products have a single default variant
- Data is scraped from the public website and may change without notice
- Prices are in HUF (Hungarian forint) exactly as published — no currency conversion is applied

### Related scrapers

- [DOZ.pl Scraper](https://apify.com/store) — Polish online pharmacy
- [Wells.pt Scraper](https://apify.com/store) — Portuguese online pharmacy
- [Catena.ro Scraper](https://apify.com/store) — Romanian online pharmacy
- [Rossmann Scraper](https://apify.com/store) — European drugstore chain
- [Dr.Max Scraper](https://apify.com/store) — Central European pharmacy chain

### How to scrape Benu Hungary data

1. Go to this actor's page on the [Apify Store](https://apify.com/store).
2. Click **Try for free** to open it in Apify Console.
3. Configure your search query, collection handle, or leave input blank to scrape the full catalog. Set the maximum number of results and adjust proxy settings if needed.
4. Click **Start** and wait for the run to finish.
5. Download your data in JSON, CSV, Excel, or connect it to your workflow via API.

You can also schedule regular runs, set up webhooks for real-time notifications, or integrate the results directly into your application using the [Apify API](https://docs.apify.com/api).

# Actor input Schema

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

Search for products by keyword (Hungarian keywords work best, e.g. 'vitamin', 'fejfájás', 'napozó'). Leave empty to browse all products.

## `collection` (type: `string`):

Shopify collection handle to scrape (e.g. 'a-vitamin', 'ajakapolo'). Leave empty for all products or to use Search Query instead.

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

Maximum number of products to return.

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

Apify proxy settings. Defaults to RESIDENTIAL (Hungary) — Shopify rate-limits (429) Apify's shared automatic proxy pool on the products.json feed, so residential is required here, not just a safety default.

## Actor input object example

```json
{
  "searchQuery": "vitamin",
  "maxResults": 20,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "HU"
  }
}
```

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

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

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

```

## MCP server setup

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