# ComplianceBR — Brazil Sanctions Screening (CEIS, CNEP, CEPIM) (`joaosbp/cnpj-sanctions-screening-br`) Actor

Batch-screen CNPJs, CPFs and company names against official Brazilian government sanctions lists (CEIS, CNEP, CEPIM). Official Portal da Transparência data — no scraping, no proxies. Built for compliance, KYC, procurement and due diligence.

- **URL**: https://apify.com/joaosbp/cnpj-sanctions-screening-br.md
- **Developed by:** [João Victor](https://apify.com/joaosbp) (community)
- **Categories:** Business, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## 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

## ComplianceBR — Brazil Sanctions Screening (CEIS, CNEP, CEPIM)

**Batch-screen CNPJs, CPFs and company names against the official Brazilian government sanctions lists — in seconds, straight from the source.**

ComplianceBR downloads the latest files published by Portal da Transparência / CGU and checks every entity you provide against:

| List | Full name | What it means |
|---|---|---|
| **CEIS** | Cadastro de Empresas Inidôneas e Suspensas | Entities suspended or barred from contracting with the public sector |
| **CNEP** | Cadastro Nacional de Empresas Punidas | Companies punished under the Clean Company Act (Lei 12.846/2013) |
| **CEPIM** | Cadastro de Entidades Privadas sem Fins Lucrativos Impedidas | Non-profits barred from federal partnerships and transfers |

No scraping, no anti-bot, no proxies — the data comes from the **same official CSV files the government publishes**. Every run tells you the exact date of each source file used.

### Who is this for

- **Compliance / KYC teams** — screen suppliers, partners and clients before signing contracts
- **Procurement & licitações** — verify bidders are eligible to contract with public bodies
- **Legal & due diligence** — evidence with sanctioning body, legal basis, process number and dates
- **NGOs and public agencies** — check CEPIM status before partnerships (convênios)

### Input

| Field | Type | Description |
|---|---|---|
| `documents` | array | CNPJs (14 digits) or CPFs (11 digits), with or without punctuation |
| `names` | array | Company/person names — exact match after normalization (accents/case ignored) |
| `lists` | array | Which lists to check: `CEIS`, `CNEP`, `CEPIM` (default: all) |
| `includeExpired` | boolean | Include sanctions whose end date already passed (default: `false`) |
| `maxLookbackDays` | integer | How far back to probe for the most recent gov file (default: 15) |

#### Example input

```json
{
  "documents": ["04.690.303/0001-34", "01.877.360/0001-39", "208.921.012-53"],
  "names": ["ANG SERVICOS DE LIMPEZA DE TERRENOS EIRELI"],
  "lists": ["CEIS", "CNEP", "CEPIM"]
}
```

### Output

One dataset record per queried entity:

```json
{
  "query": "04.690.303/0001-34",
  "queryType": "cnpj",
  "status": "LISTED",
  "matchesCount": 2,
  "activeMatchesCount": 2,
  "matches": [
    {
      "list": "CNEP",
      "sanctionCode": "132709",
      "sanctionedDocument": "04690303000134",
      "sanctionedName": "ANG SERVICOS DE LIMPEZA DE TERRENOS EIRELI",
      "matchedOn": "document",
      "category": "Multa",
      "fineAmount": "0,00",
      "startDate": "31/01/2022",
      "endDate": "",
      "active": true,
      "processNumber": "021033902021",
      "sanctioningBody": "Prefeitura do Município de ...",
      "uf": "SP",
      "sphere": "MUNICIPAL",
      "legalBasis": "LEI 12846...",
      "reason": ""
    }
  ],
  "listsChecked": ["CEIS", "CNEP", "CEPIM"],
  "listsFailed": [],
  "sourceDates": { "CEIS": "2026-07-31", "CNEP": "2026-07-31", "CEPIM": "2026-07-30" },
  "checkedAt": "2026-07-31T20:00:00.000000+00:00",
  "notes": ""
}
```

**Status values:** `LISTED` (at least one match), `CLEAN` (no match), `INVALID` (failed CNPJ/CPF checksum — verify the number).

A run-level summary is also stored in the key-value store under `OUTPUT` (counts of LISTED/CLEAN/INVALID, lists checked, source file dates).

### Validation & safety

- **Real checksum validation** — CNPJ/CPF check digits are verified; invalid numbers are flagged `INVALID` instead of silently returning CLEAN
- **Name matching is exact-after-normalization** — never fuzzy. When screening by name, always confirm the document number in the matches before acting
- **Expired sanctions filtered by default** — end date in the past = excluded (enable `includeExpired` to see history)
- **Source transparency** — `sourceDates` shows the exact government file date used for each list
- **Per-list resilience** — if one list is temporarily unavailable, the run continues and reports `listsFailed`

### Cost

Each run downloads 3 small government files (~3.5 MB total) and streams through them once — a typical run with hundreds of CNPJs finishes in **under 30 seconds** and costs a fraction of a cent in platform compute. Scheduled runs (e.g. weekly re-screening of your supplier base) are equally cheap.

### Scheduling & integrations

Use **Apify Schedules** to re-screen your supplier/client base automatically (weekly or monthly). Export results as CSV/JSON/Excel directly from the dataset, or push them to Google Sheets, Slack or your CRM via Apify integrations and webhooks.

### FAQ

**How fresh is the data?**
The government publishes files irregularly (usually on business days). The Actor always picks the most recent file available within `maxLookbackDays` and tells you its date.

**Does it check state/municipal lists (TCE-SP, etc.)?**
Not yet — only the three federal CGU lists. CEIS itself already aggregates sanctions from federal, state and municipal bodies that report to CGU.

**Is name matching reliable?**
It is exact after normalization (accents, case and punctuation ignored). It catches exact-name entries, but typos or partial names won't match. Prefer CNPJ whenever possible.

**Is this legal advice?**
No. This tool surfaces official public data. Confirm critical findings in the source systems (Portal da Transparência) before business decisions.

***

### 🇧🇷 Versão em Português

**Consulte em lote CNPJs, CPFs e nomes nas listas oficiais de sanções do governo brasileiro — em segundos, direto da fonte.**

O ComplianceBR baixa os arquivos mais recentes do Portal da Transparência / CGU e verifica cada entidade informada contra:

- **CEIS** — empresas inidôneas e suspensas de contratar com o poder público
- **CNEP** — empresas punidas pela Lei Anticorrupção (Lei 12.846/2013)
- **CEPIM** — entidades sem fins lucrativos impedidas de celebrar convênios

Sem scraping, sem captcha, sem proxy — os dados vêm dos **mesmos arquivos CSV oficiais publicados pelo governo**. Cada execução informa a data exata de cada arquivo-fonte utilizado.

#### Para quem é

- **Times de compliance e KYC** — triagem de fornecedores, parceiros e clientes antes de fechar contrato
- **Compras e licitações** — verifique se licitantes estão aptos a contratar com o poder público
- **Jurídico e due diligence** — evidências com órgão sancionador, fundamento legal, número do processo e datas
- **ONGs e órgãos públicos** — consulta ao CEPIM antes de convênios

#### Como usar

1. Cole seus CNPJs/CPFs em `documents` (com ou sem pontuação) ou nomes em `names`
2. Escolha as listas (padrão: todas) e rode
3. Receba um registro por entidade: `LISTED` (encontrado), `CLEAN` (nada consta) ou `INVALID` (dígito verificador inválido)
4. Exporte em CSV/Excel ou integre com Google Sheets/CRM via webhooks

#### Agendamento

Use **Schedules da Apify** para reconsultar automaticamente sua base de fornecedores toda semana ou mês — uma rodada com centenas de CNPJs leva menos de 30 segundos e custa uma fração de centavo.

***

## *Data source: [Portal da Transparência — Downloads de Dados](https://www.portaltransparencia.gov.br/download-de-dados) (CGU). This Actor only reads public, official data.*

### 🇧🇷 Suite de Dados Públicos BR / BR Public Data Suite

Este Actor faz parte de uma suite brasileira de dados públicos e jurídicos. Combine-os em pipelines:

- **LicitacoesBR** — radar de licitações PNCP (editais e vencedores): https://apify.com/joaosbp/licitacoes-pncp-br
- **CNPJ Lookup BR** — consulta CNPJ em lote com dados da Receita Federal: https://apify.com/joaosbp/cnpj-enrichment-lookup-br
- **CnpjDeltaBR** — monitor de mudanças cadastrais de CNPJs: https://apify.com/joaosbp/cnpj-delta-monitor-br
- **ComplianceBR** — screening de sanções CEIS/CNEP/CEPIM: https://apify.com/joaosbp/cnpj-sanctions-screening-br
- **Contact Scraper BR** — emails, WhatsApp + enriquecimento CNPJ: https://apify.com/joaosbp/website-contact-finder-br
- **PrazoBR** — extrator de prazos e obrigações jurídicas: https://apify.com/joaosbp/legal-deadlines-extractor-br
- **AutosTimeline BR** — cronologia de autos e pendências: https://apify.com/joaosbp/case-timeline-builder-br
- **PublicaBR** — monitor de publicações processuais (DataJud/CNJ): https://apify.com/joaosbp/publicacoes-processuais-br
- **EditalBR** — extrator de editais de concurso em PDF: https://apify.com/joaosbp/edital-extractor-br
- **Pricing Monitor BR** — monitor de páginas de preço SaaS: https://apify.com/joaosbp/competitor-pricing-page-monitor

**Pipeline sugerido:** LicitacoesBR encontra editais → CNPJ Lookup enriquece o vencedor → ComplianceBR verifica sanções → CnpjDeltaBR monitora mudanças cadastrais.

# Actor input Schema

## `documents` (type: `array`):

List of CNPJ (14 digits) or CPF (11 digits) numbers to check against the sanctions lists. Punctuation is optional — both '12.345.678/0001-90' and '12345678000190' work.

## `names` (type: `array`):

Names to screen when you don't have the document number. Matching is exact after normalization (accents and case ignored). Always confirm the document number in the matches before acting on results.

## `lists` (type: `array`):

CEIS: sanctioned companies/persons (no contracts with public sector). CNEP: punished under the Clean Company Act (Lei 12.846). CEPIM: non-profits barred from federal partnerships.

## `includeExpired` (type: `boolean`):

When off (default), sanctions whose end date (DATA FINAL SANÇÃO) is in the past are filtered out. CEPIM entries have no dates and are always considered active.

## `maxLookbackDays` (type: `integer`):

Government files are published irregularly. The Actor probes back from today up to this many days to find the most recent file for each list.

## Actor input object example

```json
{
  "documents": [
    "04.690.303/0001-34",
    "01.877.360/0001-39"
  ],
  "lists": [
    "CEIS",
    "CNEP",
    "CEPIM"
  ],
  "includeExpired": false,
  "maxLookbackDays": 15
}
```

# Actor output Schema

## `datasetItems` (type: `string`):

One record per entity: status (LISTED/CLEAN/INVALID), matches with list, category, sanctioning body, dates, process number and legal basis.

## `resultsCsv` (type: `string`):

Spreadsheet-ready export of the screening results, one row per entity.

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

Counts of entities screened, LISTED/CLEAN/INVALID totals, lists checked/failed, and the exact government file date used for each list.

# 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 = {
    "documents": [
        "04.690.303/0001-34",
        "01.877.360/0001-39"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("joaosbp/cnpj-sanctions-screening-br").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 = { "documents": [
        "04.690.303/0001-34",
        "01.877.360/0001-39",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("joaosbp/cnpj-sanctions-screening-br").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 '{
  "documents": [
    "04.690.303/0001-34",
    "01.877.360/0001-39"
  ]
}' |
apify call joaosbp/cnpj-sanctions-screening-br --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=joaosbp/cnpj-sanctions-screening-br",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/1jcdYMH0EcNsJU3Ke/builds/F6r9rb5Vfsa8Tzk7l/openapi.json
