Бесплатные справочные таблицы макронутриентов: скачайте полные данные о питании в CSV и JSON

Скачайте бесплатные справочные таблицы макронутриентов с полными данными о пищевой ценности для более чем 500 распространённых продуктов в форматах CSV и JSON. Включены белки, углеводы, жиры, клетчатка и калории, упорядоченные по категориям продуктов.

Если вы разрабатываете приложение для контроля питания, проводите научное исследование, консультируете клиентов или просто хотите иметь под рукой надёжный справочник — вам нужны чистые данные о макронутриентах в удобном формате. Государственные базы данных существуют, но они громоздкие, непоследовательные и отформатированы скорее для чиновников, чем для тех, кто с ними реально работает.

Мы подготовили набор бесплатных справочных таблиц макронутриентов, охватывающих более 500 распространённых продуктов с полной разбивкой по макронутриентам. Данные доступны в форматах CSV и JSON, готовые для загрузки в электронную таблицу, базу данных, скрипт или приложение. Каждая запись проверена по первичным источникам, а файлы структурированы так, чтобы вы могли начать использовать их сразу, без дополнительной обработки или преобразования.

На этой странице подробно описано, что содержится в таблицах, как структурированы данные, как загрузить их программно и как внести исправления, если вы обнаружите неточность.

Что включено

Справочные таблицы макронутриентов содержат более 500 наиболее часто употребляемых продуктов из семи основных категорий. Для каждого продукта указаны:

  • Название продукта — стандартное английское название, используемое в нутрициологии
  • Категория — одна из семи основных категорий (подробнее ниже)
  • Подкатегория — более узкая группа внутри основной категории
  • Описание порции — размер порции в понятной форме (например, «1 средний банан», «1 стакан в приготовленном виде»)
  • Масса порции в граммах — граммовый эквивалент указанного размера порции
  • Калории — общая энергетическая ценность в килокалориях (ккал)
  • Белок — граммы белка на порцию
  • Общий жир — граммы общего жира на порцию
  • Насыщенный жир — граммы насыщенного жира на порцию
  • Общие углеводы — граммы общих углеводов на порцию
  • Пищевые волокна — граммы пищевых волокон (клетчатки) на порцию
  • Сахар — граммы общего сахара на порцию
  • Натрий — миллиграммы натрия на порцию

Все значения указаны на перечисленный размер порции, а не на 100 граммов. Мы выбрали такой подход, потому что данные в расчёте на порцию — это то, что действительно нужно большинству людей при отслеживании приёмов пищи, составлении планов питания или отображении информации о пищевой ценности в интерфейсе. Если вам нужны значения на 100 г, просто разделите на массу порции и умножьте на 100.

Таблицы не включают микронутриенты, кроме натрия и клетчатки. Для полных профилей микронутриентов (витамины, минералы, аминокислоты) обратитесь к разделу об API Nutrola в конце этой статьи — именно там находятся подробные данные.

Спецификации форматов данных

Формат CSV

CSV-файл использует кодировку UTF-8 с заголовочной строкой. Поля разделены запятыми, текстовые поля заключены в кавычки. Вот как выглядит структура:

food_name,category,subcategory,serving_description,serving_weight_g,calories_kcal,protein_g,total_fat_g,saturated_fat_g,total_carbs_g,fiber_g,sugar_g,sodium_mg
"Chicken Breast, boneless skinless, cooked","Proteins","Poultry","1 breast (170g)",170,284,53.4,6.2,1.7,0.0,0.0,0.0,126
"Atlantic Salmon, cooked","Proteins","Fish & Seafood","1 fillet (154g)",154,280,39.3,12.4,2.5,0.0,0.0,0.0,109
"Brown Rice, cooked","Grains & Starches","Whole Grains","1 cup (195g)",195,216,5.0,1.8,0.4,44.8,3.5,0.7,10
"Banana, raw","Fruits","Tropical Fruits","1 medium (118g)",118,105,1.3,0.4,0.1,27.0,3.1,14.4,1

