Tabelas de Referência de Macros Gratuitas: Baixe Dados Nutricionais Completos em CSV e JSON

Baixe gratuitamente tabelas de referência de macros com dados nutricionais completos para mais de 500 alimentos comuns em formato CSV e JSON. Inclui proteínas, carboidratos, gorduras, fibras e calorias organizados por categoria alimentar.

Seja para construir um aplicativo de nutrição, conduzir um estudo de pesquisa, orientar clientes ou simplesmente ter uma folha de referência confiável na sua mesa, você precisa de dados de macros limpos em um formato que realmente funcione. Bancos de dados governamentais existem, mas são extensos, inconsistentes e formatados para burocratas em vez de construtores.

Reunimos um conjunto de tabelas de referência de macros gratuitas cobrindo mais de 500 alimentos comuns com decomposições completas de macronutrientes. Os dados estão disponíveis nos formatos CSV e JSON, prontos para serem inseridos em uma planilha, banco de dados, script ou aplicação. Cada entrada foi verificada em relação a fontes primárias, e os arquivos estão estruturados para que você possa começar a usá-los imediatamente, sem limpeza ou transformação.

Esta página cobre exatamente o que está nas tabelas, como os dados estão estruturados, como carregá-los programaticamente e como contribuir com correções se você encontrar algo que precise ser atualizado.

O Que Está Incluído

As tabelas de referência de macros contêm mais de 500 dos alimentos mais consumidos em sete categorias principais. Para cada item alimentar, você obtém:

  • Nome do alimento — o nome padrão em inglês usado na ciência da nutrição
  • Categoria — uma das sete categorias de nível superior (mais detalhes abaixo)
  • Subcategoria — um agrupamento mais específico dentro da categoria principal
  • Descrição da porção — um tamanho de porção legível para humanos (ex.: "1 banana média", "1 xícara cozida")
  • Peso da porção em gramas — o equivalente em gramas daquele tamanho de porção
  • Calorias — energia total em quilocalorias (kcal)
  • Proteínas — gramas de proteína por porção
  • Gordura total — gramas de gordura total por porção
  • Gordura saturada — gramas de gordura saturada por porção
  • Carboidratos totais — gramas de carboidratos totais por porção
  • Fibra alimentar — gramas de fibra alimentar por porção
  • Açúcar — gramas de açúcares totais por porção
  • Sódio — miligramas de sódio por porção

Todos os valores são reportados por porção listada, não por 100 gramas. Escolhemos essa abordagem porque dados baseados em porções são o que a maioria das pessoas realmente precisa ao rastrear refeições, montar planos alimentares ou exibir informações nutricionais em uma interface. Se você precisar de valores por 100g, basta dividir pelo peso da porção e multiplicar por 100.

As tabelas não incluem micronutrientes além de sódio e fibra. Para perfis completos de micronutrientes (vitaminas, minerais, aminoácidos), consulte a seção sobre a API da Nutrola no final deste artigo — é lá que os dados detalhados estão.

Especificações do Formato de Dados

Formato CSV

O arquivo CSV usa codificação UTF-8 com uma linha de cabeçalho. Os campos são delimitados por vírgula e os campos de texto são entre aspas. Veja como é a estrutura:

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

O arquivo CSV é compatível com Microsoft Excel, Google Sheets, LibreOffice Calc, Apple Numbers e qualquer linguagem de programação com suporte a análise de CSV. Nenhuma configuração especial é necessária — abra o arquivo e ele será analisado corretamente.

Formato JSON

O arquivo JSON contém um array de objetos, um por item alimentar. A estrutura espelha os campos do 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
      }
    }
  ]
}

O arquivo JSON inclui campos de metadados no nível superior: uma string de versão para rastreamento de atualizações, a data de geração, o nome da fonte e a contagem total de registros. Isso facilita verificar se você possui a versão mais recente e construir lógica de verificação de atualizações em suas aplicações.

Valores numéricos são armazenados como números, não como strings. Valores nulos não aparecem — se o valor de um nutriente é desconhecido, o alimento é excluído do conjunto de dados em vez de ser incluído com dados ausentes. Essa foi uma escolha deliberada para manter os dados limpos e evitar erros silenciosos nos cálculos.

Descrições dos Campos

Aqui está uma descrição detalhada de cada campo, incluindo unidades, intervalos esperados e casos especiais:

