Pitch: Como consultar NCM e CEST pelo código de barras via API (grátis, com exemplos)
Quem já cadastrou produto em ERP, PDV ou e-commerce conhece a dor: para cada item, achar o NCM e o CEST na mão e torcer para estar certo.
Eu mantenho o SI5 Global, um catálogo público com cerca de 1,1 milhão de produtos, e abri uma API gratuita para consultar tudo isso pelo código de barras (GTIN/EAN). Este post mostra como usar em 1 minuto.
Primeira chamada
- Entre em https://global.si5.com.br/login (login com o Google, sem senha) e gere um token em "Minha conta".
- Faça um GET com o token no cabeçalho
Authorization:
curl "https://global.si5.com.br/api/produtos/7891000002186" \
-H "Authorization: Bearer SEU_TOKEN" \
-H "Accept: application/json"
O que volta
{
"codbar": "7891000002186",
"produto": "Corn Flakes Nestlé",
"marca": "NESTLE",
"categoria": "MERCEARIA",
"ncm": "19041000",
"ncm_descricao": "- Produtos à base de cereais, obtidos por expansão ou por torrefação",
"cest_codigo": "1703000",
"cest_segmento": "17. Produtos alimentícios",
"imagem_url": "https://global.si5.com.br/img/78/91/7891000002186.webp",
"nutrientes": { "energia_kcal": 376.67, "proteinas_g": 7, "carboidratos_g": 83.33 }
}
(Resposta resumida; o JSON completo traz também ingredientes, alérgenos e porção.)
Em Node.js
const resp = await fetch("https://global.si5.com.br/api/produtos/7891000002186", {
headers: { Authorization: "Bearer SEU_TOKEN", Accept: "application/json" },
});
if (resp.ok) {
const p = await resp.json();
console.log(p.ncm, p.cest_codigo, p.ncm_descricao);
}
Tem exemplo também em PHP, Python, C# e Delphi no guia: https://global.si5.com.br/api-em-1-minuto
Limites e erros
- Grátis: 100 consultas por dia, 1 token, sem cartão.
401: token ausente ou inválido.404: código de barras fora do catálogo.429: a franquia do dia acabou (renova à meia-noite, horário de Brasília).- Não use o token em JavaScript de página: faça a chamada pelo seu servidor.
De onde vêm os dados
Principalmente de notas fiscais eletrônicas de fornecedores, cruzadas com a tabela oficial vigente. Quando faltava o NCM, uma IA sugere o código e a sugestão é validada contra a tabela. É uma referência de consulta e não substitui o contador: em caso de dúvida, confirme a classificação com ele.
Atualização: publiquei um repositório com exemplos prontos em cURL, PHP, Python, Node.js, C# e Delphi, e um script que preenche uma planilha CSV inteira com NCM e CEST (com cache, para não gastar a franquia diária): https://github.com/dhoneshost/si5global-api-exemplos
Se encontrar algum dado errado ou quiser sugerir um campo, comenta aqui. Documentação completa: https://global.si5.com.br/documentacao