# Auchan Portugal Prices Scraper (`trovevault/auchan-portugal-prices`) Actor

Scrape current Auchan Portugal product prices, promotions, brands, package sizes, unit prices, images, and URLs.

- **URL**: https://apify.com/trovevault/auchan-portugal-prices.md
- **Developed by:** [Trove Vault](https://apify.com/trovevault) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.85 / 1,000 products

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

## Auchan Portugal Prices Scraper

Extract current product prices from Auchan's Portuguese online catalog. Search by keyword, filter by a free-text brand, or leave both filters empty to collect the complete public catalog.

It reads actual prices displayed in Auchan's public online catalog rather than promotional leaflets. Results include product identity, brand, package size, regular and promotional prices, unit price, currency, image, and product URL.

### Why use this Auchan price scraper?

This Actor converts Auchan's public product cards and promotion labels into a consistent dataset that can feed:

- price comparison apps and consumer tools;
- retail and competitor price monitoring;
- brand distribution and assortment research;
- promotion analysis;
- procurement and category-management workflows;
- recurring price-history datasets;
- data pipelines, dashboards, and spreadsheets.

Use the combined Portugal Supermarket Prices Actor when one run must cover several retailers.

### How does the Auchan price scraper work?

1. Optionally enter a product keyword, a brand, or both.
2. Run the Actor.
3. Download the dataset as JSON, CSV, Excel, XML, or another Apify-supported format.

```mermaid
flowchart LR
    A[Filters] --> B[Auchan catalog] --> C[Price dataset]
```

When Keyword and Brand are both empty, the Actor follows Auchan's public catalog pagination until the available online catalog is exhausted.

The Actor reads public online catalog pages without requiring a customer login, delivery address, or postal-code input.

### What input does the Actor accept?

| Field | Type | Description |
| --- | --- | --- |
| keyword | string | Optional product search such as leite, café, arroz, cerveja, or detergente. |
| brand | string | Optional free-text brand filter such as Mimosa, Delta, Compal, or Fairy. |
| proxyConfiguration | object | Optional Apify Proxy configuration for access problems. |
| datasetId | string | Optional existing Apify dataset that receives a second copy of every result. |
| runId | string | Optional workflow or external job identifier copied to every result. |

Brand is deliberately free text rather than a dropdown. Retailer brand lists change frequently and are too large to keep as a trustworthy static input.

#### Filtered search

```json
{
  "keyword": "leite",
  "brand": "Mimosa",
  "runId": "weekly-milk-prices"
}
```

#### Complete catalog

```json
{}
```

### What Auchan price data does the Actor return?

Each dataset row represents one supermarket product and its currently displayed price.

```json
{
  "supermarket": "Auchan",
  "productId": "3727050",
  "productName": "Detergente Loiça Máquina Fairy Tudo em Um Limão",
  "brand": "Fairy",
  "category": "Limpeza e Cuidados do Lar / Limpeza Cozinha",
  "packageSize": "71 pastilhas",
  "price": 19.99,
  "discountPrice": 12.99,
  "unitPrice": "0,18 €/Un",
  "currency": "EUR",
  "url": "https://www.auchan.pt/...",
  "imageUrl": "https://www.auchan.pt/...",
  "runId": "weekly-milk-prices"
}
```

#### Output fields

| Field | Meaning |
| --- | --- |
| supermarket | Retailer whose online catalog displayed the product. |
| productId | Stable retailer identifier for matching the same item across repeated exports. |
| productName | Displayed product name. |
| brand | Displayed brand when available. |
| category | Displayed catalog category when available. |
| packageSize | Displayed package quantity, weight, or volume. |
| price | Regular displayed price. When there is no promotion, this is the current price. |
| discountPrice | Lower current promotional price, included only when the retailer explicitly displays a promotion. |
| unitPrice | Displayed comparison price per liter, kilogram, or unit. |
| currency | EUR. |
| url | Direct public product page URL. |
| imageUrl | Displayed product image URL when available. |
| runId | Optional identifier copied from the input. |

The absence of discountPrice means that the Actor did not find a genuine lower promotional price on that product card. It does not mean the product has never been promoted.

### How are regular and promotional prices represented?

Price interpretation follows the retailer's public product card:

- A product without an explicit promotion has one price in the price field.
- A promoted product keeps the crossed-out or stated reference price in price and places the lower current amount in discountPrice.
- Unit price remains the retailer's displayed text because units and locale formatting vary.
- The Actor does not calculate historical changes.
- The Actor does not label ordinary prices as discounts.
- Shipping, basket discounts, loyalty-only benefits, coupons, and checkout-specific adjustments are not included unless they are already displayed on the public product card.

### How does brand filtering work?

The Actor sends the keyword and brand to the retailer search where possible and then validates the displayed brand in the parsed results. Brand matching is case-insensitive and accent-insensitive.

A retailer can omit a structured brand or use a different spelling. For maximum recall, search by Keyword without Brand and filter the larger dataset downstream.

### How do I run the Actor through the Apify API?

Run the Actor through the Apify API:

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/trovevault~auchan-portugal-prices/runs" \
  -H "Authorization: Bearer YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "keyword": "café",
    "brand": "Delta"
  }'
