API

Mercadona API: productos y precios en JSON

Mercadona no publica una API para desarrolladores. Lo que hay aquí es lo que su tienda online muestra públicamente, devuelto como JSON: el catálogo, los precios y las bajadas de precio. Un detalle que conviene tener claro desde el principio: en Mercadona el precio y el surtido dependen del almacén, y el almacén depende del código postal.

Endpoints

endpointQué devuelveObligatorios
searchBúsqueda por palabra clave en la tienda online, con el precio correspondiente a un código postal español.query
product/detailLa ficha completa de un producto por `product_id` o por su URL, con el precio para el código postal que indiques.product_id
categoryTodos los productos de una categoría, con sus subcategorías y precios.category_id
categoriesEl árbol completo de categorías de la tienda online: cada sección con los ids que se pasan a `category`.todos opcionales
dealsLa lista completa de 'Bajadas de precio': cada producto cuyo precio acaba de bajar. Es la consulta más directa para seguir cambios.todos opcionales
warehouse/lookupSi la tienda online reparte a un código postal y desde qué almacén. Úsalo antes de comparar precios entre zonas.postal_code

Cada llamada se cobra en créditos. Las llamadas fallidas y bloqueadas son gratuitas.

Ejemplo que funciona

Comparar precios entre dos códigos postales sin pasar por warehouse/lookup lleva a conclusiones falsas: si uno de los dos no tiene reparto, no estás comparando dos precios, estás comparando un precio con nada.

Petición
curl -X POST https://api.reefapi.com/mercadona/v1/search \
  -H "x-api-key: TU_CLAVE" \
  -H "content-type: application/json" \
  -d '{"query": "aceite de oliva", "postal_code": "28001"}'
Respuesta (recortada)
{
  "ok": true,
  "data": {
    "results": [
      {
        "product_id": "...",
        "display_name": "...",
        "price": 7.95,
        "unit_price": 7.95,
        "unit": "L"
      }
    ]
  },
  "meta": { "record_count": 24, "cache_hit": false, "mode": "live" }
}

En lugar de tu propio scraper de Mercadona

Escribir un scraper de Mercadona funciona el primer día. Lo que cuesta viene después: cuando cambia la estructura de la ficha, el parser devuelve vacío en lugar de un error, y cuando salta la protección anti-bot la ejecución se corta a medias. Las dos cosas se parecen demasiado a 'no hay productos'.

Hay además una trampa propia de Mercadona: si tu scraper no fija el código postal, recoge precios de un almacén cualquiera y los datos parecen correctos aunque no lo sean. Aquí el código postal es un parámetro normal.

Para una extracción puntual, tu propio script sale más barato y lo decimos sin rodeos. Para un seguimiento que deba funcionar cada día, lo caro no es el código sino las averías que nadie ve.

Límites y notas honestas

  • No es la API oficial de Mercadona y no tenemos ningún acuerdo con Mercadona.
  • El precio y el surtido dependen del almacén, y el almacén del código postal. Sin código postal obtienes el valor por defecto, no un precio 'medio'.
  • Solo cubre la tienda online. Lo que haya en un supermercado físico no se publica y no lo inventamos.
  • Sin caché: cada llamada refleja el estado en ese momento.