Mercadona ES - Product prices
Pricing
from $1.80 / 1,000 results
Mercadona ES - Product prices
Scrapes products and prices from the Mercadona online supermarket by search term, brand or category, for any Spanish postal code or warehouse.
Pricing
from $1.80 / 1,000 results
Rating
0.0
(0)
Developer
Giacomo Pigani
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Security
Limited permissionsShare
Mercadona Scraper
Scrapes products and prices from Mercadona's online supermarket. You can search the same way as on the website, filter by brand or category, or download the whole catalogue. Prices come from the warehouse that serves any Spanish postal code.
Input
Every parameter is optional. Give a search term or categories to scrape part of the catalogue,
or leave both empty to get every product in the catalog. Without a postal code or warehouse, prices come
from Mercadona's default warehouse, vlc1 (Valencia).
| Parameter | Options | Description |
|---|---|---|
searchTerm | (optional) Text to search for | One search, like the search box on the website. A phrase like leche condensada is searched as a whole. Returns the same products, in the same order, as the website, up to 100. |
brands | (optional) A brand, e.g. "Hacendado", or a list, e.g. ["Hacendado", "Campina"] | Keeps only the search results of these brands. Capitalisation is ignored. Needs a search term. |
categories | (optional) Category or subcategory IDs, as strings, e.g. ["112"] | Only these categories. A top-level category includes all its subcategories. With a search term, keeps only the results in these categories. Get the current list of IDs with the Mercadona Category IDs Actor. |
postalCode | (optional) 5-digit Spanish postal code | Uses the warehouse that serves this postal code. Don't combine with warehouse. |
warehouse | (optional) Warehouse code, see Warehouses | Uses this warehouse. Don't combine with postalCode. The run fails if Mercadona doesn't serve the code. |
language | • es (Spanish, default)• vai (Valencian)• ca (Catalan)• gl (Galician)• eu (Basque)• en (English)• de (German) | Language of product and category names. |
includeEan | (optional) true (default) or false | Whether category and whole-catalogue rows include ean and brand, fetched from each product's page (one extra request per product). Set false for listings and prices only, much faster for a whole-catalogue run. Searches always include the EAN. |
Example using a search query:
{"searchTerm": "leche condensada","postalCode": "08012"}
Example keeping only some brands:
{"searchTerm": "leche condensada","brands": ["Campina", "Hacendado"]}
Example using a category:
{"categories": ["112"],"warehouse": "bcn1"}
Example to get all products for a postal code:
{"postalCode": "08012"}
Warehouses
| Code | Provinces |
|---|---|
| alc1 | Alicante, Murcia |
| bcn1 | Barcelona |
| mad1 | Madrid |
| mad2 | Madrid |
| mad3 | Madrid |
| svq1 | Sevilla, Cádiz, Huelva |
| vlc1 | Valencia, Alicante, Castellón |
Other regions use warehouses with numeric codes, for example 4391 for Bilbao (48001) or
4493 for Zaragoza (50001). For those, it's easiest to pass the postal code.
Output
- Dataset: one item per product, as Mercadona returns it, plus
subcategoryandgroup(idandname). Every row carrieseanandbrand. Search results also carrysearch_termand more detail than category browsing: origin, suppliers, ingredients, allergens, photos and names in every language. A product listed in several places appears only once per run. WAREHOUSE(key-value store): what was requested and which warehouse served the data, e.g.{"requested_postal_code": "08012", "requested_warehouse": null, "warehouse": "bcn1"}.FAILED_REQUESTS(key-value store, only when some requests failed): the URL and error of each failed page. If any page failed, the run fails rather than returning an incomplete dataset as a success.
Product fields
Values come as Mercadona sends them. For example, prices are text such as "3.35". Fields
inside an object are written with a dot, e.g. price_instructions.unit_price.
| Field | Description |
|---|---|
id | Mercadona product ID. |
display_name | Product name, in the chosen language. |
slug, share_url | URL slug and product page on tienda.mercadona.es. |
thumbnail | Product image (300×300). |
packaging | How it is sold, e.g. Bote, Paquete, Pack-6. Can be empty. |
main_feature | Mercadona's short qualifier, e.g. 0% MG 0% azúcares añadidos. Often empty. |
categories | Category rows: only the top-level category. Search rows: the full category path. |
subcategory, group | Second- and third-level category (id, name), added by the Actor. |
published | Whether the product is listed. |
limit | Most units per order. 999 means no practical limit. |
unavailable_from | Date from which the product can no longer be delivered. Usually empty. |
unavailable_weekdays | Weekdays the product can't be delivered (Mercadona's numbering). Usually empty. |
badges.requires_age_check | Alcohol: the age is checked at delivery. |
badges.is_water | Bottled water. |
brand | Brand. In category browsing this and ean come from one extra request per product, so a whole-catalogue run makes about one request per product on top of the category pages. |
ean | EAN barcode. Can be empty for a few products. |
is_new_arrival | Category rows only: the product is in Mercadona's Novedades. |
search_term | Search rows only: the search that returned the product. |
Prices and sizes (price_instructions):
| Field | Description |
|---|---|
unit_price | Price in EUR of one sales unit, i.e. what goes in the cart. For products sold by weight, the price of the minimum amount. |
previous_unit_price | The previous price, when Mercadona shows one. Padded with spaces, e.g. " 1.40". Usually empty. |
bulk_price | Price per kg, litre or unit, rounded to cents. |
reference_price, reference_format | The shelf-label price per unit and its unit, e.g. "3.350" per kg. |
unit_size, size_format | Content of one sales unit and its unit (kg, l, ud). |
approx_size | The size is approximate (fresh products sold per piece). |
is_pack, total_units, pack_size, unit_name | Multipacks, e.g. 8 units (ud.) of 0.125 kg, or 6 briks. |
drained_weight | Drained weight in kg, for tins and frozen products. |
tax_percentage | VAT rate: "4.000", "10.000" or "21.000". |
selling_method | 0 sold by unit, 1 sold by weight (a few fresh products). |
unit_selector, bunch_selector, min_bunch_amount, increment_bunch_amount | How the website lets you choose the quantity. For products sold by weight: the minimum and step, in kg. |
Search rows only. The search returns the full product page:
| Field | Description |
|---|---|
origin | Country of origin. |
is_bulk, is_variable_weight | Sold loose / sold by variable weight. |
photos | Every product photo, each in zoom, regular and thumbnail size. |
details.legal_name, details.description | Legal name and description. |
details.suppliers | Suppliers (name). |
details.storage_instructions, details.usage_instructions | How to store and use the product. |
details.mandatory_mentions, details.danger_mentions, details.alcohol_by_volume | Legal mentions, hazard warnings and alcohol content. |
details.is_prepared_by_mercadona | Made in Mercadona's stores or kitchens (bakery, Listo para Comer). It is not about own brands such as Hacendado. Can be empty. |
nutrition_information.ingredients, nutrition_information.allergens | Ingredients and allergens, as HTML with allergens in <strong>. |
translations | Name and categories in every language (ca, en, eu, vai). |
Fields not to trust. Mercadona sends these, but they are wrong or mostly empty. Figures are from the Barcelona catalogue (4,306 products):
price_instructions.price_decreasedis alwaysfalse, even for the 153 products whoseprevious_unit_priceis higher thanunit_price. Compare the two prices instead.price_instructions.is_newis alwaysfalse. Useis_new_arrivalinstead.price_instructions.ivais empty for 3,118 products. Usetax_percentageinstead.statusis always empty.