Mercadona Grocery Scraper - Prices, EAN & Catalog avatar

Mercadona Grocery Scraper - Prices, EAN & Catalog

Pricing

from $6.80 / 1,000 results

Go to Apify Store
Mercadona Grocery Scraper - Prices, EAN & Catalog

Mercadona Grocery Scraper - Prices, EAN & Catalog

Scrape Mercadona's full grocery catalog: product name, price, price-per-unit, packaging/format, brand, EAN barcode, origin, ingredients and category. Export to JSON, CSV or Excel.

Pricing

from $6.80 / 1,000 results

Rating

0.0

(0)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Mercadona Grocery Scraper - Prices, EAN & Catalog

Mercadona Grocery Scraper - Prices, EAN & Catalog

Here is one real result, with every field the actor returns:

{
"id": "4241",
"slug": "aceite-oliva-04o-hacendado-garrafa",
"displayName": "Aceite de oliva 0,4º Hacendado",
"brand": "Hacendado",
"ean": "8402001027482",
"origin": "España",
"packaging": "Garrafa",
"unitPrice": 17.75,
"previousUnitPrice": 18.75,
"priceDecreased": false,
"bulkPrice": 3.55,
"referencePrice": 3.55,
"referenceFormat": "L",
"unitSize": 5,
"sizeFormat": "l",
"totalUnits": null,
"packSize": null,
"isPack": false,
"taxPercentage": 4,
"isVariableWeight": false,
"sellingMethod": 0,
"isNew": false,
"published": true,
"unavailableFrom": null,
"unavailableWeekdays": [],
"requiresAgeCheck": false,
"category": "Aceite de oliva",
"categoryPath": "Aceite, especias y salsas > Aceite, vinagre y sal > Aceite de oliva",
"thumbnail": "https://prod-mercadona.imgix.net/images/3b8cde7b3cb069ee0316029012cf8562.jpg?fit=crop&h=300&w=300",
"url": "https://tienda.mercadona.es/product/4241/aceite-oliva-04o-hacendado-garrafa",
"source": "Mercadona",
"observedAt": "2026-08-11T11:09:15.380Z",
"legalName": "HACENDADO ACEITE DE OLIVA",
"description": "Aceite de oliva 0,4º Hacendado",
"ingredients": "Ingredientes: Aceite de oliva refinado y Aceite de Oliva Virgen Extra",
"allergens": "x99.",
"mandatoryMentions": "Aceite que contiene exclusivamente aceites de oliva que se hayan sometido a un tratamiento de refinado y de aceites obtenidos directamente de aceitunas. El aceite a bajas temperaturas puede presentar enturbiamientos, que en nada afectan a sus características.",
"alcoholByVolume": null,
"suppliers": [
"Aceites Abril S.L.",
"Aceites del Sur- Coosur S.A.",
"Borges Agricultural & Industrial Edible Oils, S.A.U.",
"Compañía Extremeña de Aceites y Cereales S.L.",
"MERCADONA",
"Mercaoleo, S.L. para Mercadona",
"SOVENA ESPAÑA S.A.U."
],
"supplierCount": 7,
"photos": [
"https://prod-mercadona.imgix.net/images/3b8cde7b3cb069ee0316029012cf8562.jpg?fit=crop&h=600&w=600",
"https://prod-mercadona.imgix.net/images/3eb95d1e4b1daee2df5e5c85dafbfe38.jpg?fit=crop&h=600&w=600"
],
"photoCount": 2
}

The most complete Mercadona grocery scraper available. It returns every field the Mercadona product catalog exposes for each item, plus optional detail fields (EAN, origin, ingredients, allergens, suppliers, photos), and gives you region, category and keyword filters to target exactly the products you need.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it does

The actor calls Mercadona's public product catalog for the warehouse (region) you choose, walks the category tree, and writes one normalized record per grocery product to the run's dataset. Prices are region-scoped, so the same product can cost differently by warehouse. Missing source values are returned as null. With detail fetch on, each product's detail page is read to add EAN barcode, origin, legal name, ingredients, allergens, suppliers and full-resolution photos.

Data covers Mercadona's Spanish online grocery catalog only. Mercadona sells no products outside Spain, so coverage is Spain-wide across the supported warehouses.

Quickstart

Open the actor, paste this into the input, and press Run. It returns up to 50 products from category 112 (Aceite, vinagre y sal) for the Madrid warehouse, with full details.

{
"categoryIds": ["112"],
"maxProducts": 50,
"warehouse": "mad1",
"withDetails": true
}

Leave categoryIds empty to sweep the entire catalog. Every input field is optional; with an empty input the actor sweeps the catalog for the Madrid warehouse with details on.

Input reference

FieldTypeRequiredDefaultDescription
categoryIdsstring[]no(empty)One or more Mercadona category IDs to scrape, for example 112 for Aceite, vinagre y sal. Leave empty to sweep the entire catalog. IDs appear in a category URL like tienda.mercadona.es/categories/112.
keywordsstring[]no(empty)Only keep products whose name, brand or category contains one of these words, for example aceite, oliva. Leave empty to keep all.
warehouseenumnomad1Region the prices and availability come from. One of mad1, mad2, bcn1, vlc1, svq1, alc1, bil1, mal1, ali1, zar1 (Madrid, Barcelona, Valencia, Sevilla, and more).
withDetailsbooleannotrueWhen on, fetches each product's detail page to add EAN, origin, ingredients, allergens, suppliers and full photos. Turn off to collect listing fields only.
maxProductsintegerno100Maximum number of products to return across the whole run.

Output reference

One dataset item per product. Types: string, number, boolean, string[], or null when the source value is absent.

