# PNCP Brazil Public Procurement Data Scraper (`latinamericadata/pncp-brasil`) Actor

Pesquise contratações públicas no PNCP por palavra-chave, estado, modalidade e data. Extraia órgão, objeto, valores, prazos e links oficiais do Brasil. Exporte em JSON, CSV ou Excel e integre por API, webhooks e automações.

- **URL**: https://apify.com/latinamericadata/pncp-brasil.md
- **Developed by:** [Latin America Data](https://apify.com/latinamericadata) (community)
- **Categories:** Business, Lead generation
- **Stats:** 2 total users, 1 monthly users, 36.4% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 resultado entregues

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#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

O **PNCP Scraper** transforma dados públicos de [Portal Nacional de Contratações Públicas](https://www.gov.br/pncp/pt-br) em registros estruturados e prontos para análise. Centralize oportunidades publicadas por órgãos de diferentes esferas e regiões. O actor organiza compras e contratações em registros comparáveis para busca comercial, estudos de gasto público e monitoramento de fornecedores.

Esta é uma ferramenta independente e não oficial da **Latin America Data**. Não é afiliada, patrocinada nem operada por Portal Nacional de Contratações Públicas.

### O que você pode extrair com PNCP Scraper

- Número de controle PNCP, compra e processo.
- Objeto, órgão, unidade, CNPJ e modalidade.
- Datas de publicação e janela para propostas.
- Valor estimado, cidade, estado e link oficial.

Os registros incluem `source_url` para conferência. Campos que não aparecem na fonte permanecem vazios; o actor não inventa valores para completar o dataset.

Se a consulta principal do PNCP ficar temporariamente indisponível, o actor usa automaticamente a base pública oficial do Compras.gov. Publicações muito recentes podem aparecer nessa base alternativa com algum atraso.

### Casos de uso para dados de Portal Nacional de Contratações Públicas

- Descobrir oportunidades de venda ao governo por setor ou palavra-chave.
- Criar alertas de contratações por UF, modalidade e data.
- Comparar órgãos compradores, valores e prazos em análises de mercado público.
- Montar bases de compras públicas para BI, pesquisa e transparência.

### Como usar o PNCP Scraper

1. Abra a aba **Input** e informe os termos, locais, filtros ou URLs necessários.
2. Para a primeira execução, use um limite pequeno se quiser validar rapidamente o formato.
3. Clique em **Start** e acompanhe a execução no Console da Apify.
4. Abra o dataset para revisar e exportar os resultados.

#### Principais campos de entrada

| Campo | Nome no formulário | Finalidade | Padrão |
| --- | --- | --- | --- |
| `keyword` | Palavra-chave | Filtro opcional no objeto da contratacao. | ``|
| `state` | UF | UF opcional, como SP ou PR. |`` |
| `modalityCode` | Modalidade PNCP | Codigo oficial da modalidade; 6 e pregao eletronico no endpoint PNCP. | `6` |
| `startDate` | Data inicial | Opcional, formato AAAA-MM-DD. | opcional |
| `endDate` | Data final | Opcional, formato AAAA-MM-DD. | opcional |
| `maxItems` | Maximo de resultados | Opcional. Se omitido, entrega todos os resultados encontrados no escopo da busca. | opcional |

Limites como `maxItems` e `maxPages` só restringem a coleta quando recebem um valor. Quando ficam vazios, o actor continua enquanto a fonte fornecer novos resultados dentro do escopo informado.

#### Exemplo de entrada

```json
{
  "daysBack": 30,
  "modalityCode": 6,
  "keyword": "medicamentos"
}
```

### Dados de saída do PNCP Scraper

- Identificação: `pncp_control_number`, `purchase_number` e `process_number`.
- Contratação: `object`, `modality`, `estimated_value` e `source_url`.
- Órgão: `organization_name`, `organization_cnpj` e `unit_name`.
- Prazos e local: datas de publicação e proposta, `city` e `state`.

Cada linha usa `status=success` quando contém um contratação entregue. Pesquisas válidas sem correspondência podem gerar `no_results`; indisponibilidades controladas aparecem como `blocked` ou `failed`. Essas linhas operacionais tornam a execução auditável e não são cobradas como resultado.

O dataset pode ser baixado em **JSON, CSV ou Excel**. Você também pode consultar os registros pela API da Apify sem alterar o formato definido pelo actor.

### API, integrações e automações para Portal Nacional de Contratações Públicas

Execute o actor por Python, JavaScript, cURL, MCP ou pela API da Apify. Para acompanhar Portal Nacional de Contratações Públicas continuamente, salve a entrada como tarefa e conecte agendamentos ou webhooks ao destino usado pela sua equipe.

### Quanto custa usar o PNCP Scraper?

O preço atual é **USD 0.001 por contratação entregue**; 1.000 resultados bem-sucedidos representam USD 1.00 em eventos de resultado. Linhas `no_results`, `blocked` e `failed` não são cobradas. O usuário assume o custo de uso da plataforma e pode definir limites durante os testes.

### Perguntas frequentes sobre Portal Nacional de Contratações Públicas

#### Qual é a diferença entre PNCP e Compras.gov?

O PNCP centraliza contratações de diversos entes públicos; o Compras.gov é uma plataforma de compras governamentais. Use ambos para ampliar cobertura.

#### Posso monitorar um segmento específico no PNCP?

Sim. Combine palavra-chave, UF, modalidade e período e agende a pesquisa para receber novas publicações.

### Outros scrapers de dados do Brasil

- [Compras.gov Brazil Tenders & Bids Scraper](https://apify.com/pmodinger/compras-gov-brasil)
- [Brazil CNPJ Company Lookup & Registry Data](https://apify.com/pmodinger/cnpj-empresas-brasil)

### Independência e uso responsável

Este actor independente da **Latin America Data** não é afiliado nem operado por Portal Nacional de Contratações Públicas. Use os dados com finalidade legítima, respeite a legislação e os termos aplicáveis, e valide decisões importantes nos links de origem.

# Actor input Schema

## `daysBack` (type: `integer`):

Periodo automatico quando as datas nao forem informadas.

## `startDate` (type: `string`):

Opcional, formato AAAA-MM-DD.

## `endDate` (type: `string`):

Opcional, formato AAAA-MM-DD.

## `modalityCode` (type: `integer`):

Codigo oficial da modalidade; 6 e pregao eletronico no endpoint PNCP.

## `keyword` (type: `string`):

Filtro opcional no objeto da contratacao.

## `state` (type: `string`):

UF opcional, como SP ou PR.

## `maxItems` (type: `integer`):

Opcional. Se omitido, entrega todos os resultados encontrados no escopo da busca.

## `maxPages` (type: `integer`):

Opcional. Se omitido, continua ate a fonte nao retornar novos resultados.

## `pageSize` (type: `integer`):

Tamanho da pagina PNCP.

## `failOnNoResults` (type: `boolean`):

Falha quando nenhum registro atende aos filtros.

## Actor input object example

```json
{
  "daysBack": 30,
  "modalityCode": 6,
  "keyword": "",
  "state": "",
  "pageSize": 25,
  "failOnNoResults": false
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `summary` (type: `string`):

No description

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("latinamericadata/pncp-brasil").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("latinamericadata/pncp-brasil").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{}' |
apify call latinamericadata/pncp-brasil --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=latinamericadata/pncp-brasil",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/pkkwudQeo8nyQFKzo/builds/NgXHfJYdY3zFE7BA2/openapi.json
