Mercadona Scraper - Prices, Unit Price & Postal Code avatar

Mercadona Scraper - Prices, Unit Price & Postal Code

Pricing

from $1.00 / 1,000 product results

Go to Apify Store
Mercadona Scraper - Prices, Unit Price & Postal Code

Mercadona Scraper - Prices, Unit Price & Postal Code

Scrape Mercadona products by delivery-area postal code. Search by keyword or category, or paste product and category URLs. Get local availability, current price, site-calculated price per kg, litre or unit, plus original price and discount when an item is on sale.

Pricing

from $1.00 / 1,000 product results

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Mercadona Product Scraper

Pull product data from Mercadona (tienda.mercadona.es), Spain's largest supermarket chain. Mercadona's catalogue, availability, and prices are zoned by delivery area, so every run starts from a postal code. Search by keyword and/or a real Mercadona category, or paste product/category links directly. Every record includes the current price, the real per-kg/L/unit price the site itself computes, and a genuine was-price with discount whenever one actually exists.

Why This Scraper?

  • Zoned by real delivery area. Give it a Spanish postal code and it resolves the same delivery warehouse the live site would use for that address, so catalogue, availability, and prices match what a shopper there actually sees.
  • Real per-unit price, not computed after the fact. Mercadona's own API returns a per-kg/L/unit reference price alongside the package price -- captured as-is, not derived from a guessed pack size.
  • Was-price captured only when it's real. Mercadona is a low-price retailer with very few promotions, so most products simply have no was-price at all -- this scraper checks the site's own previous-price field per item and only ever sets a was-price/discount when that field is genuinely populated and higher than the current price. It never fabricates a markdown from a unit-price spread.
  • Own-brand aware. Hacendado, Deliplus, Bosque Verde and every other brand come through as the site's own structured brand field (detail mode), not guessed from the product name.
  • Two ways in. Keyword + category browse with brand/price/discount filters and sort, or paste any product/category link.
  • Optional export to your apps. Send results into Notion, Linear, Airtable, or any Apify MCP connector alongside the dataset.

A note on search and reviews

Mercadona's own keyword-search service sits behind a separate, harder-gated endpoint that this scraper could not clear without a browser-minted challenge. "Search" here means: resolve your postal code, then walk the site's own real category tree (by name or id), narrowing client-side by keyword, brand, price, and was-price -- a real substitute, not a guess, but not a full free-text index. Combine a keyword with a specific category to keep runs fast and precise. Mercadona also has no product review system, so reviews is always an empty array -- this is a real absence on the site itself, not a scraping gap.

Data You Get

FieldExample value
productId / slug123456, sample-product-hacendado
name / brandSample Product Hacendado, Hacendado (brand needs fetchDetails)
category / categoryPathSample Aisle, ["Sample Group", "Sample Aisle", "Sample Subcategory"]
url / imagehttps://tienda.mercadona.es/product/123456/sample-product-hacendado, image URL
packagingBotella
price / currency1.90, EUR
unitPrice / unitPriceFormat11.52, kg
packageSize / packageSizeFormat0.165, kg
previousPrice / discountAmount / discountPercent2.65, 0.75, 28.3
isOnSpecialtrue
onlineAvailabletrue
ean / origin / suppliers8400000000000, España, ["Sample Supplier S.L."]
description / ingredients / allergenslegal name text, ingredients text, allergens text
imagesfull-resolution photo gallery
reviews[] (Mercadona has no review system)

Sample shape: values above are illustrative placeholders, not from a live product.

How to Use

1. Keyword + category browse for a delivery zone (default):

{
"mode": "search",
"postalCode": "28001",
"searchTerm": "aceite",
"category": "Aceite, vinagre y sal",
"maxItems": 20
}

2. Only Hacendado products currently on special, sorted by price:

{
"mode": "search",
"postalCode": "28001",
"category": "Aceite, vinagre y sal",
"brands": ["Hacendado"],
"specialsOnly": true,
"sortBy": "PRICE_ASC",
"maxItems": 50
}

3. Full product detail (brand, EAN, ingredients, image gallery) for a pasted product link:

