O Problema
Ao preparar uma licitação, você precisa de preços de referência para:
- Estimar o valor da contratação
- Justificar preços no processo
- Evitar sobrepreço
A Solução
Use dados de ATAs vigentes como referência de mercado. Preços de ATAs são homologados em licitação pública, portanto são referências válidas.
Passo a Passo
1. Encontre o código CATMAT
import requests
API_KEY = "ak_sua_chave"
BASE = "https://api.ata360.com.br"
headers = {"Authorization": f"Bearer {API_KEY}"}
# Buscar código do item
resp = requests.get(f"{BASE}/api/catmat/itens",
params={"q": "papel a4"},
headers=headers
)
items = resp.json()["data"]
for item in items[:5]:
print(f"{item['codigo']}: {item['descricao']}")
2. Busque preços históricos
# Análise de preços para código 150233
resp = requests.get(f"{BASE}/api/items/precos/150233", headers=headers)
precos = resp.json()
print(f"Item: {precos['descricao']}")
print(f"Preço mínimo: R$ {precos['valor_min']:.2f}")
print(f"Preço médio: R$ {precos['valor_avg']:.2f}")
print(f"Preço máximo: R$ {precos['valor_max']:.2f}")
print(f"Mediana: R$ {precos['valor_mediana']:.2f}")
print(f"Baseado em {precos['count']} transações")
Saída:
Item: PAPEL A4 75G/M2 BRANCO
Preço mínimo: R$ 18.50
Preço médio: R$ 24.75
Preço máximo: R$ 35.00
Mediana: R$ 23.50
Baseado em 1250 transações
3. Filtre por região
# Preços no Paraná
resp = requests.get(f"{BASE}/api/items/precos/150233",
params={"uf": "PR"},
headers=headers
)
precos_pr = resp.json()
print(f"Preço médio no PR: R$ {precos_pr['valor_avg']:.2f}")
4. Gere relatório
def gerar_relatorio_precos(codigo_item, uf=None):
params = {}
if uf:
params["uf"] = uf
resp = requests.get(f"{BASE}/api/items/precos/{codigo_item}",
params=params,
headers=headers
)
p = resp.json()
relatorio = f"""
RELATÓRIO DE PESQUISA DE PREÇOS
================================
Item: {p['descricao']}
Código CATMAT: {p['codigo_item']}
Fonte: ATAs de Registro de Preço (PNCP)
ESTATÍSTICAS
------------
Preço mínimo: R$ {p['valor_min']:.2f}
Preço máximo: R$ {p['valor_max']:.2f}
Preço médio: R$ {p['valor_avg']:.2f}
Mediana: R$ {p['valor_mediana']:.2f}
Base: {p['count']} transações
"""
return relatorio
print(gerar_relatorio_precos(150233, uf="PR"))
Dicas
Use a mediana como referência - é menos afetada por outliers que a média
Filtre por UF para preços mais relevantes à sua região
Sempre verifique a data das transações - preços antigos podem estar defasados
Veja também
Histórico de Preços
Analise tendências ao longo do tempo
Comparar Fornecedores
Veja quem vende mais barato