```

After the run finishes, read its default dataset through the Apify API or export it in the Console. Keep API tokens in server-side secret storage, not browser code or public repositories.

### How can I integrate Auchan prices into a pipeline?

Use datasetId to append results to a longer-lived Apify dataset while still receiving the normal dataset for each run. Use runId to associate rows with a workflow, snapshot, client, or scheduled job.

For recurring price history, schedule the Actor and retain each run or append to a dedicated dataset. Product ID is the practical matching key for repeated Auchan exports.

### How reliable is the Auchan price scraper?

Request failures are retried. If the public catalog remains unreadable, the run fails with a sanitized message and records details in RUN\_SUMMARY.

Retailer websites can change markup, catalog rules, promotion labels, rate limits, and default online-store context. A successful run means the public pages were readable at that time; it does not guarantee physical-store inventory or checkout availability.

Start without a proxy. If a retailer repeatedly blocks Apify cloud traffic, enable a suitable proxy configuration. Proxy usage can increase run cost.

### What are the current limitations?

- Prices come from the retailer's public Portuguese online catalog, not every physical branch.
- The Actor intentionally has no postal-code input and does not claim store-level local prices.
- Product availability can change between collection and checkout.
- Some loyalty, coupon, app-only, multibuy, or basket promotions may not appear as a simple product discount.
- Category, brand, size, unit price, or image can be absent when the retailer does not expose them consistently.
- Full-catalog runs depend on the products exposed through public pagination at run time.

### How do I troubleshoot an Auchan price run?

#### A brand search returns fewer products than expected

Try the brand name as Keyword and leave Brand empty. This broadens recall when a retailer omits the structured brand value.

#### A complete catalog run takes a long time

This is expected because the Actor follows every available page. Add a Keyword or Brand for a smaller recurring workflow.

#### The run has no results

Check RUN\_SUMMARY and verify the same search on Auchan's public site. Enable a proxy only after direct requests repeatedly fail.

#### A product has no discountPrice

The public card did not expose a lower promotional amount. The regular/current price remains in price.

### How should I use the Actor responsibly?

Use this Actor in accordance with applicable law, retailer terms, and Apify policies. Choose reasonable schedules, avoid unnecessary full-catalog runs, and process only data you are entitled to collect.

# Actor input Schema

## `keyword` (type: `string`):

Search Auchan product names and catalog text. Examples: leite, café, arroz, and detergente. If omitted, Brand can still filter results; if both fields are empty, the Actor scrapes the complete catalog.

## `brand` (type: `string`):

Filter the displayed brand using case- and accent-insensitive free text. Examples: Auchan, Mimosa, Delta, and Fairy. If omitted, products from every brand matching Keyword are returned.

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

Configure Apify Proxy only when Auchan repeatedly blocks direct cloud requests. If omitted, the Actor connects directly, which is the recommended and lowest-cost default.

## `datasetId` (type: `string`):

Enter an existing Apify dataset ID, not a dataset URL, to append a second copy of every product row. If omitted, results are written only to the run's default dataset.

## `runId` (type: `string`):

Add a non-secret workflow, snapshot, campaign, or external job identifier to every output row. Example: weekly-cleaning-prices. If omitted, runId is not added to product rows.

## Actor input object example

```json
{
  "keyword": "leite"
}
```

# Actor output Schema

## `dataset` (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 = {
    "keyword": "leite"
};

// Run the Actor and wait for it to finish
const run = await client.actor("trovevault/auchan-portugal-prices").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 = { "keyword": "leite" }

# Run the Actor and wait for it to finish
run = client.actor("trovevault/auchan-portugal-prices").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 '{
  "keyword": "leite"
}' |
apify call trovevault/auchan-portugal-prices --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,trovevault/auchan-portugal-prices"
        }
    }
}

```

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/f0TLAWTiDqesP7hYJ/builds/GgruSjNhb48OltfXe/openapi.json
