Fuentes de datos
Nuestra base de datos combina dos grandes fuentes de datos abiertos en un formato unificado y normalizado:
Open Food Facts (4,1 M de productos) — una base de datos global mantenida por la comunidad, con una fuerte cobertura europea. Los productos incluyen códigos de barras, nombres/ingredientes multilingües, calificaciones Nutri-Score, clasificación NOVA, datos de alérgenos e imágenes. Con licencia ODbL.
USDA FoodData Central (2,0 M de productos) — la completa base de datos de composición de alimentos del Departamento de Agricultura de EE. UU. Incluye valores de nutrientes verificados en laboratorio para productos de marca, alimentos básicos (foundation) y alimentos de referencia históricos (legacy). Dominio público.
Juntas suman 6,1 millones de productos alimentarios únicos — más de lo que ofrece cualquier fuente por sí sola.
Cómo combinamos los datos
Cuando un producto existe en ambas bases de datos (se emparejan por código de barras), damos prioridad a los valores de nutrientes de la USDA (verificados en laboratorio) y los complementamos con los metadatos de Open Food Facts (imágenes, alérgenos, Nutri-Score, nombres multilingües). Así obtienes lo mejor de los dos mundos: datos nutricionales precisos con metadatos de producto ricos.
Niveles de nutrientes
No todos los productos tienen medidos todos los nutrientes. Organizamos los nutrientes en niveles según su cobertura de datos:
Nivel 1: macros básicos (97 %+ de cobertura)
Disponibles para casi todos los productos de nuestra base de datos:
| Nutriente | Campo | Unidad |
|---|---|---|
| Energía | energy_kcal, energy_kj | kcal, kJ |
| Proteínas | proteins_g | g |
| Carbohidratos | carbs_g | g |
| Grasas | fat_g | g |
| Azúcares | sugars_g | g |
| Grasas saturadas | saturated_fat_g | g |
| Sodio | sodium_mg | mg |
| Sal | salt_g | g |
| Fibra | fiber_g | g |
Nivel 2: nutrientes comunes
Disponibles para una gran parte de los productos — sobre todo los registros verificados en laboratorio — pero lejos de todos. La cobertura varía según el nutriente y sigue mejorando a medida que se actualizan las fuentes:
| Nutriente | Campo |
|---|---|
| Colesterol | cholesterol_mg |
| Grasas trans | trans_fat_g |
| Calcio | calcium_mg |
| Hierro | iron_mg |
| Vitamina C | vitamin_c_mg |
| Potasio | potassium_mg |
| Vitamina A | vitamin_a_iu |
| Azúcares añadidos | added_sugars_g |
Nivel 3: nutrientes ampliados
Disponibles para un subconjunto más pequeño, principalmente alimentos analizados en laboratorio:
Vitamina D, magnesio, zinc, fósforo, vitaminas del grupo B (B1, B2, B6, B9, B12), niacina, ácido pantoténico, manganeso, cobre, selenio, yodo, alcohol, almidón, polioles, grasas monoinsaturadas, grasas poliinsaturadas, ácidos grasos omega-3 y ácidos grasos omega-6.
Trabajar con los datos
Todos los valores son por 100 g
Todos los valores de nutrientes de nuestra API están normalizados a 100 g de producto. Para calcular los valores por porción, multiplica por el tamaño de la porción:
const perServing = (valuePer100g, servingGrams) => {
return Math.round(valuePer100g * (servingGrams / 100) * 10) / 10;
};
// Example: 42 kcal per 100g, 330ml can
perServing(42, 330); // → 138.6 kcal
Cómo manejar los valores null
La API devuelve null para los nutrientes que no están disponibles en un producto concreto. Tu app debe gestionar bien los valores que faltan — no des por hecho que todos los productos tienen todos los campos.
const calories = food.nutrition_summary?.energy_kcal ?? "N/A";
Compatibilidad multilingüe
Los productos de Open Food Facts incluyen nombres e ingredientes en varios idiomas. El campo name devuelve un array de objetos {lang, text}:
[
{"lang": "main", "text": "Coca-Cola"},
{"lang": "fr", "text": "Coca-Cola en canette"},
{"lang": "de", "text": "Coca-Cola"}
]
El campo name_default siempre contiene el texto en el idioma principal, para acceder rápido sin recorrer el array.
Calidad de los datos
Aplicamos varios filtros de calidad en nuestro pipeline de datos:
- Límites físicos en los valores de nutrientes para descartar datos basura (por ejemplo, la proteína no puede superar los 100 g por 100 g)
- Normalización de unidades para garantizar unidades coherentes entre fuentes (g, mg, mcg, UI)
- Deduplicación por código de barras, dando prioridad a los valores verificados en laboratorio en los productos duplicados
- Puntuación de completitud para ayudarte a filtrar por calidad de datos cuando lo necesites
¿Quieres echar un vistazo a los datos antes de escribir código? Cada producto del catálogo tiene una página pública en el explorador de productos que muestra exactamente los campos que devuelve la API — tabla nutricional, ingredientes, alérgenos, puntuaciones y todo lo demás.
Sigue leyendo
Constrúyelo con FoodBase
6,1 M de productos, más de 40 nutrientes y análisis de alimentos con IA — gratis para empezar, sin tarjeta de crédito.