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ámetro | Descripción |
|---|---|
| q | Texto a buscar (obligatorio, máximo 50 caracteres). |
| limit | Nº 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ámetro | Descripción |
|---|---|
| ean | Código de barras EAN-13/EAN-8 del producto. |
| id | Id 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.
| HTTP | code | Descripción |
|---|---|---|
| 400 | missing_query | Falta un parámetro obligatorio (ni 'id' ni 'ean', o falta 'q'). |
| 400 | invalid_query | Un parámetro tiene un valor inválido: 'q' supera los 50 caracteres, o 'limit' está fuera de rango. |
| 401 | missing_api_key | No se ha enviado ninguna clave de API. |
| 401 | invalid_api_key | La clave de API no existe. |
| 403 | api_key_revoked | La clave de API ha sido revocada. |
| 404 | product_not_found | No existe ningún producto activo con ese id o EAN. |
| 429 | rate_limit_exceeded | Se ha superado el límite de peticiones por hora. La respuesta incluye la cabecera 'Retry-After' en segundos. |