CSV-файл совместим с Microsoft Excel, Google Sheets, LibreOffice Calc, Apple Numbers и любым языком программирования с поддержкой парсинга CSV. Никакой специальной настройки не требуется — откройте файл, и он корректно распарсится.

Формат JSON

JSON-файл содержит массив объектов, по одному на каждый продукт. Структура повторяет поля CSV:

{
  "version": "1.4.0",
  "generated": "2026-03-12",
  "source": "Nutrola Macro Reference Tables",
  "record_count": 527,
  "foods": [
    {
      "food_name": "Chicken Breast, boneless skinless, cooked",
      "category": "Proteins",
      "subcategory": "Poultry",
      "serving_description": "1 breast (170g)",
      "serving_weight_g": 170,
      "nutrients": {
        "calories_kcal": 284,
        "protein_g": 53.4,
        "total_fat_g": 6.2,
        "saturated_fat_g": 1.7,
        "total_carbs_g": 0.0,
        "fiber_g": 0.0,
        "sugar_g": 0.0,
        "sodium_mg": 126
      }
    }
  ]
}

JSON-файл включает метаданные на верхнем уровне: строку версии для отслеживания обновлений, дату генерации, название источника и общее количество записей. Это позволяет легко проверить, что у вас последняя версия, и встроить логику проверки обновлений в ваши приложения.

Числовые значения хранятся как числа, а не как строки. Значения null отсутствуют — если значение нутриента неизвестно, продукт исключается из набора данных, а не включается с пропущенными данными. Это осознанное решение, чтобы сохранить чистоту данных и избежать скрытых ошибок в расчётах.

Описание полей

Вот подробная разбивка каждого поля, включая единицы измерения, ожидаемые диапазоны и граничные случаи:

Поле Тип Единица Описание
food_name string Стандартное английское название. Включает способ приготовления, где это уместно (например, «cooked», «raw», «dried»).
category string Одна из семи основных категорий. См. раздел о категориях ниже.
subcategory string Более узкая группа. Например, в категории «Proteins» вы найдёте «Poultry», «Red Meat», «Fish & Seafood», «Legumes» и «Eggs».
serving_description string Размер порции в понятной форме. Всегда включает массу в граммах в скобках.
serving_weight_g number граммы Числовая масса порции в граммах. Целые значения для большинства продуктов, один знак после запятой для продуктов, где важна точность.
calories_kcal number ккал Общая энергетическая ценность. Рассчитывается по системе Атуотера (4 ккал/г белка, 4 ккал/г углеводов, 9 ккал/г жира).
protein_g number граммы Общий белок. Точность до одного знака после запятой.
total_fat_g number граммы Общий жир, включая насыщенные, мононенасыщенные и полиненасыщенные жиры.
saturated_fat_g number граммы Только насыщенные жирные кислоты.
total_carbs_g number граммы Общие углеводы, включая клетчатку и сахара.
fiber_g number граммы Общие пищевые волокна (растворимые + нерастворимые).
sugar_g number граммы Общие сахара (натуральные + добавленные). Набор данных не разделяет добавленные сахара от натуральных.
sodium_mg number миллиграммы Содержание натрия. Обратите внимание: указано в миллиграммах, а не в граммах, в отличие от остальных полей нутриентов.

Несколько замечаний о точности: все значения нутриентов округлены до одного знака после запятой. Это соответствует уровню точности исходных данных. Указание большего количества знаков создавало бы ложное впечатление точности — состав продуктов естественным образом варьируется на 5–15% в зависимости от условий выращивания, породы животных и способов приготовления.

Категории продуктов

Более 500 продуктов организованы в семь основных категорий, каждая с несколькими подкатегориями:

Белковые продукты

Примерно 95 позиций, охватывающих птицу (куриная грудка, бёдра, индейка, фарш из индейки), красное мясо (говяжья вырезка, говяжий фарш различной жирности, свиная вырезка, баранина), рыбу и морепродукты (лосось, тунец, креветки, треска, тилапия, сардины), яйца (целые, белки, яичница-болтунья) и растительные белки (тофу, темпе, сейтан, эдамаме). Бобовые, такие как чечевица, нут и чёрная фасоль, включены сюда, а не в категорию круп, поскольку их основная пищевая роль — обеспечение белком.