{
"mode": "url",
"postalCode": "28001",
"urls": ["https://tienda.mercadona.es/product/123456/sample-product-hacendado"],
"fetchDetails": true
}

4. Paste a category link and walk the whole aisle:

{
"mode": "url",
"postalCode": "28001",
"urls": ["https://tienda.mercadona.es/categories/112"],
"maxItems": 100
}

Input Parameters

ParameterTypeDescription
modestringsearch or url.
postalCodestringA Spanish postal code -- determines the delivery zone (catalogue, availability, prices). Applies to both modes.
searchTermstringKeyword (search mode only); narrows client-side within the category/categories walked.
categorystringA real Mercadona category or group name/id (search mode only); empty browses the whole catalogue.
specialsOnlybooleanKeep only products carrying a genuine was-price higher than the current price (search mode only).
brandsarrayExact brand names to keep; automatically enables fetchDetails since brand is a detail-only field (search mode only).
minPrice / maxPricenumberEUR price band to keep (search mode only).
sortBystringRELEVANCE, PRICE_ASC, or PRICE_DESC (search mode only).
urlsarrayProduct or category URLs to scrape (url mode only).
fetchDetailsbooleanFetch brand, EAN, origin, suppliers, ingredients/allergens, storage/usage instructions, and the full image gallery. Always on for a pasted product URL.
maxPagesintegerCap on category aisles walked per search; empty = unlimited.
maxItemsintegerCap on total products returned; 0 = unlimited.
proxyobjectApify proxy configuration. Works on every plan by default.
mcpConnectorsarrayOptional MCP connectors to export results into (Notion, Linear, Airtable, Apify).
notionParentPageUrlstringNotion connector only: page under which item pages are created.
maxNotifyListingsintegerCap on items exported to each connector per run. Does not affect the dataset.

Output Example

{
"productId": "123456",
"slug": "sample-product-hacendado",
"name": "Sample Product Hacendado",
"brand": "Hacendado",
"category": "Sample Subcategory",
"categoryPath": ["Sample Group", "Sample Aisle", "Sample Subcategory"],
"url": "https://tienda.mercadona.es/product/123456/sample-product-hacendado",
"image": "https://prod-mercadona.imgix.net/images/sample.jpg",
"packaging": "Botella",
"price": 1.9,
"currency": "EUR",
"unitPrice": 11.52,
"unitPriceFormat": "kg",
"packageSize": 0.165,
"packageSizeFormat": "kg",
"previousPrice": 2.65,
"discountAmount": 0.75,
"discountPercent": 28.3,
"isOnSpecial": true,
"onlineAvailable": true,
"ean": "8400000000000",
"origin": "España",
"suppliers": ["Sample Supplier S.L."],
"description": "Sample legal product description as shown on the site.",
"ingredients": "Sample ingredients text.",
"allergens": "Sample allergens text.",
"images": ["https://prod-mercadona.imgix.net/images/sample-zoom.jpg"],
"reviews": []
}

Sample shape: values above are illustrative placeholders, not from a live product.

A note on unit pricing and was-price

The package price (price) and the real per-kg/L/unit reference price (unitPrice/unitPriceFormat) both come straight from Mercadona's own product data, not computed from a guessed pack size. previousPrice/discountAmount/discountPercent/isOnSpecial are only ever set when the product's own previous-price field is genuinely populated and higher than the current price -- most Mercadona products (an every-day-low-price retailer) simply carry no was-price, and this scraper reports that honestly rather than inventing one.

Send results into your apps (MCP connectors)

Optionally pipe results into the apps you already use through Model Context Protocol (MCP) connectors. Authorize a connector once under Apify, Settings, Integrations, then select it in the mcpConnectors field. Each connector receives a condensed, human-readable summary per product (name plus key fields), while the complete record always stays in the Apify dataset. For Notion, set notionParentPageUrl to the page the item pages should be created under, and use maxNotifyListings to cap how many items are exported per connector per run. Supported connectors: Notion, Linear, Airtable, and Apify. Leave the field empty to skip; it never changes the dataset output.

A note on plans

The default connection works on every Apify plan, including the free tier. A residential proxy connection is optional and only worth turning on for very large or sustained runs.