API para desarrolladores

API pública de solo lectura sobre el catálogo de Nutriinfo: nombre e información nutricional de un producto, y búsqueda de productos por texto. Requiere una clave de API -- escríbenos si necesitas una.

Autenticación

Cada petición debe incluir tu clave de API en la cabecera x-api-key (también se acepta Authorization: Bearer <clave>).

curl "https://www.nutriinfo.es/api/public/v1/products?ean=8410000000000" \
  -H "x-api-key: nk_live_..."

Versionado

La URL incluye la versión de la API (/api/public/v1/...). Cualquier cambio incompatible se publicará bajo una nueva versión (/v2); la actual seguirá funcionando igual.

Límite de peticiones

Cada clave tiene un límite de 20 peticiones por hora. Al superarlo, la API responde 429 rate_limit_exceeded con una cabecera Retry-After indicando cuántos segundos esperar.

GET /api/public/v1/products/search

Busca productos por texto y devuelve un listado con id, EAN, nombre y precio.

La búsqueda ignora mayúsculas y acentos, y exige que todas las palabras de q aparezcan en algún sitio (nombre, descripción o ingredientes) para que un producto entre en los resultados. Los resultados se ordenan por relevancia: un acierto en el nombre del producto pesa mucho más que uno en la descripción o los ingredientes, y en caso de empate gana el nombre más corto (p. ej. buscando “maiz”, “Maíz seco” queda por delante de “Galletas de arroz y maíz”).

ParámetroDescripción
qTexto a buscar (obligatorio, máximo 50 caracteres).
limitNº máximo de resultados. Por defecto 5, máximo 20.
curl "https://www.nutriinfo.es/api/public/v1/products/search?q=maiz&limit=5" \
  -H "x-api-key: nk_live_..."
{
  "ok": true,
  "data": [
    { "id": "12345", "ean": "8410000000000", "name": "Copos de maíz", "price": 1.95 },
    { "id": "12346", "ean": "8410000000001", "name": "Harina de maíz", "price": 0.89 }
  ]
}

GET /api/public/v1/products

Devuelve el nombre y la información nutricional de un producto por su EAN o su id de Nutriinfo/Mercadona.

ParámetroDescripción
eanCódigo de barras EAN-13/EAN-8 del producto.
idId del producto en Nutriinfo/Mercadona. Indica ean o id (al menos uno).
curl "https://www.nutriinfo.es/api/public/v1/products?ean=8410000000000" \
  -H "x-api-key: nk_live_..."
{
  "ok": true,
  "data": {
    "id": "12345",
    "ean": "8410000000000",
    "name": "Leche entera 1L",
    "nutrition": {
      "per100g": {
        "energy_kcal": 64,
        "energy_kj": 268,
        "fats_g": 3.6,
        "saturated_fats_g": 2.3,
        "carbs_g": 4.8,
        "sugars_g": 4.8,
        "fiber_g": 0,
        "proteins_g": 3.1,
        "salt_g": 0.1
      }
    }
  }
}

nutrition es null cuando todavía no tenemos la tabla nutricional de ese producto.

Errores

Los errores siempre devuelven { "ok": false, "error": { "code", "message" } } junto con el código HTTP correspondiente.

HTTPcodeDescripción
400missing_queryFalta un parámetro obligatorio (ni 'id' ni 'ean', o falta 'q').
400invalid_queryUn parámetro tiene un valor inválido: 'q' supera los 50 caracteres, o 'limit' está fuera de rango.
401missing_api_keyNo se ha enviado ninguna clave de API.
401invalid_api_keyLa clave de API no existe.
403api_key_revokedLa clave de API ha sido revocada.
404product_not_foundNo existe ningún producto activo con ese id o EAN.
429rate_limit_exceededSe ha superado el límite de peticiones por hora. La respuesta incluye la cabecera 'Retry-After' en segundos.