Крупы и крахмалосодержащие продукты

Примерно 80 позиций, охватывающих цельнозерновые продукты (бурый рис, овсянка, киноа, ячмень, булгур), рафинированные злаки (белый рис, белый хлеб, паста), крахмалистые овощи (картофель, батат, кукуруза) и распространённые зерновые продукты (тортильи, бейглы, крекеры, кускус). Для круп, где это различие важно, указаны значения как для приготовленных, так и для сухих продуктов.

Фрукты

Примерно 65 позиций, охватывающих распространённые свежие фрукты (яблоки, бананы, апельсины, клубника, черника, виноград), тропические фрукты (манго, ананас, папайя, киви), сухофрукты (изюм, финики, курага, клюква) и замороженные фрукты. Все записи о свежих фруктах относятся к сырой съедобной части — семена, кожура и косточки исключены из массы порции, где это применимо.

Овощи

Примерно 85 позиций, охватывающих листовую зелень (шпинат, кейл, романо, руккола), крестоцветные овощи (брокколи, цветная капуста, брюссельская капуста, белокочанная капуста), корнеплоды (морковь, свёкла, репа, редис), луковые (репчатый лук, чеснок), паслёновые (помидоры, болгарский перец, баклажан) и другие распространённые овощи (огурец, сельдерей, кабачок, грибы, спаржа). Для овощей, где приготовление существенно меняет плотность питательных веществ на порцию, указаны значения как для сырых, так и для приготовленных продуктов.

Молочные продукты и альтернативы

Примерно 70 позиций, охватывающих молоко (цельное, 2%, обезжиренное и растительные аналоги), йогурт (греческий, обычный, с вкусовыми добавками, растительный), сыр (чеддер, моцарелла, фета, творог, сливочный сыр, пармезан), масло, сливки и распространённые молочные альтернативы (миндальное молоко, овсяное молоко, соевое молоко, кокосовый йогурт). Растительные аналоги молока и йогурта сгруппированы здесь, а не в отдельной категории, поскольку потребители обычно используют их как прямые заменители.

Снеки и переработанные продукты

Примерно 75 позиций, охватывающих орехи и семена (миндаль, грецкие орехи, арахис, семена чиа, семена льна, семена подсолнечника), ореховые пасты (арахисовая паста, миндальная паста), распространённые снеки (крендельки, попкорн, гранола-батончики, протеиновые батончики, трейл-микс, чипсы, тёмный шоколад), соусы и приправы (хумус, гуакамоле, сальса, майонез, оливковое масло, мёд) и другие часто отслеживаемые продукты, такие как протеиновый порошок и энергетические батончики.

Напитки

Примерно 60 позиций, охватывающих соки (апельсиновый сок, яблочный сок, клюквенный сок), газированные напитки (кола, лимонно-лаймовая газировка, имбирный эль), спортивные и энергетические напитки, кофейные напитки (чёрный кофе, латте, капучино, мокко с различными видами молока), основы для смузи, алкогольные напитки (пиво, вино, крепкие спиртные напитки) и распространённые добавки (сливки, сахар, ароматизированные сиропы). Вода не включена, так как не содержит макронутриентов.

Программная работа с данными

Основная идея предоставления данных в форматах CSV и JSON заключается в том, чтобы вы могли загружать эти данные непосредственно в свой код. Вот рабочие примеры на Python и JavaScript.

Python: загрузка CSV

import csv

def load_macro_table(filepath):
    foods = []
    with open(filepath, newline='', encoding='utf-8') as f:
        reader = csv.DictReader(f)
        for row in reader:
            # Convert numeric fields from strings
            for key in ['serving_weight_g', 'calories_kcal', 'protein_g',
                        'total_fat_g', 'saturated_fat_g', 'total_carbs_g',
                        'fiber_g', 'sugar_g', 'sodium_mg']:
                row[key] = float(row[key])
            foods.append(row)
    return foods

foods = load_macro_table('macro_reference_table.csv')

