Licitações PNCP Brasil — Contratações e Contratos Públicos
Pricing
from $2.00 / 1,000 registro de resultados
Licitações PNCP Brasil — Contratações e Contratos Públicos
Licitações, pregões eletrônicos, dispensas e contratos do governo brasileiro direto da API oficial do PNCP (Lei 14.133). Dados públicos, sem login, com filtros por período, modalidade, UF e palavras-chave.
Pricing
from $2.00 / 1,000 registro de resultados
Rating
0.0
(0)
Developer
Johnn Mottin
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
A licitação do seu setor foi publicada ontem — e o seu concorrente já viu. Monitore licitações, pregões eletrônicos, dispensas e contratos do governo brasileiro direto da API oficial de consulta do PNCP (Portal Nacional de Contratações Públicas, Lei 14.133/2021). Dados 100% públicos e oficiais — sem login, sem CAPTCHA.
Actor comunitário não-oficial, sem afiliação com o Governo Federal, o PNCP ou qualquer órgão público. Os dados vêm da API oficial de consulta e permanecem sujeitos aos termos da fonte.
Para quem é:
- Fornecedores B2G: alerta diário de novas oportunidades no seu setor, UF ou município — filtre por palavras-chave no objeto ("merenda", "pavimentação", "software"…).
- Consultorias de licitação: acompanhe órgãos específicos por CNPJ e monte inteligência de concorrência com os contratos firmados (fornecedor vencedor + valores).
- Integradores e agentes: saída estável em JSON, pronta para n8n, Make, Google Sheets, ou consumo por agentes de IA (schema documentado abaixo).
Como funciona
O Actor consulta a API oficial pncp.gov.br/api/consulta por janela de datas:
- Modo
contratacoes(default): licitações/contratações publicadas no período — editais abertos, pregões, dispensas, com valores estimados, situação e link para o sistema de origem. - Modo
contratos: contratos firmados no período — com fornecedor vencedor (CNPJ + razão social) e valores inicial/global.
Janelas longas são fatiadas automaticamente em consultas de 3 dias (a API do PNCP instabiliza com janelas grandes), com retry e backoff educados. Falha de fatia não derruba a coleta: entra em STATS.sliceFailures com o erro literal, e a run só falha ruidosamente se a maioria das consultas falhar.
Input
Exemplo — alerta diário (recomendado; janela relativa que nunca precisa de manutenção):
{"modo": "contratacoes","diasRetroativos": 3,"modalidades": [6],"uf": "SP","palavrasChave": ["merenda", "alimentação escolar"],"maxResults": 500}
| Campo | Tipo | Default | Descrição |
|---|---|---|---|
modo | string | contratacoes | contratacoes (publicações) ou contratos (firmados) |
diasRetroativos | int 1–90 | 3 | Janela relativa (hoje até N-1 dias atrás) quando as datas ficam vazias |
dataInicial/dataFinal | AAAAMMDD | — | Janela absoluta (as duas juntas); tem precedência |
modalidades | int[] | [6] | Códigos oficiais PNCP; obrigatório no modo contratações (exigência da API; uma consulta por código). Ex.: 6 = Pregão eletrônico, 8 = Dispensa — tabela completa no manual da API de consulta do PNCP |
uf | string | — | Sigla (ex.: SP) — filtrado pela própria API |
municipio | string | — | Nome do município (acentos ignorados) — filtro pós-coleta |
cnpjOrgao | string | — | CNPJ do órgão (14 dígitos; pontuação ignorada) — filtro pós-coleta |
palavrasChave | string[] | [] | Basta UMA casar com o objeto (acentos/caixa ignorados) — filtro pós-coleta |
maxResults | int | 100 | Teto de registros escritos (máx. 10.000) |
Cobrança justa: o evento de resultado conta apenas registros escritos no dataset — o que os filtros descartam não custa nada para você.
Output (shape único nos dois modos; ausente = null)
Registro real (pregão eletrônico publicado em 29/07/2026 — dado público oficial):
{"fonte": "contratacoes","numeroControlePNCP": "87297982000103-1-000233/2026","dataPublicacaoPncp": "2026-07-29T00:00:48","orgaoCnpj": "87297982000103","orgaoRazaoSocial": "MUNICIPIO DE LAJEADO","uf": "RS","municipio": "Lajeado","objeto": "REGISTRO DE PREÇOS PARA A CONTRATAÇÃO, SOB DEMANDA, DE SERVIÇOS COM EQUIPAMENTOS RODOVIÁRIOS...","modalidadeCodigo": 6,"modalidadeNome": "Pregão - Eletrônico","situacao": "Divulgada no PNCP","valorTotalEstimado": 10011189.5,"dataAberturaProposta": "2026-07-29T08:00:00","dataEncerramentoProposta": "2026-08-08T09:00:00","linkSistemaOrigem": "https://pregaobanrisul.com.br/editais/0041_2026/354183","fornecedorNome": null,"valorGlobal": null}
| Campo | Tipo | Presença | Descrição |
|---|---|---|---|
fonte | string | sempre | contratacoes ou contratos |
numeroControlePNCP | string | sempre¹ | ID oficial único no PNCP |
dataPublicacaoPncp | string | sempre¹ | Data/hora da publicação |
objeto | string | sempre¹ | Objeto da contratação/contrato |
orgaoCnpj / orgaoRazaoSocial | string | sempre¹ | Órgão comprador |
orgaoPoder / orgaoEsfera | string | alta | Poder (E/L/J/N) e esfera (F/E/M/D) |
uf / municipio / codigoIbge / unidadeNome | string | alta | Localização da unidade compradora |
modalidadeCodigo / modalidadeNome | int/string | só contratações | Modalidade oficial |
situacao | string | só contratações | Ex.: "Divulgada no PNCP" |
valorTotalEstimado / valorTotalHomologado | number | quando não sigiloso | Valores da contratação |
dataAberturaProposta / dataEncerramentoProposta | string | quando aplicável | Prazos de proposta |
tipoInstrumento / amparoLegal / amparoLegalDescricao / modoDisputa / srp | vários | só contratações | Enquadramento legal |
anoCompra / numeroCompra / sequencialCompra / processo | vários | alta | Identificação administrativa |
fornecedorNi / fornecedorNome | string | só contratos | Fornecedor vencedor |
valorInicial / valorGlobal | number | só contratos | Valores contratados |
dataAssinatura / dataVigenciaInicio / dataVigenciaFim | string | só contratos | Vigência |
tipoContrato / numeroContrato / anoContrato | vários | só contratos | Identificação do contrato |
linkSistemaOrigem / linkProcessoEletronico | string | quando informado | Link para o edital/processo na origem |
informacaoComplementar / usuarioNome / dataAtualizacao / scrapedAt | string | vários | Metadados |
¹ Campos-core monitorados pelo health check: se mais de 50% vierem nulos a run falha nomeando o campo (DEAD_FIELDS) — você nunca recebe silenciosamente um dataset quebrado. STATS (key-value store) traz completude por campo, consultas por fatia, retries e avisos; ERRORS traz falhas com código estável (HTTP_UNAVAILABLE, HTTP_TIMEOUT, INVALID_INPUT, API_CONTRACT_CHANGED, SLICE_FAILED, EMPTY_RESULTS, DEAD_FIELDS).
Janela sem publicações (ex.: feriado com diasRetroativos: 1) é sucesso legítimo sinalizado em STATS.legitimateEmptyWindow — distinto de falha de coleta, que sempre é ruidosa.
Exemplo de consumo (API Apify)
curl -s "https://api.apify.com/v2/acts/<SEU_USUARIO>~pncp-licitacoes-brasil/run-sync-get-dataset-items?token=<SEU_TOKEN>" \-X POST -H "Content-Type: application/json" \-d '{"diasRetroativos": 1, "modalidades": [6, 8], "uf": "MG", "maxResults": 200}'
Agende na Apify (recomendado — na nuvem, não no seu desktop)
Alerta de licitação é diário: diasRetroativos: 3 com uma run por dia. Use os Schedules da própria Apify, não um agendador local — configure uma vez e roda na nuvem, com o seu computador ligado ou não.
- Salve o seu input como Task (Console → o Actor → Create task), ex.: a sua UF, as suas modalidades e as suas palavras-chave.
- Console → Schedules → Create schedule, adicione a Task e defina o cron (ex.: todo dia às 6h →
0 6 * * *). - Ligue o dataset ao n8n, Make, Sheets, Slack ou webhook pelas integrações da Apify.
Como a janela é relativa (diasRetroativos), o agendamento nunca precisa de manutenção — cada run recalcula o período sozinha.
Limites honestos
- A API do PNCP exige modalidade no modo contratações: cada código da lista vira uma consulta própria (custo proporcional).
- Janelas grandes sob volume não têm garantia de completude. A API do PNCP aplica rate limit (HTTP 429) sob volume; nesses casos o Actor entrega resultado parcial transparente, nunca um dataset silenciosamente incompleto. Em
STATS:slicesOk/slicesTotalmostram quantas consultas completaram, cada fatia perdida entra emsliceFailures[]comcode,messagee aqueryliteral (ex.:code: "HTTP_RATE_LIMITED",message: "HTTP 429 em /v1/contratacoes/publicacao."),warnings[]recebe"N/M consulta(s) falharam após retries; resultado parcial."equalityAlertviratrue. Janelas curtas (alerta diário, o uso recomendado) não são afetadas na prática. municipio,cnpjOrgaoepalavrasChavefiltram após a coleta (a API não oferece esses filtros) — o custo de infraestrutura das páginas descartadas é do Actor, nunca cobrado de você.- Valores podem ser legitimamente nulos (sigilo previsto em lei).
Perguntas frequentes
Preciso de login ou chave de API do PNCP? Não. O Actor consulta a API oficial e pública do PNCP, sem login e sem CAPTCHA.
Por que a modalidade é obrigatória no modo contratações? Porque a própria API do PNCP exige o código de modalidade nessa consulta. Cada código da sua lista vira uma consulta separada — por isso o custo cresce com a quantidade de modalidades.
Pelo que exatamente eu pago? Por registro escrito no dataset (Pay Per Event) — o que os filtros de município, CNPJ, palavras-chave ou o maxResults descartam não custa nada. A aba Pricing desta página é sempre a fonte autoritativa dos valores vigentes e de qualquer taxa por run.
Dá para agendar? Sim — é o uso pretendido. Veja "Agende na Apify" acima.
Tem alguma ligação com o governo? Não. Actor comunitário não-oficial, sem afiliação com o Governo Federal, o PNCP ou qualquer órgão público; os dados vêm da API oficial de consulta e permanecem sujeitos aos termos da fonte.
English summary
Brazil public procurement (PNCP) scraper — official government API, no login. Two modes: published procurement notices (contratacoes: tenders, e-auctions, direct purchases, with estimated values, deadlines and source links) and signed contracts (contratos: winning supplier + contract values). Date-window queries with relative-window support (diasRetroativos) for maintenance-free daily monitoring, server-side UF filter, client-side keyword/municipality/agency filters (you are only charged for records actually written). Stable flat JSON schema (missing = null), loud health checks (DEAD_FIELDS, EMPTY_RESULTS, API_CONTRACT_CHANGED), full run diagnostics in STATS/ERRORS. Built for n8n/Make/Sheets pipelines and AI agents.