Campo Tipo Unidade Descrição
food_name string Nome padrão em inglês. Inclui método de preparo quando relevante (ex.: "cooked", "raw", "dried").
category string Uma das sete categorias de nível superior. Consulte a seção de categorias abaixo.
subcategory string Um agrupamento mais específico. Por exemplo, dentro de "Proteins" você encontrará "Poultry", "Red Meat", "Fish & Seafood", "Legumes" e "Eggs".
serving_description string Um tamanho de porção legível para humanos. Sempre inclui o peso em gramas entre parênteses.
serving_weight_g number gramas O peso numérico em gramas da porção. Valores inteiros para a maioria dos itens, uma casa decimal para itens onde a precisão importa.
calories_kcal number kcal Energia total. Calculada usando o sistema Atwater (4 kcal/g de proteína, 4 kcal/g de carboidratos, 9 kcal/g de gordura).
protein_g number gramas Proteína total. Precisão de uma casa decimal.
total_fat_g number gramas Gordura total incluindo saturada, monoinsaturada e poli-insaturada.
saturated_fat_g number gramas Apenas ácidos graxos saturados.
total_carbs_g number gramas Carboidratos totais incluindo fibra e açúcares.
fiber_g number gramas Fibra alimentar total (solúvel + insolúvel).
sugar_g number gramas Açúcares totais (naturais + adicionados). O conjunto de dados não separa açúcares adicionados dos naturais.
sodium_mg number miligramas Teor de sódio. Note que é em miligramas, não em gramas, diferentemente dos outros campos de nutrientes.

Algumas observações sobre precisão: todos os valores de nutrientes são arredondados para uma casa decimal. Isso corresponde ao nível de precisão dos dados fonte subjacentes. Reportar mais casas decimais implicaria em um falso nível de exatidão — a composição alimentar varia naturalmente de 5 a 15% dependendo das condições de cultivo, raça do animal e métodos de preparo.

Categorias de Alimentos

Os mais de 500 alimentos estão organizados em sete categorias de nível superior, cada uma com múltiplas subcategorias:

Proteínas

Aproximadamente 95 entradas cobrindo aves (peito de frango, coxa, peru, peru moído), carne vermelha (contrafilé bovino, carne moída em várias porcentagens de gordura, lombo suíno, cordeiro), peixes e frutos do mar (salmão, atum, camarão, bacalhau, tilápia, sardinhas), ovos (inteiros, claras, mexidos) e proteínas de origem vegetal (tofu, tempeh, seitan, edamame). Leguminosas como lentilhas, grão-de-bico e feijão preto estão incluídas aqui em vez de em grãos, pois seu papel nutricional primário é o fornecimento de proteínas.

Grãos e Amidos

Aproximadamente 80 entradas cobrindo grãos integrais (arroz integral, aveia, quinoa, cevada, trigo bulgur), grãos refinados (arroz branco, pão branco, massa), vegetais amiláceos (batatas, batata-doce, milho) e produtos comuns de grãos (tortilhas, bagels, biscoitos cream cracker, cuscuz). Valores cozidos e secos são fornecidos para grãos onde a distinção importa.

Frutas

Aproximadamente 65 entradas cobrindo frutas frescas comuns (maçãs, bananas, laranjas, morangos, mirtilos, uvas), frutas tropicais (mangas, abacaxi, mamão, kiwi), frutas secas (passas, tâmaras, damascos secos, cranberries) e frutas congeladas. Todas as entradas de frutas frescas são para a porção crua e comestível — sementes, cascas e caroços são excluídos do peso da porção quando aplicável.

Vegetais

Aproximadamente 85 entradas cobrindo folhas verdes (espinafre, couve, alface americana, rúcula), vegetais crucíferos (brócolis, couve-flor, couve-de-bruxelas, repolho), raízes (cenouras, beterrabas, nabos, rabanetes), alliums (cebolas, alho), solanáceas (tomates, pimentões, berinjela) e outros vegetais comuns (pepino, salsão, abobrinha, cogumelos, aspargos). Valores crus e cozidos são fornecidos para vegetais onde o cozimento altera significativamente a densidade nutricional por porção.

Laticínios e Alternativas

Aproximadamente 70 entradas cobrindo leite (integral, semidesnatado, desnatado e leites vegetais), iogurte (grego, regular, com sabor, vegetal), queijos (cheddar, muçarela, feta, ricota, cream cheese, parmesão), manteiga, creme de leite e alternativas lácteas comuns (leite de amêndoa, leite de aveia, leite de soja, iogurte de coco). Leites e iogurtes vegetais são agrupados aqui em vez de em uma categoria separada porque os usuários normalmente os buscam como substitutos diretos.

Lanches e Alimentos Processados

Aproximadamente 75 entradas cobrindo castanhas e sementes (amêndoas, nozes, amendoins, sementes de chia, sementes de linhaça, sementes de girassol), manteigas de castanhas (pasta de amendoim, manteiga de amêndoa), alimentos de lanche comuns (pretzels, pipoca, barras de granola, barras de proteína, mix de trilha, chips, chocolate amargo), pastas e condimentos (homus, guacamole, salsa, maionese, azeite de oliva, mel) e outros itens comumente rastreados como proteína em pó e bolinhas energéticas.