# Find all foods in a category
proteins = [f for f in foods if f['category'] == 'Proteins']
print(f"Found {len(proteins)} protein sources")

# Find the highest protein foods per calorie
foods_sorted = sorted(foods, key=lambda f: f['protein_g'] / max(f['calories_kcal'], 1), reverse=True)
print("\nTop 10 foods by protein density (g protein per kcal):")
for f in foods_sorted[:10]:
    ratio = f['protein_g'] / f['calories_kcal']
    print(f"  {f['food_name']}: {ratio:.3f} g/kcal ({f['protein_g']}g protein, {f['calories_kcal']} kcal)")

Python: загрузка JSON

import json

def load_macro_json(filepath):
    with open(filepath, encoding='utf-8') as f:
        data = json.load(f)
    print(f"Loaded {data['record_count']} foods (version {data['version']})")
    return data['foods']

foods = load_macro_json('macro_reference_table.json')

# Build a lookup dictionary by food name
lookup = {f['food_name'].lower(): f for f in foods}

# Quick lookup
chicken = lookup.get('chicken breast, boneless skinless, cooked')
if chicken:
    n = chicken['nutrients']
    print(f"Chicken breast per serving ({chicken['serving_description']}):")
    print(f"  Calories: {n['calories_kcal']} kcal")
    print(f"  Protein: {n['protein_g']}g")
    print(f"  Fat: {n['total_fat_g']}g")
    print(f"  Carbs: {n['total_carbs_g']}g")

JavaScript: загрузка JSON

// Node.js
const fs = require('fs');

function loadMacroTable(filepath) {
  const raw = fs.readFileSync(filepath, 'utf-8');
  const data = JSON.parse(raw);
  console.log(`Loaded ${data.record_count} foods (version ${data.version})`);
  return data.foods;
}

const foods = loadMacroTable('macro_reference_table.json');

// Group foods by category
const byCategory = {};
for (const food of foods) {
  if (!byCategory[food.category]) {
    byCategory[food.category] = [];
  }
  byCategory[food.category].push(food);
}

// Print summary
for (const [category, items] of Object.entries(byCategory)) {
  console.log(`${category}: ${items.length} foods`);
}

// Find low-calorie, high-fiber foods
const highFiber = foods
  .filter(f => f.nutrients.fiber_g >= 5 && f.nutrients.calories_kcal <= 200)
  .sort((a, b) => b.nutrients.fiber_g - a.nutrients.fiber_g);

console.log('\nHigh-fiber, low-calorie foods:');
highFiber.slice(0, 10).forEach(f => {
  console.log(`  ${f.food_name}: ${f.nutrients.fiber_g}g fiber, ${f.nutrients.calories_kcal} kcal`);
});

JavaScript: загрузка CSV в браузере

// Browser-based CSV parsing (no dependencies)
async function loadMacroCSV(url) {
  const response = await fetch(url);
  const text = await response.text();
  const lines = text.split('\n').filter(line => line.trim());
  const headers = parseCSVLine(lines[0]);

  return lines.slice(1).map(line => {
    const values = parseCSVLine(line);
    const obj = {};
    headers.forEach((header, i) => {
      obj[header] = isNaN(values[i]) ? values[i] : parseFloat(values[i]);
    });
    return obj;
  });
}

function parseCSVLine(line) {
  const result = [];
  let current = '';
  let inQuotes = false;
  for (const char of line) {
    if (char === '"') { inQuotes = !inQuotes; }
    else if (char === ',' && !inQuotes) { result.push(current.trim()); current = ''; }
    else { current += char; }
  }
  result.push(current.trim());
  return result;
}

// Usage
const foods = await loadMacroCSV('/data/macro_reference_table.csv');
console.log(`Loaded ${foods.length} foods`);

Эти примеры демонстрируют наиболее распространённые операции: загрузку данных, поиск и фильтрацию, группировку по категориям и сортировку по плотности нутриентов. Структуры данных намеренно просты, поэтому для работы с ними не требуются специальные библиотеки.

Источники данных

Справочные таблицы макронутриентов составлены на основе следующих первичных источников:

