Introdução
A GTIN API permite consultar informações de produtos por GTIN. O servidor normaliza o GTIN removendo caracteres não numéricos (por exemplo, espaços e traços).
GTIN-8, GTIN-12, GTIN-13 e GTIN-14 (inclui EAN/UPC/ISBN quando aplicável).
Autenticação
Todos os endpoints desta página exigem uma API key válida. Você pode enviar a chave em um destes cabeçalhos:
Formato Bearer
Authorization: Bearer SUA_CHAVE_APICabeçalho direto
X-API-Key: SUA_CHAVE_APIDica: para aplicações servidor-servidor, prefira X-API-Key. Para ferramentas e proxies que já usam Authorization, use Bearer.
Quickstart
Use o exemplo abaixo para fazer a primeira consulta.
https://api.pesquisagtin.com.brcurl -X GET "https://api.pesquisagtin.com.br/v1/gtins/7891234567890" \
-H "X-API-Key: SUA_CHAVE_API"Endpoints
A seguir estão os endpoints suportados nesta API.
/v1/gtins/{gtin}Retorna os dados de um produto a partir do seu GTIN. Caracteres não numéricos no parâmetro são ignorados.
gtin— GTIN do produto (8, 12, 13 ou 14 dígitos).
curl -X GET "https://api.pesquisagtin.com.br/v1/gtins/7891234567890" \
-H "Authorization: Bearer SUA_CHAVE_API"- 200Produto encontrado
- 400GTIN inválido ou parâmetros inválidos
- 401API key ausente ou inválida
- 403Plano sem acesso à API
- 404Produto não encontrado
- 429Rate limit ou quota mensal excedida
/v1/gtins/batchConsulta múltiplos GTINs em uma única requisição. O limite de itens por batch depende do seu plano, com hard limit de 100 GTINs por requisição.
curl -X POST "https://api.pesquisagtin.com.br/v1/gtins/batch" \
-H "X-API-Key: SUA_CHAVE_API" \
-H "Content-Type: application/json" \
-d '{
"gtins": ["7891234567890", "0012345678905"]
}'- 200Consulta em lote concluída
- 400Requisição inválida (ex.: acima do limite do plano)
- 401API key ausente ou inválida
- 403Plano sem acesso a batch
- 429Rate limit ou quota mensal excedida
/v1/gtins/batch?gtin=...Versão cacheável do batch via query string. Use o parâmetro repetido `gtin` (ex.: `?gtin=...>in=...`). Esta rota limita o batch em 10 GTINs por requisição e responde com headers de cache (`Cache-Control: private, max-age=3600` e `Vary: X-API-Key`).
curl -X GET "https://api.pesquisagtin.com.br/v1/gtins/batch?gtin=7891234567890>in=0012345678905" \
-H "X-API-Key: SUA_CHAVE_API"- 200Consulta em lote concluída
- 400Máximo de 10 GTINs no GET /batch
- 401API key ausente ou inválida
- 403Plano sem acesso a batch
- 429Rate limit ou quota mensal excedida
/v1/gtins/searchBusca produtos por brand, product_name e/ou ncm. Exige pelo menos um filtro. Paginação via offset com limite fixo de 10 itens.
brand— Marca (contém, case-insensitive).product_name— Nome do produto (contém, case-insensitive).ncm— Código NCM (match exato).offset— Offset para paginação (recomendado múltiplos de 10).
curl -X GET "https://api.pesquisagtin.com.br/v1/gtins/search?brand=acme&offset=0" \
-H "X-API-Key: SUA_CHAVE_API"- 200Resultados paginados
- 400Nenhum filtro informado ou parâmetros inválidos
- 401API key ausente ou inválida
- 403Plano sem acesso à API
- 429Cooldown/rate limit ou quota mensal excedida
Rate limits e quotas
Existem dois tipos de proteção: rate limit (picos) e quota mensal (volume). Além disso, endpoints de batch têm limite de itens por requisição.
/v1/gtins/{gtin} e /v1/gtins/batch): requisições por minuto| Plano | Limite |
|---|---|
| starter | 60 req/min |
| pro | 90 req/min |
| advanced | 120 req/min |
O batch tem um limite por plano e um hard limit de 100 itens. No GET /v1/gtins/batch o limite é 10.
| Plano | Máx. GTINs no POST /batch |
|---|---|
| starter | 2 |
| pro | 5 |
| advanced | 10 |
| Plano | Cooldown |
|---|---|
| starter | 1 pesquisa a cada 6s |
| pro | 1 pesquisa a cada 4s |
| advanced | 1 pesquisa a cada 2s |
Cada chamada aos endpoints autenticados consome 1 unidade da quota mensal. Consultas em batch também contam como 1 chamada (independente do número de itens). Ao exceder, a API retorna 429.
| Plano | Limite mensal |
|---|---|
| starter | 5.000 |
| pro | 10.000 |
| advanced | 20.000 |
Quando o rate limit é excedido, a resposta inclui headers para orientar o retry.
HTTP/1.1 429 Too Many Requests
Retry-After: 5
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 0
Content-Type: application/json
{
"detail": "Limite de 60 requisições/minuto excedido para seu plano (starter). Aguarde 5s."
}Erros
Em geral, erros seguem o padrão do FastAPI com a chave detail.
{
"detail": "Produto com GTIN '7891234567890' não encontrado"
}Exemplos
Snippets prontos para copiar e colar.
const res = await fetch("https://api.pesquisagtin.com.br/v1/gtins/7891234567890", {
headers: {
"X-API-Key": "SUA_CHAVE_API",
},
});
if (!res.ok) throw new Error(await res.text());
const data = await res.json();
console.log(data);