# Brazil Government Contracts Scraper Check - CNPJ (Tax ID) (`brasildados/government-contracts-check`) Actor

Check if Brazilian companies have federal government contracts scraper. Input CNPJs (Tax ID), get contract details: values, agencies, dates, and status. Over 740,000 contracts updated in real time. No API key required. Built for compliance, KYC, and due diligence.

- **URL**: https://apify.com/brasildados/government-contracts-check.md
- **Developed by:** [BrasilDados.org](https://apify.com/brasildados) (community)
- **Categories:** Other, Lead generation, Automation
- **Stats:** 7 total users, 0 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 per contract founds

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

#### 🏛️ What is Government Contracts Check?

**Government Contracts Check** finds **active and historical federal procurement contracts** for Brazilian companies by CNPJ or CPF. Paste up to **1,000 documents** per run, export to **JSON, CSV, Excel or XML**, or call the **REST API** in real time.

> **One document in = one result out.** Get company identity, aggregated stats (totals, active contracts, sum of values) and the full contract list with agency hierarchy, vigency dates and amounts. Invalid check digits are flagged locally.

##### What data can Government Contracts Check extract?

| | |
|---|---|
| 🏢 **Company** | `razaoSocial`, `nomeFantasia`, `classificacao` |
| 📊 **Statistics** | `quantidade`, `quantidadeAtivos`, `somaValorAssinatura`, `somaValorAtualizado` |
| 📄 **Contract** | `codigoContrato`, `descricao`, `modalidade`, `situacao`, `processo` |
| 📅 **Dates** | `assinaturaEm`, `publicacaoEm`, `vigenciaInicio`, `vigenciaFim`, `ativo` |
| 💰 **Values** | `valorAssinatura`, `valorAtualizado` (BRL floats) |
| 🏛️ **Agency** | `ministerio`, `entidade`, `unidade`, `poder`, CNPJ and codes |
| 🔑 **Reference** | Opaque `referencia` (`bd-...`) per contract for safe storage |
| 🕐 **Metadata** | `consultadoEm`, `truncado`, `paginasConsultadas` |

##### What can this Actor do?

- 📋 **Bulk screening:** up to 1,000 CNPJs/CPFs per run
- ✅ **Local validation:** invalid documents flagged before lookup
- 📤 **Multiple exports:** JSON, CSV, Excel, XML from Apify Dataset
- ⚡ **Standby REST API:** `POST /check` for real-time integration
- 📏 **Payload control:** `maxContratosPorCnpj` (1-500, default 50)
- 🔗 **Pipeline-ready:** pair with Sanctions, KYC, Enrichment and Tenders actors

**Apify platform bonus:** schedule recurring supplier checks, monitor runs, webhooks, API access and MCP integration.

***

### Why check Brazilian government contracts by CNPJ?

- **Supplier vetting:** confirm federal contract history before onboarding vendors
- **KYC/KYB compliance:** verify public revenue exposure and contracting agencies
- **Due diligence:** assess concentration of government revenue before partnerships
- **Market intelligence:** identify active vendors to the Brazilian federal government
- **Audit trails:** stable references and timestamps per query

Official public data under **Lei 12.527/2011** and aligned with **Lei 14.133/2021** (PNCP). Federal Government Procurement Portal. No API key required.

***

### How do I check government contracts in bulk?

1. Open the actor on [Apify Console](https://console.apify.com/) and go to the **Input** tab.
2. Paste CNPJs or CPFs in the **`cnpjs` string list** (any format).
3. Optional: set **`maxContratosPorCnpj`** (default 50) to control payload size.
4. Click **Start**, then export Dataset as **XLSX**, CSV or JSON.

**Example input:**

```json
{
  "cnpjs": ["33.000.167/0001-01", "02.341.470/0001-44"],
  "maxContratosPorCnpj": 50
}
```

> **Tip:** use `maxContratosPorCnpj: 5` for quick screening; raise to 500 for large suppliers with many contracts.

***

#### ⬇️ Input

Click the **Input** tab for the full schema.

| Field | Required | Default | Description |
|---|---|---|---|
| `cnpjs` | ✅ Yes | - | CNPJs or CPFs (string list). Max 1,000. Any format. |
| `maxContratosPorCnpj` | No | `50` | Cap on contracts returned per document (1-500). |

***

#### ⬆️ Output

Download from **Dataset** tab. One record per document queried.

> **Abbreviated sample.** Full output includes all `vinculos[]` fields and nested `contratante` hierarchy. See **Dataset schema** for the complete list.

**Also returned (not shown in sample):** all contracts up to `maxContratosPorCnpj`, full agency codes, `truncado` flag when pagination limit is hit.

```json
{
  "documento": "02341470000144",
  "documentoFormatado": "02.341.470/0001-44",
  "documentoValido": true,
  "encontrado": true,
  "empresa": {
    "razaoSocial": "RORAIMA ENERGIA S.A",
    "nomeFantasia": "RORAIMA ENERGIA S.A",
    "classificacao": "Entidades Empresariais Privadas"
  },
  "estatisticas": {
    "quantidade": 15,
    "quantidadeAtivos": 4,
    "somaValorAssinatura": 1234567.89,
    "somaValorAtualizado": 2987654.32,
    "dataMaisAntiga": "2008-12-31",
    "dataMaisRecente": "2020-12-14"
  },
  "vinculos": [
    {
      "referencia": "bd-7c1f9e3a2b5d",
      "codigoContrato": "001422020",
      "descricao": "PRESTACAO E UTILIZACAO DO SERVICO PUBLICO DE ENERGIA ELETRICA...",
      "ativo": false,
      "valorAssinatura": 38113.08,
      "valorAtualizado": 38113.08,
      "contratante": {
        "ministerio": "Ministerio das Comunicacoes",
        "entidade": "Agencia Nacional de Telecomunicacoes",
        "entidadeSigla": "ANATEL"
      }
    }
  ],
  "truncado": false,
  "consultadoEm": "2026-05-23T22:10:00.000Z"
}
```

**Complete field list:** **Dataset schema** tab on Apify Console.

***

### How much does government contract screening cost?

**$0.002 per document processed** (CNPJ or CPF). Charged per document queried, with or without contracts found.

| Volume | Cost |
|---|---|
| 10 documents | $0.02 |
| 100 documents | $0.20 |
| 1,000 documents | $2.00 |

Use `maxContratosPorCnpj` to control payload size, not billing (current pricing is per document).

***

#### 🔌 API integration

**Batch run:**

```bash
curl -X POST "https://api.apify.com/v2/acts/brasildados~government-contracts-check/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"cnpjs":["33.000.167/0001-01","02.341.470/0001-44"],"maxContratosPorCnpj":50}'
```

**Standby (`POST /check`):**

```bash
curl -X POST "https://brasildados--government-contracts-check.apify.actor/check" \
  -H "Authorization: Bearer YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  --compressed \
  -d '{"cnpjs":["33.000.167/0001-01"],"maxContratosPorCnpj":50}'
```

***

### Related Actors

| Actor | When to use |
|---|---|
| [CNPJ Enrichment](https://apify.com/brasildados/brazil-enrich-data-lead-by-cnpj?fpr=t5lwzq) | Company profile, QSA and address for identified suppliers |
| [Public Tenders](https://apify.com/brasildados/editais-licitacoes-brasil?fpr=t5lwzq) | Find open tenders and bidding opportunities |
| [Sanctions Check](https://apify.com/brasildados/sanctions-check?fpr=t5lwzq) | CEIS/CNEP screening (sanctioned vendors cannot contract) |
| [CNPJ KYC & PEP Checker](https://apify.com/brasildados/cnpj-kyc-compliance-pep-checker?fpr=t5lwzq) | Full PEP, sanctions and electoral donations |
| [DOU Monitor](https://apify.com/brasildados/dou-monitor?fpr=t5lwzq) | Track contract publications in the Official Gazette |

**Suggested pipeline:** Enrichment → **Contracts (this)** → Sanctions → KYC

***

### FAQ

#### Can I query CPFs as well as CNPJs?

Yes. Send CPFs in the same `cnpjs` list. Any format accepted.

#### What if a company has hundreds of contracts?

Set `maxContratosPorCnpj` up to 500. Check `truncado: true` if more contracts exist beyond the limit.

#### Are only active contracts returned?

No. Both active and historical contracts are returned. Use `estatisticas.quantidadeAtivos` or filter `vinculos[].ativo`.

#### How recent is the data?

Continuously updated from official federal procurement databases. Typical lag varies by agency.

#### Is it legal to use this data?

Yes. Public procurement data under Lei 12.527/2011 and Lei 14.133/2021.

***

### 🇧🇷 Versão em português (Brasil)

#### 🏛️ O que é a Consulta de Contratos Federais?

**Consulta de Contratos Federais** busca **contratos ativos e históricos** de empresas brasileiras por CNPJ ou CPF na administração pública federal. Cole até **1.000 documentos** por execução, exporte em **JSON, CSV, Excel ou XML**, ou integre via **API REST** em tempo real.

> **1 documento na entrada = 1 resultado na saída.** Identificação da empresa, estatísticas agregadas (totais, contratos ativos, soma de valores) e lista completa de contratos com hierarquia de órgãos, datas de vigência e valores. Dígitos inválidos são sinalizados localmente.

##### Quais dados a consulta de contratos federais retorna?

| | |
|---|---|
| 🏢 **Empresa** | `razaoSocial`, `nomeFantasia`, `classificacao` |
| 📊 **Estatísticas** | `quantidade`, `quantidadeAtivos`, `somaValorAssinatura`, `somaValorAtualizado` |
| 📄 **Contrato** | `codigoContrato`, `descricao`, `modalidade`, `situacao`, `processo` |
| 📅 **Datas** | `assinaturaEm`, `publicacaoEm`, `vigenciaInicio`, `vigenciaFim`, `ativo` |
| 💰 **Valores** | `valorAssinatura`, `valorAtualizado` (floats em BRL) |
| 🏛️ **Órgão** | `ministerio`, `entidade`, `unidade`, `poder`, CNPJ e códigos |
| 🔑 **Referência** | `referencia` opaca (`bd-...`) por contrato |
| 🕐 **Metadados** | `consultadoEm`, `truncado`, `paginasConsultadas` |

##### O que este Actor faz?

- 📋 **Triagem em lote:** até 1.000 CNPJs/CPFs por execução
- ✅ **Validação local:** documentos inválidos sinalizados antes da consulta
- 📤 **Exportação múltipla:** JSON, CSV, Excel, XML no Dataset Apify
- ⚡ **API REST Standby:** `POST /check` para integração em tempo real
- 📏 **Controle de payload:** `maxContratosPorCnpj` (1-500, padrão 50)
- 🔗 **Pipeline:** combine com Sanctions, KYC, Enriquecimento e Editais

**Bônus Apify:** agende verificações recorrentes, monitore execuções, webhooks, API e integração MCP.

***

### Por que consultar contratos do governo federal por CNPJ?

- **Homologação de fornecedores:** confirme histórico de contratos federais antes de cadastrar
- **Compliance KYC/KYB:** verifique exposição a receita pública e órgãos contratantes
- **Due diligence:** avalie concentração de receita governamental antes de parcerias
- **Inteligência de mercado:** identifique fornecedores ativos do governo federal brasileiro
- **Trilha de auditoria:** referências estáveis e timestamps por consulta

Dados públicos oficiais sob **Lei 12.527/2011**, alinhados à **Lei 14.133/2021** (PNCP). Portal de Compras do Governo Federal. Sem chave de API.

***

### Como consultar contratos federais por CNPJ em lote?

1. Abra o actor no [Console Apify](https://console.apify.com/) e vá na aba **Input**.
2. Cole CNPJs ou CPFs na **lista de strings `cnpjs`** (qualquer formato).
3. Opcional: defina **`maxContratosPorCnpj`** (padrão 50) para controlar o tamanho da resposta.
4. Clique em **Start** e exporte o Dataset em **XLSX**, CSV ou JSON.

> **Dica:** use `maxContratosPorCnpj: 5` para triagem rápida; aumente até 500 para grandes fornecedores.

***

#### ⬇️ Entrada

Clique na aba **Input** para o schema completo.

| Campo | Obrigatório | Padrão | Descrição |
|---|---|---|---|
| `cnpjs` | ✅ Sim | - | CNPJs ou CPFs (lista). Máx. 1.000. Qualquer formato. |
| `maxContratosPorCnpj` | Não | `50` | Limite de contratos por documento (1-500). |

***

#### ⬆️ Saída

Baixe na aba **Dataset**. Um registro por documento consultado.

> **Amostra resumida.** A saída completa inclui todos os campos de `vinculos[]` e hierarquia `contratante`. Veja **Dataset schema** para a lista completa.

***

### Quanto custa consultar contratos federais por CNPJ?

**$0,002 por documento processado** (CNPJ ou CPF). Cobrado por documento consultado, com ou sem contratos encontrados.

| Volume | Custo |
|---|---|
| 10 documentos | $0,02 |
| 100 documentos | $0,20 |
| 1.000 documentos | $2,00 |

Use `maxContratosPorCnpj` para controlar o tamanho da resposta, não a cobrança (preço atual é por documento).

***

#### 🔌 Integração via API

Mesmos endpoints da seção em inglês acima. Substitua `YOUR_TOKEN` / `YOUR_APIFY_TOKEN` pelo seu token Apify.

***

### Actors relacionados

| Actor | Quando usar |
|---|---|
| [Enriquecimento CNPJ](https://apify.com/brasildados/brazil-enrich-data-lead-by-cnpj?fpr=t5lwzq) | Perfil, QSA e endereço de fornecedores identificados |
| [Editais e Licitações](https://apify.com/brasildados/editais-licitacoes-brasil?fpr=t5lwzq) | Encontrar licitações abertas e oportunidades |
| [Sanctions Check](https://apify.com/brasildados/sanctions-check?fpr=t5lwzq) | Triagem CEIS/CNEP (fornecedores sancionados não podem contratar) |
| [KYC & PEP Checker](https://apify.com/brasildados/cnpj-kyc-compliance-pep-checker?fpr=t5lwzq) | PEP, sanções e doações eleitorais |
| [Monitor DOU](https://apify.com/brasildados/dou-monitor?fpr=t5lwzq) | Acompanhar publicações no Diário Oficial |

**Pipeline sugerido:** Enriquecimento → **Contratos (este)** → Sanctions → KYC

***

### Perguntas frequentes

#### Posso consultar CPF além de CNPJ?

Sim. Envie CPFs na mesma lista `cnpjs`. Qualquer formato aceito.

#### E se a empresa tiver centenas de contratos?

Defina `maxContratosPorCnpj` até 500. Verifique `truncado: true` se existirem mais contratos além do limite.

#### Retorna só contratos ativos?

Não. Retorna ativos e históricos. Use `estatisticas.quantidadeAtivos` ou filtre `vinculos[].ativo`.

#### Quão recentes são os dados?

Atualização contínua a partir de bases oficiais de compras federais. Defasagem típica varia por órgão.

#### É legal usar esses dados?

Sim. Dados públicos de licitações e contratos sob Lei 12.527/2011 e Lei 14.133/2021.

# Actor input Schema

## `cnpjs` (type: `array`):

List of CNPJs or CPFs to query. Any format (with or without mask). Max 1,000 per run. Invalid check digits are flagged locally. | Lista de CNPJs ou CPFs. Qualquer formato. Máximo 1.000 por execução. Dígitos inválidos são marcados localmente.

## `maxContratosPorCnpj` (type: `integer`):

Cap on contracts returned per document (1-500). Controls payload size for large suppliers. Default 50 covers most cases. Use 5-10 for quick screening. | Limite de contratos por documento (1-500). Controla tamanho do retorno. Padrão 50. Use 5-10 para triagem rápida.

## Actor input object example

```json
{
  "cnpjs": [
    "33.000.167/0001-01",
    "02.341.470/0001-44",
    "33.683.111/0001-07"
  ],
  "maxContratosPorCnpj": 50
}
```

# Actor output Schema

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

Dataset with one record per CNPJ, including contract status, totals, and detailed entries.

# 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 = {
    "cnpjs": [
        "33.000.167/0001-01",
        "02.341.470/0001-44",
        "33.683.111/0001-07"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("brasildados/government-contracts-check").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 = { "cnpjs": [
        "33.000.167/0001-01",
        "02.341.470/0001-44",
        "33.683.111/0001-07",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("brasildados/government-contracts-check").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 '{
  "cnpjs": [
    "33.000.167/0001-01",
    "02.341.470/0001-44",
    "33.683.111/0001-07"
  ]
}' |
apify call brasildados/government-contracts-check --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

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