Bebidas

Aproximadamente 60 entradas cobrindo sucos (suco de laranja, suco de maçã, suco de cranberry), refrigerantes (cola, soda de limão, ginger ale), bebidas esportivas e energéticas, bebidas de café (café preto, latte, cappuccino, mocha com vários tipos de leite), bases para smoothies, bebidas alcoólicas (cerveja, vinho, destilados) e adições comuns (creme, açúcar, xaropes saborizados). A água não está incluída pois não possui conteúdo de macronutrientes.

Usando os Dados Programaticamente

O objetivo principal de fornecer formatos CSV e JSON é que você possa carregar esses dados diretamente no seu código. Aqui estão exemplos funcionais em Python e JavaScript.

Python: Carregando o 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: Carregando o 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: Carregando o 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: Carregando o CSV no Navegador

// 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`);

Esses exemplos demonstram as operações mais comuns: carregar os dados, pesquisar e filtrar, agrupar por categoria e ordenar por densidade nutricional. As estruturas de dados são intencionalmente simples para que você não precise de bibliotecas especiais para trabalhar com elas.

Fontes de Dados

As tabelas de referência de macros são compiladas a partir das seguintes fontes primárias:

Banco de Dados USDA SR Legacy. O banco de dados USDA Standard Reference Legacy é o conjunto de dados fundamental para composição alimentar nos EUA. Ele contém dados de nutrientes analisados em laboratório para mais de 7.600 itens alimentares. Nossas tabelas usam o SR Legacy como fonte primária para alimentos genéricos/sem marca. Escolhemos o SR Legacy em vez do mais recente FoodData Central FNDDS porque os valores do SR Legacy são mais amplamente validados e citados na pesquisa nutricional.

USDA FoodData Central. Para alimentos não cobertos pelo SR Legacy, particularmente itens alimentares mais novos e valores atualizados, referenciamos os conjuntos de dados Foundation Foods e Survey Foods do FoodData Central.

Bancos de dados internacionais de composição alimentar. Para alimentos consumidos globalmente mas que podem não aparecer em bancos de dados dos EUA, fazemos referência cruzada com dados das tabelas de composição McCance and Widdowson da Public Health England, NUTTAB do Food Standards Australia New Zealand (FSANZ), o Canadian Nutrient File (CNF) e o Danish Food Composition Databank (Frida). Isso é particularmente relevante para frutas tropicais, grãos regionais e métodos de preparo comuns fora dos EUA.

Dados de fabricantes. Para itens processados e de marca nas categorias de lanches e bebidas, referenciamos os painéis de informações nutricionais fornecidos pelos fabricantes. Quando os dados do fabricante conflitam com a análise laboratorial, anotamos a discrepância e utilizamos os valores laboratoriais como padrão.

Todos os valores foram cruzados com pelo menos duas fontes independentes. Quando as fontes discordam em mais de 10%, investigamos a causa (geralmente diferentes métodos de preparo ou diferenças de cultivar) e selecionamos o valor mais representativo de como o alimento é normalmente consumido.

O conjunto de dados é versionado. A versão atual é 1.4.0, última atualização em março de 2026. Atualizamos as tabelas aproximadamente a cada trimestre para incorporar correções, adicionar alimentos solicitados e refletir quaisquer mudanças significativas nos bancos de dados fonte.

Como Contribuir com Correções

Dados nutricionais são inerentemente imperfeitos. A composição alimentar varia por região, estação, cultivar e método de preparo. Se você encontrar um erro ou tiver uma correção respaldada por uma fonte confiável, queremos saber.

Existem três maneiras de enviar correções:

Issues no GitHub. As tabelas de referência de macros estão hospedadas em um repositório público no GitHub. Abra um issue com o nome do alimento, o campo que você acredita estar incorreto, o valor atual, o valor que você acredita estar correto e um link para sua fonte. Revisamos os issues semanalmente.

E-mail. Envie correções para data@nutrola.com com as mesmas informações: nome do alimento, campo, valor atual, valor proposto e fonte. Responderemos em até cinco dias úteis.

Pull requests. Se você tem familiaridade com Git, pode fazer um fork do repositório, editar o arquivo CSV ou JSON diretamente e enviar um pull request. Inclua sua fonte na descrição do PR. Revisaremos e faremos merge de correções que sejam respaldadas por dados confiáveis.

Não aceitamos submissões de produtos de marca ou proprietários por este processo. Esses são tratados pelo pipeline principal de banco de dados alimentar da Nutrola, que possui seu próprio fluxo de verificação.

