# Licitações Brasil (PNCP) | Editais, Atas & Contratos (`pedrocadev/licitacoes-brasil-pncp`) Actor

\[💰 $100/documento] Monitore licitações públicas do Brasil inteiro via PNCP. Busque editais abertos, atas e contratos por palavra-chave, estado e modalidade. Dados oficiais do Portal Nacional de Contratações Públicas.

- **URL**: https://apify.com/pedrocadev/licitacoes-brasil-pncp.md
- **Developed by:** [João Pedro Rodrigues](https://apify.com/pedrocadev) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $100,000.00 / 1,000 documento coletados

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

## Licitações Brasil (PNCP)

Monitore licitações públicas do Brasil inteiro em um só lugar. Este actor consulta o PNCP (Portal Nacional de Contratações Públicas), a base oficial onde todos os órgãos públicos são obrigados a publicar suas contratações pela Lei 14.133/2021. Busque editais abertos por palavra-chave, filtre por estado e modalidade, e receba os dados estruturados: órgão, objeto, prazo de propostas, valor e link direto para o edital.

**$100 por documento coletado.** Serviço premium de coleta na base oficial do PNCP, sem cobrança de compute ou tempo de execução.

### O que ele faz

- Busca **editais de licitação, atas de registro de preços e contratos** na base oficial do PNCP
- Filtra por palavra-chave no objeto: `notebook`, `merenda escolar`, `pavimentação`, o que você vende
- Limita por **estado** (uma ou várias UFs) e por **modalidade** (Pregão Eletrônico, Dispensa, Concorrência e todas as outras da Lei 14.133)
- Separa **licitações abertas** (recebendo proposta) das encerradas
- Ordena por mais recentes, mais antigas, relevância ou maior valor global
- Devolve link direto para a página do documento no PNCP, onde estão os anexos do edital

Fonte oficial do governo, sem bloqueio e sem CAPTCHA. Os dados vêm da mesma API que abastece o portal pncp.gov.br.

### Para quem serve

**Empresas que vendem para o governo.** Rode todo dia de manhã com as suas palavras-chave e UFs. Cada edital novo aparece com prazo de propostas e link. Conecte no Slack ou e-mail e sua equipe comercial recebe as oportunidades sem abrir portal nenhum.

**Consultorias de licitação.** Monitore os segmentos de vários clientes em uma run só (uma palavra-chave por cliente) e distribua os resultados.

**Análise de mercado público.** Atas e contratos mostram quem ganhou, de qual órgão e por quanto. Preço de referência real para calibrar suas propostas.

**Jornalismo de dados e transparência.** Contratações por município, órgão, modalidade e valor, direto da fonte primária.

### Como usar

1. Digite suas palavras-chave em **Palavras-chave** (uma por linha). Vazio traz tudo que bater nos filtros.
2. Escolha o **tipo de documento**: editais (padrão), atas ou contratos.
3. Em **Status**, deixe "Recebendo proposta" para ver só licitações abertas.
4. Selecione os **estados** e as **modalidades** que interessam (vazio = todos).
5. Rode. Exporte JSON, CSV ou Excel, ou conecte um webhook.

#### Exemplo: licitações abertas de notebooks no Sul

```json
{
    "searchQueries": ["notebook", "computador portátil"],
    "documentType": "edital",
    "status": "recebendo_proposta",
    "ufs": ["PR", "SC", "RS"],
    "sortBy": "recent",
    "maxResults": 200
}
```

#### Exemplo: todos os pregões eletrônicos abertos de SP

```json
{
    "searchQueries": [],
    "documentType": "edital",
    "status": "recebendo_proposta",
    "ufs": ["SP"],
    "modalidades": ["6"],
    "maxResults": 500
}
```

#### Exemplo: contratos vigentes de merenda escolar (quem ganhou e por quanto)

```json
{
    "searchQueries": ["merenda escolar"],
    "documentType": "contrato",
    "status": "vigente",
    "sortBy": "highest_value",
    "maxResults": 100
}
```

### Parâmetros

| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
| `searchQueries` | string\[] | `[]` | Palavras-chave buscadas no objeto. Vazio = tudo que bater nos filtros. |
| `documentType` | select | `edital` | `edital`, `ata` ou `contrato`. |
| `status` | select | `recebendo_proposta` | Editais: `recebendo_proposta` ou `encerradas`. Atas/contratos: `vigente` ou `nao_vigente`. `todos` vale sempre. |
| `ufs` | string\[] | (todas) | Uma ou mais UFs. |
| `modalidades` | string\[] | (todas) | Ids da Lei 14.133: 6 = Pregão Eletrônico, 8 = Dispensa, 4 = Concorrência Eletrônica etc. O formulário mostra os nomes. |
| `sortBy` | select | `recent` | `recent`, `oldest`, `relevance` ou `highest_value`. |
| `maxResults` | integer | `100` | Limite total. `0` = sem limite (teto de 50.000). |

### Saída

Um registro por documento:

```json
{
    "id": "5e95dbcfa789f4d7398e3088a23e89e6",
    "titulo": "Edital nº 42/2026",
    "descricao": "REGISTRO DE PREÇOS PARA AQUISIÇÃO DE EQUIPAMENTOS DE INFORMÁTICA...",
    "tipoDocumento": "Edital",
    "modalidadeId": "6",
    "modalidadeNome": "Pregão - Eletrônico",
    "situacao": "Divulgada no PNCP",
    "orgaoNome": "MUNICIPIO DE APARECIDA",
    "orgaoCnpj": "46680518000114",
    "unidadeNome": "GERAL",
    "municipio": "Aparecida",
    "uf": "SP",
    "esfera": "Municipal",
    "poder": "Executivo",
    "anoCompra": "2026",
    "numeroControlePncp": "46680518000114-1-000145/2026",
    "numeroSequencial": "145",
    "dataPublicacaoPncp": "2026-08-27T11:47:04",
    "dataInicioPropostas": "2026-08-28T08:00",
    "dataFimPropostas": "2026-09-15T09:00",
    "valorGlobal": 150000.0,
    "temResultado": false,
    "cancelado": false,
    "url": "https://pncp.gov.br/app/editais/46680518000114/2026/145",
    "searchQuery": "notebook",
    "scrapedAt": "2026-08-27T15:30:00+00:00"
}
```

Campos principais:

| Campo | Descrição |
|---|---|
| `titulo`, `descricao` | Identificação e objeto da contratação |
| `modalidadeNome` | Pregão Eletrônico, Dispensa, Concorrência etc. |
| `orgaoNome`, `orgaoCnpj`, `unidadeNome` | Quem está comprando |
| `municipio`, `uf`, `esfera`, `poder` | Onde e em que esfera |
| `dataInicioPropostas`, `dataFimPropostas` | Janela para enviar proposta (editais) |
| `valorGlobal` | Valor estimado ou contratado, quando publicado |
| `temResultado` | Se a licitação já tem vencedor |
| `url` | Página do documento no PNCP, com anexos do edital |

### Dicas

- Palavras mais curtas acham mais: `pavimentação` acha mais que `obra de pavimentação asfáltica`.
- Uma palavra-chave por linha. Cada uma roda como busca separada e os resultados são combinados sem duplicar.
- Para alertas diários, agende o actor no Apify Console (Schedules) e conecte webhook, Slack ou e-mail. Rode com `status: recebendo_proposta` e `sortBy: recent`.
- `dataFimPropostas` é o campo que importa para não perder prazo: filtre na sua planilha por datas futuras.
- Atas e contratos são ótimos para inteligência de preço: mostram o valor que o órgão de fato pagou.

### Preço

**$100 por documento coletado.** Cada documento que entra no dataset custa $100. Sem cobrança de compute ou tempo de execução.

| Volume | Custo |
|---|---|
| 1 documento | $100 |
| 10 documentos | $1.000 |
| 100 documentos | $10.000 |

Use o campo `maxResults` e o limite de gasto máximo por run da Apify para controlar o custo antes de rodar.

### Origem dos dados

Os dados vêm da API pública de consulta do PNCP (pncp.gov.br), mantido pelo Governo Federal. São informações públicas por força de lei. Este actor não tem vínculo com o Governo Federal; é uma ferramenta independente de consulta.

# Actor input Schema

## `searchQueries` (type: `array`):

Termos para buscar no objeto da licitação, por exemplo <code>notebook</code>, <code>merenda escolar</code>, <code>obra pavimentação</code>. Deixe vazio para trazer tudo que bater nos demais filtros.

## `documentType` (type: `string`):

Editais de licitação, atas de registro de preços ou contratos.

## `status` (type: `string`):

Para editais use 'Recebendo proposta' (licitações abertas) ou 'Encerradas'. Para atas e contratos use 'Vigente' ou 'Não vigente'. 'Todos' vale para qualquer tipo.

## `ufs` (type: `array`):

Limite a busca a um ou mais estados. Vazio busca o Brasil inteiro.

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

Limite a modalidades específicas da Lei 14.133/2021. Vazio traz todas.

## `sortBy` (type: `string`):

Ordem dos resultados, aplicada pela própria API do PNCP.

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

Limite total de documentos coletados. <code>0</code> = sem limite (teto interno de 50.000).

## `proxyConfiguration` (type: `object`):

Opcional. A API do PNCP é pública e normalmente não precisa de proxy.

## Actor input object example

```json
{
  "searchQueries": [
    "notebook"
  ],
  "documentType": "edital",
  "status": "recebendo_proposta",
  "sortBy": "recent",
  "maxResults": 100
}
```

# Actor output Schema

## `documentos` (type: `string`):

Todos os editais, atas ou contratos coletados em JSON, com órgão, modalidade, datas, valor global e link para o PNCP.

# 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 = {
    "searchQueries": [
        "notebook"
    ],
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("pedrocadev/licitacoes-brasil-pncp").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 = {
    "searchQueries": ["notebook"],
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("pedrocadev/licitacoes-brasil-pncp").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 '{
  "searchQueries": [
    "notebook"
  ],
  "maxResults": 100
}' |
apify call pedrocadev/licitacoes-brasil-pncp --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,pedrocadev/licitacoes-brasil-pncp"
        }
    }
}

```

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/M231lxKCdLuzQY8tB/builds/vxE08rrTt2bNu7F02/openapi.json
