# PNCP Vencedores & Inteligência de Fornecedores (`johnatan029/pncp-award-vendor-intelligence`) Actor

Enriqueça licitações do PNCP com vencedores por item, CNPJ/razão social, valores homologados, descontos e porte do fornecedor. Compare estimado x homologado e receba agregações grátis de concentração, recorrência, economia e taxa de deserto. Cobrança apenas quando houver resultado.

- **URL**: https://apify.com/johnatan029/pncp-award-vendor-intelligence.md
- **Developed by:** [Johnn Mottin](https://apify.com/johnatan029) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 contratação enriquecidas

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### Descubra quem venceu licitações do PNCP — e por quanto

Enriqueça contratações do **PNCP — Portal Nacional de Contratações Públicas** com a camada que aparece depois da homologação: **fornecedor vencedor por item, CNPJ/identificação, razão social, quantidade homologada, valores, desconto e porte do fornecedor**.

O Actor cruza a publicação da contratação com os endpoints públicos de **itens** e **resultados**, entrega um registro estruturado por contratação e adiciona gratuitamente inteligência agregada sobre fornecedores, concentração, recorrência, economia e itens desertos ou fracassados.

Foi criado para **inteligência B2G, análise concorrencial, pesquisa de fornecedores vencedores, acompanhamento pós-licitação e automação de dados públicos brasileiros**.

Sem login. Sem navegador. Sem LLM em runtime.

#### Principais recursos

- **Vencedores de licitação por item**
- **CNPJ/identificação e razão social do fornecedor**
- **Quantidade e valor unitário homologados**
- **Valor total homologado**
- **Percentual de desconto**
- **Porte e natureza jurídica quando disponíveis**
- **Valores estimados x homologados**
- **Economia comparável sem extrapolar dados ausentes**
- **Consolidação de vencedores por contratação**
- **Top fornecedores por valor homologado**
- **Concentração de valor no Top 1, Top 3 e Top 5**
- **Recorrência órgão ↔ fornecedor**
- **Distribuição por porte**
- **Taxa de itens desertos e fracassados**
- **Filtros por período, modalidade, UF, município, órgão e palavras-chave**
- **Resultado vazio gratuito quando ainda não existe vencedor**
- **RUN\_SUMMARY e agregações gratuitos**
- **Health checks, retries e diagnóstico em STATS**
- **Pay Per Event: cobrança somente quando existe enriquecimento com resultado**

> **Actor comunitário não-oficial. Sem afiliação com o Governo Federal, o PNCP, o Serpro ou qualquer órgão público.** Os dados são obtidos de endpoints públicos do PNCP e permanecem sujeitos à disponibilidade e às condições da fonte.

***

### Para que este Actor serve

Uma publicação de licitação responde o que o órgão pretende comprar.

Este Actor entra na etapa posterior para responder:

> Quem venceu cada item e por qual valor?

Use os dados para analisar:

- fornecedores vencedores;
- preços homologados;
- descontos;
- órgãos compradores;
- recorrência;
- concentração de valor;
- economia entre estimado e homologado;
- itens desertos ou fracassados.

***

### Para quem é

#### Empresas que vendem para o governo

Pesquise concorrentes, preços vencedores, órgãos compradores, descontos praticados e fornecedores recorrentes.

#### Equipes B2G e inteligência comercial

Envie os resultados para CRM, planilhas, bancos de dados, dashboards, alertas e pipelines internos.

#### Consultorias de licitação

Analise o que aconteceu depois da publicação: vencedor, valores homologados, porte, situação do item e desconto.

#### Pesquisa e auditoria

Use as métricas como base estruturada para análise. O Actor **não conclui sozinho** que uma contratação é irregular.

#### Automação e dados

Integre com n8n, Make, Google Sheets, Slack, webhooks, APIs, bancos de dados, BI, aplicações internas e agentes de IA downstream.

***

### Diferença para o Actor de Licitações PNCP

Este Actor é complementar ao **Licitações PNCP Brasil — Editais e Contratos**.

```text
oportunidade publicada
        ↓
Licitações PNCP Brasil

resultado homologado
        ↓
PNCP Vencedores & Inteligência de Fornecedores
```

Use o primeiro para descobrir oportunidades.

Use este para estudar **quem venceu e por quanto**.

***

### Importante: resultados aparecem depois da publicação

Uma contratação recente pode ainda não possuir resultado homologado.

Quando a contratação existe, mas nenhum item possui resultado detalhado:

```text
enrichmentEmpty: true
```

O registro é mantido no dataset para mostrar que foi processado.

Ele **não é cobrado como `enriched-contratacao`**.

***

### Cobertura observada no desenvolvimento

A documentação técnica original registrou esta amostra de desenvolvimento:

| Idade da janela de publicação | Contratações com ≥1 resultado |
|---|---:|
| 3 dias | ~5% |
| 12 dias | 0% |
| 62 dias | ~40% |
| 123 dias | ~65% |

Também foi observada latência aproximada de:

```text
10–50 dias
```

entre publicação e resultado em parte da amostra, com mediana próxima de:

```text
36 dias
```

Esses números são **amostras**, não promessa de cobertura futura.

Por isso o input padrão usa uma janela mais madura:

```json
{
  "idadeJanelaDias": 120,
  "janelaDias": 1
}
```

**Custo × retorno da janela:** uma execução varre a janela inteira mesmo quando quase
nada tem resultado — o custo de computação é o mesmo, mas a entrega (e a cobrança) só
acontece nas contratações **com** resultado. Em janela magra (recém-publicada, ~0–5% de
cobertura), a execução tende a custar mais do que rende em inteligência. Recomendação
honesta: use janelas maduras (`idadeJanelaDias` ≥ 60–120) e deixe as janelas recentes
para o Actor de Licitações PNCP, que acompanha a publicação dos editais.

***

### Como funciona

Para cada modalidade selecionada, o Actor:

1. resolve a janela de publicação;
2. consulta contratações do PNCP;
3. aplica os filtros enviados à API;
4. aplica palavras-chave antes do enriquecimento;
5. busca os itens da contratação;
6. identifica itens marcados com resultado;
7. consulta os resultados desses itens;
8. normaliza vencedores e valores;
9. consolida a contratação;
10. cobra somente se houver pelo menos um resultado detalhado;
11. calcula agregações gratuitas quando ativadas;
12. escreve `RUN_SUMMARY`;
13. mantém diagnóstico em `STATS`.

***

### Fonte dos dados

O Actor usa endpoints públicos do PNCP para:

- consulta de contratações;
- itens da compra;
- resultados por item.

As requisições são HTTP diretas.

Não há automação de navegador.

***

### Input

#### Exemplo recomendado

```json
{
  "idadeJanelaDias": 120,
  "janelaDias": 1,
  "modalidades": [6],
  "uf": "SP",
  "palavrasChave": [
    "software",
    "tecnologia"
  ],
  "maxResults": 100,
  "maxResultadosPorContratacao": 20,
  "agregacoes": true,
  "maxRuntimeMs": 300000
}
```

#### Campos

| Campo | Default | Descrição |
|---|---:|---|
| `idadeJanelaDias` | `120` | Quantos dias atrás começa a janela. |
| `janelaDias` | `1` | Duração da janela, de 1 a 3 dias. |
| `dataInicial` | vazio | Data explícita `AAAA-MM-DD`. |
| `dataFinal` | vazio | Data final explícita; use junto com `dataInicial`. |
| `modalidades` | `[6,8]` | Códigos de modalidade PNCP. |
| `uf` | vazio | Sigla da UF. |
| `codigoMunicipioIbge` | vazio | Código IBGE de 7 dígitos. |
| `orgaoCnpj` | vazio | CNPJ de 14 dígitos do órgão. |
| `palavrasChave` | `[]` | Termos buscados no objeto. |
| `maxResults` | `100` | Máximo de resultados cobrados. |
| `maxResultadosPorContratacao` | `20` | Máximo de itens com resultado detalhado por contratação. |
| `agregacoes` | `true` | Gera inteligência agregada gratuita. |
| `maxRuntimeMs` | `300000` | Teto de runtime. |
| `debug` | `false` | Logs adicionais. |

***

### Janela relativa

Exemplo:

```json
{
  "idadeJanelaDias": 120,
  "janelaDias": 1
}
```

Isso consulta uma janela de um dia publicada aproximadamente 120 dias atrás.

***

### Janela explícita

Exemplo:

```json
{
  "dataInicial": "2026-04-19",
  "dataFinal": "2026-04-20"
}
```

As duas datas devem ser informadas juntas.

O intervalo máximo é:

```text
3 dias
```

***

### Modalidades

Exemplos usados pelo Actor:

```text
6 = Pregão Eletrônico
8 = Dispensa
```

```json
{
  "modalidades": [6, 8]
}
```

***

### Filtros

#### UF

```json
{
  "uf": "MG"
}
```

#### Município

```json
{
  "codigoMunicipioIbge": "3106200"
}
```

#### Órgão comprador

```json
{
  "orgaoCnpj": "00394460000141"
}
```

#### Palavras-chave

```json
{
  "palavrasChave": [
    "software",
    "automação",
    "sistema"
  ]
}
```

A comparação ignora caixa e acentuação.

O filtro de palavras-chave roda **antes** das requisições de itens e resultados.

***

### Output

O dataset contém principalmente:

```text
CONTRATACAO_ENRIQUECIDA
RUN_SUMMARY
```

***

### `CONTRATACAO_ENRIQUECIDA`

É o registro principal.

Pode conter:

- header da contratação;
- itens;
- resultados por item;
- vencedores consolidados;
- valores homologados;
- economia comparável;
- flags de truncamento;
- informação de cobrança.

#### Quando é cobrado

Se existir pelo menos um resultado detalhado:

```text
enrichmentEmpty: false
```

o registro pode gerar:

```text
enriched-contratacao
```

Se não houver resultado:

```text
enrichmentEmpty: true
```

o registro é gratuito.

***

### Exemplo de output

```json
{
  "recordType": "CONTRATACAO_ENRIQUECIDA",
  "entityId": "pncp:compra/06116743000108/2026/19",
  "numeroControlePNCP": "06116743000108-1-000019/2026",
  "dataPublicacaoPncp": "2026-04-19T12:37:13",
  "orgaoCnpj": "06116743000108",
  "orgaoRazaoSocial": "MUNICIPIO DE BREJO",
  "uf": "MA",
  "municipio": "Brejo",
  "modalidadeNome": "Pregão - Eletrônico",
  "valorTotalEstimado": 1394550,
  "nItens": 2,
  "nItensComResultado": 2,
  "valorTotalHomologadoItens": 1200000,
  "economiaEstimadoHomologado": 194550,
  "vencedores": [
    {
      "niFornecedor": "18849540000100",
      "nomeRazaoSocialFornecedor": "RAIMUNDO NONATO DA SILVA FERNANDES",
      "porteFornecedorNome": "ME",
      "itensVencidos": 2,
      "valorTotalHomologado": 1200000
    }
  ],
  "enrichmentEmpty": false
}
```

***

### Campos principais

| Campo | Descrição |
|---|---|
| `recordType` | Tipo do registro. |
| `entityId` | Identidade determinística. |
| `numeroControlePNCP` | Identificador oficial. |
| `orgaoCnpj` | CNPJ do órgão. |
| `orgaoRazaoSocial` | Razão social do órgão. |
| `uf` | UF. |
| `municipio` | Município. |
| `objeto` | Objeto da contratação. |
| `modalidadeNome` | Modalidade. |
| `valorTotalEstimado` | Valor estimado quando disponível. |
| `nItens` | Itens carregados. |
| `nItensComResultado` | Itens com resultado detalhado. |
| `valorTotalHomologadoItens` | Soma dos resultados detalhados. |
| `economiaEstimadoHomologado` | Diferença comparável entre estimado e homologado. |
| `itensComparaveis` | Quantidade de itens comparáveis. |
| `vencedores` | Vencedores consolidados. |
| `itens` | Itens e resultados detalhados. |
| `itensTruncados` | Indica corte na coleta de itens. |
| `resultadosTruncados` | Indica corte no detalhamento de resultados. |
| `enrichmentEmpty` | `true` quando nenhum resultado detalhado foi localizado. |
| `observedAt` | Momento da observação. |

***

### Resultados por item

Em:

```text
itens[].resultados[]
```

podem aparecer:

```text
niFornecedor
nomeRazaoSocialFornecedor
tipoPessoa
porteFornecedorNome
naturezaJuridicaNome
quantidadeHomologada
valorUnitarioHomologado
valorTotalHomologado
percentualDesconto
dataResultado
dataCancelamento
situacaoResultadoNome
ordemClassificacaoSrp
```

Campos ausentes retornam `null`.

***

### Inteligência agregada gratuita

Com:

```json
{
  "agregacoes": true
}
```

o `RUN_SUMMARY` pode incluir:

#### Top fornecedores

Ranking por valor homologado, com itens vencidos e número de contratações.

#### Concentração

```text
valorHomologadoTotal
top1Pct
top3Pct
top5Pct
```

#### Recorrência órgão-fornecedor

Pares órgão + fornecedor repetidos em duas ou mais contratações da amostra.

#### Economia

```text
valorEstimadoComparavel
valorHomologadoComparavel
economiaAbsoluta
economiaPct
itensComparaveis
```

#### Distribuição de porte

Agrupamento por porte quando a fonte informa o campo.

#### Desertos e fracassados

```text
itensTotal
itensHomologados
itensDesertos
itensFracassados
taxaDesertoPct
```

***

### `RUN_SUMMARY`

É gratuito e pode informar:

- billable records;
- registros vazios gratuitos;
- cobertura de resultado;
- candidatas encontradas;
- contratações descartadas;
- contratações concluídas;
- falhas;
- requests por endpoint;
- requests por contratação;
- HTTP 429;
- truncamentos;
- alertas de qualidade;
- agregações;
- métricas operacionais.

***

### STATS

O Key-Value Store padrão recebe:

```text
STATS
```

com diagnóstico operacional como:

- requests;
- retries;
- HTTP 429;
- HTTP 5xx;
- cobrança;
- registros gratuitos;
- warnings;
- qualidade;
- runtime;
- limites.

***

### Agendamento na Apify

Use **Tasks + Schedules**.

Exemplo diário:

```json
{
  "idadeJanelaDias": 120,
  "janelaDias": 1,
  "modalidades": [6],
  "agregacoes": true
}
```

A janela relativa avança automaticamente com o calendário.

***

### Exemplo de fluxo B2G

1. Consulte uma janela madura.
2. Filtre por UF, órgão ou palavras-chave.
3. Receba vencedores e valores homologados.
4. Envie o dataset para CRM, Sheets ou banco de dados.
5. Use as agregações para comparar concorrentes.
6. Se quiser, cruze os CNPJs vencedores com outro Actor independente de dados cadastrais.

***

### API da Apify

```bash
curl -s "https://api.apify.com/v2/acts/<SEU_USUARIO>~pncp-award-vendor-intelligence/run-sync-get-dataset-items?token=<SEU_TOKEN>" \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "idadeJanelaDias":120,
    "janelaDias":1,
    "modalidades":[6],
    "uf":"SP",
    "maxResults":100
  }'
```

***

### Integrações

Use com:

- Apify API;
- Tasks;
- Schedules;
- webhooks;
- n8n;
- Make;
- Google Sheets;
- Slack;
- bancos de dados;
- dashboards;
- aplicações internas;
- IA downstream.

***

### Cobrança

Modelo **Pay Per Event**.

O código usa:

```text
actor-start
enriched-contratacao
```

#### `actor-start`

Uma vez depois da validação do input.

Input inválido é rejeitado antes dessa cobrança.

#### `enriched-contratacao`

Uma vez por contratação entregue com pelo menos um resultado detalhado.

***

### O que é gratuito

Não gera `enriched-contratacao`:

- `enrichmentEmpty: true`;
- contratação descartada por palavra-chave;
- `RUN_SUMMARY`;
- agregações;
- resultados não entregues por limite.

A aba **Pricing** é sempre a fonte autoritativa dos preços atuais.

***

### Controle de custo

Principais controles:

```text
maxResults
maxResultadosPorContratacao
maxRuntimeMs
```

Filtros que também reduzem escopo:

```text
uf
codigoMunicipioIbge
orgaoCnpj
palavrasChave
modalidades
```

***

### Health checks

O Actor monitora:

- completude de campos core;
- volume por modalidade;
- mudanças de shape;
- falhas HTTP;
- retries;
- rate limiting;
- disponibilidade da fonte.

Quando necessário, o resumo pode marcar:

```text
qualityAlert
```

***

### Limites honestos

#### Resultado não existe imediatamente

Contratações recentes podem não ter vencedor homologado.

#### Não traz todas as propostas perdedoras

O Actor trabalha com os resultados públicos expostos pelos endpoints usados pela implementação.

#### Máximo de 200 itens por contratação

A coleta de itens pagina até quatro páginas de 50.

Quando necessário:

```text
itensTruncados: true
```

#### Limite de resultados detalhados

`maxResultadosPorContratacao` pode chegar a 50.

Quando existem mais itens com resultado:

```text
resultadosTruncados: true
```

#### Janela máxima de 3 dias

A validação limita a janela a 3 dias.

#### A consulta possui teto de páginas

Se a listagem exceder o teto interno, o resumo marca truncamento.

#### A fonte pode sofrer lentidão e rate limit

Há timeout, retry, backoff, pacing e tratamento de HTTP 429, mas a disponibilidade final depende do PNCP.

#### Não há análise jurídica automática

O Actor não declara fraude, superfaturamento, favorecimento ou ilegalidade.

#### Não há LLM em runtime

Os dados vêm da fonte pública e as métricas são determinísticas.

***

### Perguntas frequentes

#### Preciso de login?

Não.

#### Preciso de chave da API do PNCP?

Não para os endpoints públicos utilizados.

#### Usa navegador?

Não.

#### Mostra quem venceu?

Sim, quando o resultado por item está disponível.

#### Retorna CNPJ do vencedor?

`niFornecedor` traz a identificação pública quando disponível.

#### Retorna razão social?

Sim, quando a fonte fornece `nomeRazaoSocialFornecedor`.

#### Mostra valor homologado?

Sim.

#### Calcula economia?

Sim, mas somente para itens em que existem valores comparáveis dos dois lados.

#### Por que recebi `enrichmentEmpty: true`?

Porque a contratação foi encontrada, mas nenhum resultado detalhado foi localizado naquele momento.

Esse registro não gera `enriched-contratacao`.

#### Posso filtrar por estado?

Sim.

```json
{
  "uf": "RS"
}
```

#### Posso filtrar por órgão?

Sim, com `orgaoCnpj`.

#### Posso filtrar por palavras-chave?

Sim.

#### Posso agendar?

Sim.

#### As agregações são cobradas?

Não.

#### O que significa recorrência órgão-fornecedor?

Repetição do mesmo par órgão + fornecedor em duas ou mais contratações processadas na execução.

#### A economia prova irregularidade?

Não.

É uma métrica matemática. Interpretação jurídica ou econômica exige contexto.

#### Pelo que eu pago?

Pelo evento `enriched-contratacao`, quando existe resultado detalhado, além do evento de início configurado na aba Pricing.

#### Contratação sem vencedor é cobrada?

Não como `enriched-contratacao`.

#### O resumo é cobrado?

Não.

#### Este Actor é oficial?

Não.

É uma ferramenta comunitária independente que usa dados públicos do PNCP.

***

### Suporte

Dúvidas, bugs ou solicitação de campos:

```text
johnatan291303@gmail.com
```

Use também a seção **Issues** da página do Actor.

***

### Parte da suíte JM Forge

Também do mesmo desenvolvedor:

- [Licitações PNCP Brasil — Editais e Contratos](https://apify.com/johnatan029/pncp-licitacoes-brasil) — oportunidades, pregões, dispensas e contratos públicos.
- [Consulta CNPJ Brasil e Empresas por CNAE](https://apify.com/johnatan029/cnpj-empresas-brasil-scraper) — dados cadastrais e pesquisa de empresas brasileiras.

Os Actors permanecem ferramentas independentes.

Use cada ferramenta para o problema específico que ela resolve.

# Actor input Schema

## `idadeJanelaDias` (type: `integer`):

Quantos dias atrás começa a janela de publicação consultada. Resultados de licitação levam semanas para aparecer no PNCP (mediana medida: ~36 dias): janelas de 60–180 dias têm 40–65% de cobertura; janelas frescas têm quase nenhuma. Ignorado se dataInicial/dataFinal forem informadas.

## `janelaDias` (type: `integer`):

Quantos dias de publicação a janela cobre (1 a 3 — janelas maiores derrubam a API do PNCP, limite herdado do coletor publicado).

## `dataInicial` (type: `string`):

Data explícita no formato AAAA-MM-DD. Se informada junto com dataFinal, substitui a janela relativa. Intervalo máximo: 3 dias.

## `dataFinal` (type: `string`):

Data explícita no formato AAAA-MM-DD, usada com dataInicial. Intervalo máximo: 3 dias.

## `modalidades` (type: `array`):

Códigos de modalidade do PNCP (6 = Pregão Eletrônico, 8 = Dispensa de Licitação, etc.). A cobertura de resultado do recon foi medida na modalidade 6.

## `uf` (type: `string`):

Sigla da UF para filtrar na própria API (ex.: MG). Vazio = Brasil inteiro.

## `codigoMunicipioIbge` (type: `string`):

Código IBGE do município (7 dígitos) para filtrar na própria API.

## `orgaoCnpj` (type: `string`):

CNPJ do órgão comprador (14 dígitos) para filtrar na própria API.

## `palavrasChave` (type: `array`):

Filtra pelo objeto da contratação (sem diferenciar maiúsculas/acentos). Contratações descartadas pelo filtro não geram requisições de itens nem cobrança.

## `maxResults` (type: `integer`):

Teto de contratações enriquecidas (cobradas) por run. A run para graciosamente e mantém o que já entregou.

## `maxResultadosPorContratacao` (type: `integer`):

Teto de requisições de resultado por contratação. Itens além do teto ficam sem detalhe de vencedor e o registro declara resultadosTruncados.

## `agregacoes` (type: `boolean`):

Top fornecedores, concentração do valor, recorrência órgão↔fornecedor, economia estimado×homologado, distribuição de porte e taxa de deserto — grátis, no RUN\_SUMMARY.

## `maxRuntimeMs` (type: `integer`):

Teto de duração. A run para graciosamente ao atingir.

## `debug` (type: `boolean`):

Loga decisões por contratação e esperas de pacing.

## Actor input object example

```json
{
  "idadeJanelaDias": 120,
  "janelaDias": 1,
  "dataInicial": "",
  "dataFinal": "",
  "modalidades": [
    6
  ],
  "uf": "",
  "codigoMunicipioIbge": "",
  "orgaoCnpj": "",
  "palavrasChave": [],
  "maxResults": 50,
  "maxResultadosPorContratacao": 20,
  "agregacoes": true,
  "maxRuntimeMs": 300000,
  "debug": false
}
```

# Actor output Schema

## `resultados` (type: `string`):

Dataset padrão com CONTRATACAO\_ENRIQUECIDA e RUN\_SUMMARY.

## `estatisticas` (type: `string`):

Registro STATS com cobrança, requests, retries, qualidade, limites e métricas operacionais.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "idadeJanelaDias": 120,
    "janelaDias": 1,
    "dataInicial": "",
    "dataFinal": "",
    "modalidades": [
        6
    ],
    "uf": "",
    "codigoMunicipioIbge": "",
    "orgaoCnpj": "",
    "palavrasChave": [],
    "maxResults": 50,
    "maxResultadosPorContratacao": 20,
    "agregacoes": true,
    "maxRuntimeMs": 300000,
    "debug": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("johnatan029/pncp-award-vendor-intelligence").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "idadeJanelaDias": 120,
    "janelaDias": 1,
    "dataInicial": "",
    "dataFinal": "",
    "modalidades": [6],
    "uf": "",
    "codigoMunicipioIbge": "",
    "orgaoCnpj": "",
    "palavrasChave": [],
    "maxResults": 50,
    "maxResultadosPorContratacao": 20,
    "agregacoes": True,
    "maxRuntimeMs": 300000,
    "debug": False,
}

# Run the Actor and wait for it to finish
run = client.actor("johnatan029/pncp-award-vendor-intelligence").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "idadeJanelaDias": 120,
  "janelaDias": 1,
  "dataInicial": "",
  "dataFinal": "",
  "modalidades": [
    6
  ],
  "uf": "",
  "codigoMunicipioIbge": "",
  "orgaoCnpj": "",
  "palavrasChave": [],
  "maxResults": 50,
  "maxResultadosPorContratacao": 20,
  "agregacoes": true,
  "maxRuntimeMs": 300000,
  "debug": false
}' |
apify call johnatan029/pncp-award-vendor-intelligence --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,johnatan029/pncp-award-vendor-intelligence"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/VbDcN2Av9EY5mbOZc/builds/QSLfxjL1FSzJHrGBM/openapi.json
