Mercadona Grocery Scraper - Prices, EAN & Catalog
Pricing
from $6.80 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
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
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
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
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
categoryIds | string[] | 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. |
keywords | string[] | no | (empty) | Only keep products whose name, brand or category contains one of these words, for example aceite, oliva. Leave empty to keep all. |
warehouse | enum | no | mad1 | Region the prices and availability come from. One of mad1, mad2, bcn1, vlc1, svq1, alc1, bil1, mal1, ali1, zar1 (Madrid, Barcelona, Valencia, Sevilla, and more). |
withDetails | boolean | no | true | When on, fetches each product's detail page to add EAN, origin, ingredients, allergens, suppliers and full photos. Turn off to collect listing fields only. |
maxProducts | integer | no | 100 | Maximum 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.
| Field | Type | Description |
|---|---|---|
id | string | Mercadona product ID. |
slug | string | URL slug of the product. |
displayName | string | Product name as shown in the store. |
brand | string | Brand, for example Hacendado. |
ean | string | EAN barcode (populated when details are fetched). |
origin | string | Origin country of the product. |
packaging | string | Packaging or format, for example Garrafa. |
unitPrice | number | Current price in EUR. |
previousUnitPrice | number | Previous price in EUR, or null. |
priceDecreased | boolean | true when the current price dropped versus the previous price. |
bulkPrice | number | Price per reference unit (per kg or per L). |
referencePrice | number | Reference price per unit. |
referenceFormat | string | Reference unit, kg or L. |
unitSize | number | Unit size value. |
sizeFormat | string | Size format, for example l, kg, ud. |
totalUnits | number | Total units in the product, or null. |
packSize | number | Pack size, or null. |
isPack | boolean | Whether the product is a multi-unit pack. |
taxPercentage | number | VAT rate applied to the product. |
isVariableWeight | boolean | Whether the product is sold by variable weight. |
sellingMethod | number | Mercadona selling-method code. |
isNew | boolean | Whether the product is a new arrival. |
published | boolean | Whether the product is currently published. |
unavailableFrom | string | Date the product becomes unavailable, or null. |
unavailableWeekdays | number[] | Weekdays the product is unavailable, empty array when always available. |
requiresAgeCheck | boolean | Whether the product requires an age check at checkout. |
category | string | Leaf category name. |
categoryPath | string | Full category path, top > mid > leaf. |
thumbnail | string | Thumbnail image URL. |
url | string | Product page URL. |
source | string | Always Mercadona. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
legalName | string | Legal product name (details only). |
description | string | Product description (details only). |
ingredients | string | Ingredient list (details only). |
allergens | string | Allergen notes (details only). |
mandatoryMentions | string | Legally mandated product mentions (details only). |
alcoholByVolume | number | Alcohol by volume for alcoholic products, else null (details only). |
suppliers | string[] | Supplier names for the product (details only). |
supplierCount | number | Number of suppliers (details only). |
photos | string[] | Full-resolution photo URLs (details only). |
photoCount | number | Number of photos (details only). |
error | string | Present 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:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "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 (
resultevent). See the pricing tab for the current per-result price. - Details add-on. When
withDetailsis on and a detail page is successfully fetched, an additionaldetailsevent is charged on top of the result. TurnwithDetailsoff to pay listing-only. - No charge on failure. If a run errors, the actor writes a single item with a populated
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon 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.
Related scrapers
- AliExpress Product Scraper: AliExpress product listings and prices.
- 1688 Wholesale Scraper: 1688 wholesale product listings.
- Amazon Product Scraper: Amazon product data by keyword or ASIN.
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.