FieldTypeDescription
idstringMercadona product ID.
slugstringURL slug of the product.
displayNamestringProduct name as shown in the store.
brandstringBrand, for example Hacendado.
eanstringEAN barcode (populated when details are fetched).
originstringOrigin country of the product.
packagingstringPackaging or format, for example Garrafa.
unitPricenumberCurrent price in EUR.
previousUnitPricenumberPrevious price in EUR, or null.
priceDecreasedbooleantrue when the current price dropped versus the previous price.
bulkPricenumberPrice per reference unit (per kg or per L).
referencePricenumberReference price per unit.
referenceFormatstringReference unit, kg or L.
unitSizenumberUnit size value.
sizeFormatstringSize format, for example l, kg, ud.
totalUnitsnumberTotal units in the product, or null.
packSizenumberPack size, or null.
isPackbooleanWhether the product is a multi-unit pack.
taxPercentagenumberVAT rate applied to the product.
isVariableWeightbooleanWhether the product is sold by variable weight.
sellingMethodnumberMercadona selling-method code.
isNewbooleanWhether the product is a new arrival.
publishedbooleanWhether the product is currently published.
unavailableFromstringDate the product becomes unavailable, or null.
unavailableWeekdaysnumber[]Weekdays the product is unavailable, empty array when always available.
requiresAgeCheckbooleanWhether the product requires an age check at checkout.
categorystringLeaf category name.
categoryPathstringFull category path, top > mid > leaf.
thumbnailstringThumbnail image URL.
urlstringProduct page URL.
sourcestringAlways Mercadona.
observedAtstringISO 8601 timestamp of when the record was collected.
legalNamestringLegal product name (details only).
descriptionstringProduct description (details only).
ingredientsstringIngredient list (details only).
allergensstringAllergen notes (details only).
mandatoryMentionsstringLegally mandated product mentions (details only).
alcoholByVolumenumberAlcohol by volume for alcoholic products, else null (details only).
suppliersstring[]Supplier names for the product (details only).
supplierCountnumberNumber of suppliers (details only).
photosstring[]Full-resolution photo URLs (details only).
photoCountnumberNumber of photos (details only).
errorstringPresent only on a failed run: one item with a populated error field is written instead.

Example output record

Real record from a live run (input {"categoryIds":["112"],"maxProducts":50,"warehouse":"mad1","withDetails":true}):

{
"id": "4241",
"slug": "aceite-oliva-04o-hacendado-garrafa",
"displayName": "Aceite de oliva 0,4º Hacendado",
"brand": "Hacendado",
"ean": "8402001027482",
"origin": "España",
"packaging": "Garrafa",
"unitPrice": 17.75,
"previousUnitPrice": 18.75,
"priceDecreased": false,
"bulkPrice": 3.55,
"referencePrice": 3.55,
"referenceFormat": "L",
"unitSize": 5,
"sizeFormat": "l",
"taxPercentage": 4,
"isVariableWeight": false,
"isNew": false,
"published": true,
"category": "Aceite de oliva",
"categoryPath": "Aceite, especias y salsas > Aceite, vinagre y sal > Aceite de oliva",
"url": "https://tienda.mercadona.es/product/4241/aceite-oliva-04o-hacendado-garrafa",
"source": "Mercadona",
"observedAt": "2026-08-11T11:09:15.380Z",
"legalName": "HACENDADO ACEITE DE OLIVA",
"ingredients": "Ingredientes: Aceite de oliva refinado y Aceite de Oliva Virgen Extra",
"suppliers": ["Aceites Abril S.L.", "Aceites del Sur- Coosur S.A.", "MERCADONA"],
"supplierCount": 7,
"photoCount": 2
}

Note: the suppliers array above is trimmed to 3 of the 7 real values for readability; a full run returns all of them.

Run via API and CLI

Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.

Run synchronously and get dataset items in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~mercadona-grocery-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"categoryIds":["112"],"maxProducts":25,"warehouse":"mad1","withDetails":true}'

Start a run asynchronously:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~mercadona-grocery-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"keywords":["aceite"],"maxProducts":100,"warehouse":"bcn1"}'

Apify CLI:

apify call scrapers_lat/mercadona-grocery-scraper \
--input '{"categoryIds":["112"],"maxProducts":10}'

Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"

<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.

Billing and limits

  • Pay per result. You are charged per product record returned (result event). See the pricing tab for the current per-result price.
  • Details add-on. When withDetails is on and a detail page is successfully fetched, an additional details event is charged on top of the result. Turn withDetails off to pay listing-only.
  • No charge on failure. If a run errors, the actor writes a single item with a populated error field and does not charge for it. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable results.
  • Free Apify plans are capped at 10 records per run. Upgrade for higher maxProducts.

FAQ and troubleshooting

Do I need a Mercadona account or cookies? No. Everything runs against the public catalog without any login.

Why do prices differ from what I see in store? Mercadona is region-scoped. Prices and availability vary by warehouse. Set warehouse to the region you care about.

A run returned 0 records. Why? The category or keyword filter matched nothing for that warehouse. Remove keywords, check the category ID, or sweep the full catalog by leaving categoryIds empty. Zero-result runs are not charged.

Which fields need detail fetch? ean, origin, legalName, description, ingredients, allergens, mandatoryMentions, alcoholByVolume, suppliers, supplierCount, photos and photoCount are only populated when withDetails is on.

Is this an official Mercadona tool? No. This actor is independent and has no affiliation with Mercadona. It reads only data that is publicly available through the Mercadona online store.

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.


Independent tool, not affiliated with Mercadona. Accesses only publicly available Mercadona catalog data.