# Unieuro Scraper — Italy Electronics Product Data (`studio-amba/unieuro-scraper`) Actor

Scrape products from Unieuro.it, Italy's largest electronics retailer. Extract names, brands, prices, EAN codes, ratings, reviews, stock and images by keyword. No login, no cookies.

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

## Unieuro Scraper

Scrape products from [Unieuro.it](https://www.unieuro.it), Italy's largest consumer-electronics retailer. Search by keyword and pull clean, structured product data: names, brands, prices, original prices, discounts, EAN barcodes, ratings, review counts, stock status, categories, and images.

No login. No cookies. No account required.

### What this scraper does

Give it an Italian keyword ("smartphone", "televisore", "lavatrice", "notebook", "cuffie") and it returns matching Unieuro products as flat JSON rows. Each row is a real product with its current online price, brand, EAN barcode, rating, stock status, and image, ready to load into a spreadsheet, database, or price-monitoring pipeline.

Unieuro's storefront runs its product search through its own backend search index. This actor reads that same structured data directly, so the output is clean and complete without any DOM guesswork or brittle HTML selectors.

### Why use this scraper?

- **Price monitoring** — Track Unieuro prices for TVs, phones, laptops, and appliances over time and catch discounts as they land.
- **Competitive analysis** — Compare Unieuro pricing against MediaMarkt Italy, Euronics, Trony, and other Italian electronics retailers on matching EAN codes.
- **Market research** — Analyse assortment, brand coverage, and pricing across every electronics category in the Italian market.
- **Retail intelligence** — Monitor online stock status and discount percentages across large product ranges.
- **Catalogue enrichment** — Match products by EAN to enrich your own catalogue with images, ratings, and category data.
- **Brand monitoring** — Track how your brand's products are priced, rated, and merchandised on Unieuro.
- **Data journalism & academia** — Build datasets on Italian consumer-electronics pricing and consumer ratings.
- **Reselling & arbitrage** — Find discounted lines and price gaps against other Italian and EU electronics retailers.

### How to scrape Unieuro data

1. **Create an Apify account** — Sign up at [apify.com](https://apify.com) (free tier available).
2. **Open the Unieuro Scraper** — Navigate to this actor's page in the Apify Store.
3. **Enter a search term** — Type an Italian product keyword (e.g., "smartphone", "televisore", "lavatrice"). The scraper matches it against Unieuro's full catalogue.
4. **Refine (optional)** — Restrict to in-stock items, or raise the delay between requests for very large runs.
5. **Set a result limit** — Choose how many products you want (default: 100).
6. **Run the actor** — Click "Start".
7. **Download your data** — Export as JSON, CSV, or Excel from the Dataset tab, or pull it via the Apify API for automated workflows.

### Input

| Field | Type | Description |
|-------|------|-------------|
| `searchQuery` | string | Italian keyword to search the catalogue (e.g. `smartphone`, `televisore`, `lavatrice`, `notebook`, `cuffie`). Defaults to `smartphone`. |
| `maxResults` | integer | Maximum number of products to scrape. Default `100`. |
| `inStockOnly` | boolean | Only return products currently available online. Default `false`. |
| `requestDelaySecs` | integer | Minimum pause between paginated requests (only relevant past 1,000 results). Default `0`. |
| `proxyConfiguration` | object | Proxy settings. Left at the default (Apify automatic proxy) — Unieuro's product data has no anti-bot in front of it. |

An empty input `{}` runs a valid scrape (`smartphone`, up to 100 products), so the actor always returns data.

### Output

Each product is a flat JSON row:

| Field | Type | Example |
|-------|------|---------|
| `name` | string | `United UNLED32M10 TV 32" HD, Triplo tuner DVBT2/C/S2 HEVC MAIN10, Dolby Audio, Parental Control` |
| `brand` | string | `United` |
| `price` | number | null | `99` |
| `originalPrice` | number | null | `179.99` |
| `currency` | string | `EUR` |
| `discount` | string | `-44%` |
| `ean` | string | `8022625132104` |
| `sku` | string | `UNTLED32M10` |
| `inStock` | boolean | null | `true` |
| `rating` | number | null | `4` |
| `reviewCount` | number | null | `0` |
| `category` | string | `Catalogo > TV, DVD e Home Cinema > TV > TV Led` |
| `imageUrl` | string | `https://www.unieuro.it/medias/sys_master/root/hfa/h48/...` |
| `url` | string | `https://www.unieuro.it/online/TV-Led/UNITED-UNLED32M10-...-pidUNTLED32M10` |
| `scrapedAt` | string | `2026-09-13T09:16:16.110Z` |

#### Example output

```json
{
  "name": "United UNLED32M10 TV 32\" HD, Triplo tuner DVBT2/C/S2 HEVC MAIN10, Dolby Audio, Parental Control",
  "brand": "United",
  "price": 99,
  "originalPrice": 179.99,
  "currency": "EUR",
  "discount": "-44%",
  "ean": "8022625132104",
  "sku": "UNTLED32M10",
  "inStock": true,
  "rating": 4,
  "reviewCount": 0,
  "category": "Catalogo > TV, DVD e Home Cinema > TV > TV Led",
  "imageUrl": "https://www.unieuro.it/medias/sys_master/root/hfa/h48/52098121629726/-api-rest-00ed29448a7522f610cac04d7b9ea7e0-assets-14e4fb90f9365932762918415d702179-preview-sgmConversionBaseFormat-sgmProductFormat.jpg",
  "url": "https://www.unieuro.it/online/TV-Led/UNITED-UNLED32M10-TV-32-HD-Triplo-tuner-DVBT2-C-S2-HEVC-MAIN10-Dolby-Audio-Parental-Control-pidUNTLED32M10",
  "scrapedAt": "2026-09-13T09:16:16.110Z"
}
```

`originalPrice` and `discount` are set only when a product is on offer. `rating` and `reviewCount` are populated only for products that have received customer reviews — not every product has them.

### How it works

Unieuro's search runs against its own backend product index, called directly from the storefront's browser. This actor reads that same structured data directly (the same data the site itself uses to render search results), so the output is clean and complete — not scraped from fragile HTML markup. One request can return up to 1,000 matching products; larger runs page through automatically until your result limit is reached.

### How much does it cost?

This actor is billed $0.02 per run plus $0.002 per result:

- **100 products**: ~$0.22
- **1,000 products**: ~$2.02

Your run's usage cost only settles after the run reports SUCCEEDED — reading a mid-run dataset understates the eventual cost.

### Tips

- **Use Italian keywords.** Unieuro is an Italian storefront, so `cuffie` returns more than `headphones` and `lavatrice` more than `washing machine`.
- **Broad category terms return the most.** Terms like `notebook`, `televisore`, `frigorifero`, and `smartphone` map to full catalogue categories with hundreds of products.
- **Large runs.** For several thousand products, set `requestDelaySecs` to `2`–`5` to stay comfortably polite between paginated requests.

### Limitations

- Search is keyword-driven; there is no full-catalogue crawl mode in this version.
- Physical in-store (per-branch) stock is not included — availability reflects national online status only.
- Not every product carries customer ratings; `rating`/`reviewCount` are `null` where Unieuro has none on file.

### Related Scrapers

Building a cross-retailer European electronics price dataset? Pair this with other Studio AMBA electronics scrapers:

- **MediaMarkt Spain / Germany / EU** — same vertical, different European markets.
- **Krefel Scraper** / **Vandenborre Scraper** — Belgian electronics chains.
- **Elgiganten Scraper** — Nordic electronics chain.
- **Darty Scraper** / **Fnac Scraper** — French electronics/media retailers.
- **Mister Auto Scraper** — automotive parts and accessories.

Match products across all of them by `ean` to compare prices on identical items.

# Actor input Schema

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

Italian keyword to search the Unieuro catalogue (e.g. 'televisore', 'smartphone', 'lavatrice', 'notebook', 'cuffie'). Leave empty to use the default.

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

Maximum number of products to scrape. One Algolia request returns up to 1000; higher values page through additional requests of 1000.

## `inStockOnly` (type: `boolean`):

Only return products currently available online.

## `requestDelaySecs` (type: `integer`):

Minimum pause between paginated requests. Only relevant when maxResults exceeds one page (1000 items). 0 = full speed.

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

Proxy settings. Unieuro's product data comes from a direct Algolia API call with no anti-bot in front of it, so this can be left at its default (Apify automatic proxy).

## Actor input object example

```json
{
  "searchQuery": "smartphone",
  "maxResults": 20,
  "inStockOnly": false,
  "requestDelaySecs": 0,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# 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": "smartphone",
    "maxResults": 20,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

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

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

```

## MCP server setup

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