База данных USDA SR Legacy. База данных стандартных справочных материалов USDA (Standard Reference Legacy) является основополагающим набором данных о составе пищевых продуктов в США. Она содержит лабораторные данные о нутриентах для более чем 7 600 продуктов. Наши таблицы используют SR Legacy как основной источник для немаркированных/небрендовых продуктов. Мы выбрали SR Legacy вместо более новой FoodData Central FNDDS, потому что значения SR Legacy более широко проверены и цитируются в исследованиях по нутрициологии.

USDA FoodData Central. Для продуктов, не охваченных SR Legacy, особенно новых продуктов и обновлённых значений, мы обращаемся к наборам данных Foundation Foods и Survey Foods из FoodData Central.

Международные базы данных о составе продуктов. Для продуктов, которые потребляются во всём мире, но могут отсутствовать в базах данных США, мы перекрёстно сверяем данные с таблицами состава продуктов McCance and Widdowson (Public Health England), Food Standards Australia New Zealand (FSANZ) NUTTAB, Канадским файлом нутриентов (CNF) и Датским банком данных о составе пищевых продуктов (Frida). Это особенно актуально для тропических фруктов, региональных круп и способов приготовления, распространённых за пределами США.

Данные производителей. Для переработанных и брендовых продуктов в категориях снеков и напитков мы используем информацию о пищевой ценности с этикеток производителей. Если данные производителя расходятся с результатами лабораторного анализа, мы фиксируем расхождение и по умолчанию используем лабораторные значения.

Все значения были перекрёстно проверены как минимум по двум независимым источникам. Если источники расходятся более чем на 10%, мы исследовали причину (обычно это разные способы приготовления или различия сортов) и выбирали значение, наиболее характерное для типичного способа употребления продукта.

Набор данных версионируется. Текущая версия — 1.4.0, последнее обновление — март 2026 года. Мы обновляем таблицы примерно раз в квартал, чтобы учесть исправления, добавить запрошенные продукты и отразить значительные изменения в базах данных источников.

Как внести исправления

Данные о питании по своей природе несовершенны. Состав продуктов варьируется в зависимости от региона, сезона, сорта и способа приготовления. Если вы обнаружите ошибку или у вас есть исправление, подкреплённое надёжным источником, мы будем рады о нём узнать.

Есть три способа отправить исправления:

GitHub Issues. Справочные таблицы макронутриентов размещены в публичном репозитории GitHub. Создайте issue с указанием названия продукта, поля, которое вы считаете неверным, текущего значения, значения, которое вы считаете правильным, и ссылки на ваш источник. Мы рассматриваем issues еженедельно.

Электронная почта. Отправляйте исправления на data@nutrola.com с той же информацией: название продукта, поле, текущее значение, предлагаемое значение и источник. Мы ответим в течение пяти рабочих дней.

Pull requests. Если вы уверенно работаете с Git, вы можете сделать форк репозитория, отредактировать CSV- или JSON-файл напрямую и отправить pull request. Укажите ваш источник в описании PR. Мы рассмотрим и примем исправления, подкреплённые надёжными данными.

Мы не принимаем через этот процесс заявки на брендовые или фирменные продукты. Они обрабатываются через основной конвейер базы данных продуктов Nutrola, у которого есть собственный рабочий процесс верификации.

Интеграция с API Nutrola для данных в реальном времени

Скачиваемые справочные таблицы макронутриентов — это статический снимок, отлично подходящий для офлайн-использования, встраиваемых приложений, учебных материалов и быстрых справок. Но если вам нужны данные о питании в реальном времени в больших масштабах, API Nutrola для данных о питании предоставляет всё, что есть в этих таблицах, и гораздо больше.

API охватывает более 3 миллионов записей о продуктах (по сравнению с 500+ в справочных таблицах), включает полные профили микронутриентов с 70+ нутриентами на продукт, поддерживает сканирование штрих-кодов, текстовый поиск и автодополнение, а также предоставляет данные о брендовых продуктах из 47 стран. Это те же данные, которые используются в приложении Nutrola, которым ежедневно пользуются более 2 миллионов человек.