Integração com a API da Nutrola para Dados em Tempo Real

As tabelas de referência de macros para download são um snapshot estático — ótimas para uso offline, aplicações incorporadas, materiais educacionais e consultas rápidas. Mas se você precisa de dados nutricionais em tempo real em escala, a API de Dados Nutricionais da Nutrola oferece tudo que está nestas tabelas e muito mais.

A API cobre mais de 3 milhões de entradas de alimentos (comparado a mais de 500 nas tabelas de referência), inclui perfis completos de micronutrientes com mais de 70 nutrientes por item, suporta leitura de código de barras, busca por texto e autocompletar, e serve dados de produtos de marca de 47 países. São os mesmos dados que alimentam o app Nutrola usado por mais de 2 milhões de pessoas diariamente.

Para desenvolvedores: a API é RESTful, retorna JSON e oferece um plano gratuito com 500 requisições por dia — suficiente para prototipagem e projetos pessoais. Os planos pagos escalam para milhões de requisições. Você pode encontrar a documentação completa em api.nutrola.com/docs.

Para pesquisadores e instituições: oferecemos licenças acadêmicas com limites de taxa elevados e capacidades de exportação em massa. Entre em contato com research@nutrola.com para detalhes.

As tabelas de referência de macros e a API se complementam. Use as tabelas para trabalho offline, conjuntos de dados incorporados e situações onde você precisa de um arquivo autossuficiente. Use a API quando precisar de abrangência, profundidade, atualizações em tempo real e funcionalidade de busca.

Perguntas Frequentes

Com que frequência as tabelas de referência de macros são atualizadas?

Atualizamos as tabelas aproximadamente a cada trimestre. Cada lançamento recebe um novo número de versão (a versão atual é 1.4.0). As atualizações incluem correções enviadas por usuários, adições de alimentos comumente solicitados e ajustes quando nossos bancos de dados fonte publicam valores revisados. O arquivo JSON inclui a versão e a data de geração nos seus metadados, para que você possa verificar programaticamente se possui a versão mais recente.

Posso usar esses dados na minha aplicação comercial?

Sim. As tabelas de referência de macros são disponibilizadas sob a licença Creative Commons Attribution 4.0 (CC BY 4.0). Você pode usar, modificar e redistribuir os dados em projetos pessoais e comerciais, desde que forneça atribuição. Um link para nutrola.com ou uma menção a "Nutrola Macro Reference Tables" nos créditos de dados é suficiente. Você não precisa solicitar permissão nem pagar uma taxa.

Por que apenas mais de 500 alimentos e não o banco de dados completo da Nutrola?

As tabelas de referência foram projetadas para ser um subconjunto prático e de alta qualidade dos alimentos mais consumidos. Cobrir mais de 500 itens em sete categorias atende aproximadamente 90% do que as pessoas comem diariamente na maioria dos países. Expandir para 3 milhões de entradas tornaria os arquivos difíceis de manusear para muitos casos de uso (o banco de dados completo excede 2 GB). Se você precisa do conjunto de dados completo, a API da Nutrola fornece acesso a tudo.

Os valores são por porção ou por 100 gramas?

Por porção. Cada entrada inclui uma descrição da porção (ex.: "1 maçã média (182g)") e o peso correspondente em gramas, para que você possa facilmente converter para valores por 100g dividindo cada valor de nutriente pelo peso da porção e multiplicando por 100. Escolhemos valores por porção porque são mais imediatamente úteis para rastreamento de refeições, planejamento alimentar e aplicações voltadas ao cliente.

Como converto os dados para valores por 100g?

Multiplique cada valor de nutriente por 100 e divida pelo campo serving_weight_g. Por exemplo, se uma porção de peito de frango de 170g contém 53,4g de proteína, o valor de proteína por 100g é (53,4 * 100) / 170 = 31,4g. Aqui está uma função rápida em 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)

O que devo fazer se um alimento que preciso não estiver na tabela?

Primeiro, verifique se um alimento semelhante existe com um nome diferente — use a função de busca do seu editor de texto ou um script simples para pesquisar no campo food_name. Se o alimento realmente não estiver incluído, você tem duas opções: envie uma solicitação pelo nosso repositório no GitHub (priorizamos adições com base na demanda) ou use a API da Nutrola, que cobre mais de 3 milhões de alimentos e tem muito mais chances de ter o que você precisa. Para consultas pontuais, o próprio app da Nutrola permite pesquisar o banco de dados completo gratuitamente.

Pronto para Transformar seu Rastreamento Nutricional?

Junte-se a milhares que transformaram sua jornada de saúde com o Nutrola!

Tabelas de Referência de Macros Gratuitas: Download de Dados Nutricionais CSV e JSON | Nutrola