CLI em Node.js + TypeScript que busca no PNCP (Portal Nacional de Contratações Públicas) oportunidades de Dispensa de Licitação com prazo de proposta ainda aberto, filtra e ordena os resultados, e lista tudo no terminal.
Objetivo: decidir manualmente em quais vale a pena dar lance, sem precisar garimpar manualmente no site do governo.
- Node.js 18 ou superior (usa o
fetchnativo do Node)
npm install
npm run build
Lista as contratações de Dispensa de Licitação com proposta aberta.
node dist/index.js buscar --data-final <AAAAMMDD> [opções]
(ou npm start -- buscar --data-final <AAAAMMDD> [opções])
| Flag | Obrigatória | Descrição |
|---|---|---|
--data-final <data> |
sim | Data limite de busca, no formato AAAAMMDD |
--uf <uf> |
não | Filtra pela sigla do estado (ex: MT) |
--cidade <cidade> |
não | Filtra pelo nome do município (ex: Cuiabá) |
--palavra-chave <t> |
não | Filtra pelo texto do objeto da contratação |
Os resultados são sempre ordenados pelo prazo de encerramento da proposta (mais próximos primeiro).
node dist/index.js buscar --data-final 20260901 --uf MT --cidade Cuiabá --palavra-chave material
Cada resultado mostra o ID (numeroControlePNCP), órgão, UF, objeto da
compra, valor estimado, prazo de encerramento e o link direto para o edital
no site do PNCP.
Os dados vêm do endpoint público /v1/contratacoes/proposta do PNCP,
filtrado para a modalidade "Dispensa de Licitação". Como o PNCP pagina os
resultados e aplica limite de requisições (rate limit), uma busca completa
pode levar alguns minutos — o programa já trata isso automaticamente
(pausa entre páginas e novas tentativas em caso de bloqueio temporário).
Busca os itens técnicos (descrição, quantidade, valores) de uma contratação específica e usa a API da OpenAI para interpretar o que está sendo pedido e sugerir que tipo de produto/serviço comercial atende.
node dist/index.js analisar --id <numeroControlePNCP>
O --id é o campo ID: que aparece em cada resultado do comando buscar
(ex: 58692071000182-1-000019/2026).
- Crie um arquivo
.envna raiz do projeto. - Crie uma chave em platform.openai.com/api-keys
e coloque em
.env:OPENAI_API_KEY=sk-...
Atenção: diferente do buscar (que usa a API gratuita do PNCP), cada
chamada do analisar consome créditos pagos da sua conta OpenAI. O .env
nunca deve ser commitado (já está no .gitignore).