Для разработчиков: API построен по принципу REST, возвращает JSON и предлагает бесплатный тариф с 500 запросами в день — этого достаточно для прототипирования и личных проектов. Платные тарифы масштабируются до миллионов запросов. Полную документацию вы найдёте на api.nutrola.com/docs.

Для исследователей и учебных заведений: мы предлагаем академические лицензии с повышенными лимитами запросов и возможностями массового экспорта. Обращайтесь по адресу research@nutrola.com для получения подробностей.

Справочные таблицы макронутриентов и API дополняют друг друга. Используйте таблицы для офлайн-работы, встроенных наборов данных и ситуаций, когда вам нужен самодостаточный файл. Используйте API, когда вам нужен широкий охват, глубина данных, обновления в реальном времени и функции поиска.

Часто задаваемые вопросы

Как часто обновляются справочные таблицы макронутриентов?

Мы обновляем таблицы примерно раз в квартал. Каждый выпуск получает новый номер версии (текущая версия — 1.4.0). Обновления включают исправления, присланные пользователями, добавление часто запрашиваемых продуктов и корректировки при публикации пересмотренных значений в наших базах данных-источниках. JSON-файл содержит версию и дату генерации в метаданных, поэтому вы можете программно проверить, есть ли у вас последняя версия.

Могу ли я использовать эти данные в своём коммерческом приложении?

Да. Справочные таблицы макронутриентов выпущены под лицензией Creative Commons Attribution 4.0 (CC BY 4.0). Вы можете использовать, изменять и распространять данные как в личных, так и в коммерческих проектах при условии указания авторства. Ссылки на nutrola.com или упоминания «Nutrola Macro Reference Tables» в разделе благодарностей достаточно. Вам не нужно запрашивать разрешение или оплачивать какие-либо сборы.

Почему только 500+ продуктов, а не вся база данных Nutrola?

Справочные таблицы задуманы как практическое, высококачественное подмножество наиболее часто употребляемых продуктов. Охват 500+ позиций по семи категориям покрывает примерно 90% того, что люди едят ежедневно в большинстве стран. Расширение до 3 миллионов записей сделало бы файлы громоздкими для многих сценариев использования (полная база данных превышает 2 ГБ). Если вам нужен полный набор данных, API Nutrola предоставляет доступ ко всему.

Значения указаны на порцию или на 100 граммов?

На порцию. Каждая запись включает описание порции (например, «1 среднее яблоко (182г)») и соответствующую массу в граммах, поэтому вы можете легко пересчитать значения на 100 г, разделив каждое значение нутриента на массу порции и умножив на 100. Мы выбрали значения на порцию, потому что они более удобны для отслеживания питания, планирования рационов и клиентских приложений.

Как пересчитать данные на 100 граммов?

Умножьте каждое значение нутриента на 100 и разделите на поле serving_weight_g. Например, если порция куриной грудки массой 170 г содержит 53,4 г белка, значение белка на 100 г составит (53,4 * 100) / 170 = 31,4 г. Вот быстрая функция на Python:

def per_100g(food, nutrient_field):
    """Convert a per-serving nutrient value to per-100g."""
    serving_weight = food['serving_weight_g']
    if serving_weight == 0:
        return 0
    return round(food[nutrient_field] * 100 / serving_weight, 1)

Что делать, если нужного мне продукта нет в таблице?

Сначала проверьте, не присутствует ли похожий продукт под другим названием — используйте функцию поиска в текстовом редакторе или простой скрипт для поиска по полю food_name. Если продукт действительно не включён, у вас есть два варианта: отправить запрос через наш репозиторий GitHub (мы расставляем приоритеты дополнений на основе спроса) или использовать API Nutrola, который охватывает более 3 миллионов продуктов и с гораздо большей вероятностью содержит то, что вам нужно. Для разовых запросов приложение Nutrola позволяет бесплатно искать по полной базе данных.

Готовы трансформировать отслеживание питания?

Присоединяйтесь к тысячам тех, кто изменил свой путь к здоровью с Nutrola!

Бесплатные справочные таблицы макронутриентов: скачать данные о питании в CSV и JSON | Nutrola