# Brazil Sanctions Check - CPF & CNPJ Screening (`brasildados/sanctions-check`) Actor

Screen CPFs and CNPJs against 5 Brazilian federal sanctions registries: CEIS, CNEP, CEPIM, CEAF and Leniency Agreements. Instant results for KYC, KYB, due diligence and compliance. Up to 50 documents per run, CPF masked, billed only per sanction found.

- **URL**: https://apify.com/brasildados/sanctions-check.md
- **Developed by:** [BrasilDados.org - Hub de APIs de Dados do Brasil](https://apify.com/brasildados) (community)
- **Categories:** Integrations, AI, Developer tools
- **Stats:** 39 total users, 5 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

$10.00 / 1,000 per single sanction founds

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

### Brazil Sanctions Check by CPF and CNPJ in CEIS, CNEP, CEPIM, CEAF and Leniency Agreements

Screen Brazilian people and companies for official sanctions using only their CPF or CNPJ. The Actor automatically searches the public registries that apply to each document, organizes the records as JSON and returns one row for every occurrence found.

It fits compliance, due diligence, supplier vetting, risk analysis, KYB/KYC onboarding, procurement, public tenders and ongoing monitoring.

### 🔎 Which sanctions registries are screened?

| Registry | Full name | Document screened | What a record means |
|---|---|---|---|
| **CEIS** | National Register of Disreputable and Suspended Companies | CPF and CNPJ | Lists people and companies whose sanctions may restrict them from public tenders or from contracting with the government. |
| **CNEP** | National Register of Punished Companies | CPF and CNPJ | Shows penalties applied under the administrative and civil liability regime for acts against public administration. |
| **CEPIM** | Register of Barred Non-Profit Private Entities | CNPJ | Identifies non-profit private entities barred from signing agreements, transfer contracts or similar instruments. |
| **CEAF** | Register of Expulsions from the Federal Administration | CPF | Lists expulsion penalties applied to public officials within the Brazilian Federal Administration. |
| **Leniency Agreements** | Leniency Agreements signed with companies | CNPJ | Reports agreements signed with companies, including status, period, responsible agency and participating companies. |

For a CNPJ, the Actor screens CEIS, CNEP, CEPIM and Leniency Agreements. For a CPF, it screens CEIS, CNEP and CEAF. Routing is automatic: you never need to know endpoints or internal codes.

### 🚀 Simple input

Use a single field for one or many documents:

```json
{
  "documents": ["02.342.260/0001-70", "52998224725"]
}
```

| Field | Required | Description |
|---|---:|---|
| `documents` | Yes | List of 1 to 50 valid CPFs or CNPJs, with or without punctuation. Repeated values are screened only once. |

CPFs and CNPJs can be mixed in the same run. Invalid documents are skipped when at least one valid value is present.

### 📦 How the result works

Each Dataset row is **one sanction** in **one registry** = **$0.01**. It is **not** billed per CPF/CNPJ. Two hits (CEIS + CNEP) = two charges. A document with no hit produces no row and is not billed. Cap total spend with the run’s **max total charge** in Console/API.

In the Console, the Output tab opens on an overview with the main columns. Switch to the **All fields** view to see the full record. Downloads in JSON, CSV or Excel and the API always return every field, whichever view is selected.

Common fields stay at the top level. Only lists that may hold several elements, such as `legalBases` and `companiesInAgreement`, use an extra level.

#### Example of a company found in CEIS

```json
{
  "document": "02.342.260/0001-70",
  "documentType": "CNPJ",
  "registry": "CEIS",
  "registryName": "National Register of Disreputable and Suspended Companies",
  "recordId": 284724,
  "sanctionedName": "EXAMPLE COMPANY LTDA",
  "sanctionType": "Ban on contracting for a fixed period",
  "startDate": "2022-02-22",
  "endDate": "2032-02-22",
  "referenceDate": "2026-08-14",
  "finalJudgmentDate": "2022-02-22",
  "informationOriginDate": "2023-06-12",
  "processNumber": "00025983920124058500",
  "agency": "Federal Regional Court",
  "agencyState": "SE",
  "agencyBranch": "Judiciary",
  "agencyLevel": "FEDERAL",
  "sourceName": "Responsible public agency",
  "legalBases": [
    { "description": "Applicable law and article of the sanction" }
  ],
  "checkedAt": "2026-08-14T15:00:00.000Z"
}
```

#### Example of an individual found in CEAF

```json
{
  "document": "***.982.247-**",
  "documentType": "CPF",
  "registry": "CEAF",
  "registryName": "Register of Expulsions from the Federal Administration",
  "recordId": 98765,
  "sanctionedName": "Bruno",
  "sanctionType": "Dismissal",
  "publicationDate": "2026-08-10",
  "referenceDate": "2026-08-14",
  "processNumber": "00123.000456/2026-10",
  "agency": "Responsible federal agency",
  "legalBases": [
    { "code": "LEI 8112 ART 132", "description": "Law 8.112, article 132" }
  ],
  "position": "Analyst",
  "ordinance": "Ordinance 123",
  "officialGazettePage": "42",
  "officialGazetteSection": "2",
  "dutyState": "DF",
  "checkedAt": "2026-08-14T15:00:00.000Z"
}
```

Fields vary by registry and only appear when the source provides them. Empty, duplicated or "no information" values are removed.

### 🔒 Personal data protection

Companies are returned in full. For individuals:

- the CPF is partially masked, for example `***.982.247-**`;
- the name shows only the first given name;
- the full CPF and remaining name parts are also removed from free text when they appear in the response.

### 🔌 Use it through the Apify API

Run the Actor and get the Dataset records in the response:

```bash
curl -X POST "https://api.apify.com/v2/acts/brasildados~sanctions-check/run-sync-get-dataset-items?format=json" \
  -H "Authorization: Bearer SEU_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"documents":["02.342.260/0001-70","52998224725"]}'
```

The Actor deliberately paces its requests to protect the stability of the public source APIs. That is why the limit is 50 documents per run: for longer lists, split them into successive runs.

### 💳 Billing

**$0.01 per sanction delivered**, not per CPF/CNPJ. Empty screening = $0. Limit the bill with Apify **max total charge** (stops new Dataset rows when the budget is reached).

If this Actor was useful, leave a review on the Store **Reviews** tab.

### Related Actors

Docs and API guides: [brasildados.org](https://brasildados.org/)

Catalog: [apify.com/brasildados](https://apify.com/brasildados?fpr=t5lwzq)

| Actor | When to use |
|---|---|
| [CNPJ Legal Processes Distribution](https://apify.com/brasildados/cnpj-lawsuits-check?fpr=t5lwzq) | Aggregated lawsuit risk by CNPJ |
| [CNPJ KYC & PEP Checker](https://apify.com/brasildados/cnpj-kyc-compliance-pep-checker?fpr=t5lwzq) | PEP, international sanctions and electoral donations |

### ℹ️ Important notes

- No results simply means no record was found in the screened registries at that moment.
- Content, dates and availability depend on the agencies responsible for each registry.
- The Actor paginates automatically and returns every record found, respecting the technical limits that protect the public sources.
- Data comes from public sources and can be easily audited against the corresponding official records.
- For legal, regulatory or contracting decisions, confirm the record against the applicable official documentation.

# Actor input Schema

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

1 to 50 CPFs or CNPJs, with or without punctuation. Mix both types. Duplicates are screened once. Invalid IDs are skipped.

**CNPJ:** CEIS, CNEP, CEPIM, Leniency Agreements. **CPF:** CEIS, CNEP, CEAF.

Each matching sanction is one Dataset row = **$0.01**. No hit = no row = not billed. Use the run’s max total charge to cap spend.

## Actor input object example

```json
{
  "documents": [
    "02.342.260/0001-70",
    "52998224725"
  ]
}
```

# Actor output Schema

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

Direct API URL for the full results Dataset.

# 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": [
        "02.342.260/0001-70",
        "52998224725"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("brasildados/sanctions-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 = { "documents": [
        "02.342.260/0001-70",
        "52998224725",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("brasildados/sanctions-check").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 '{
  "documents": [
    "02.342.260/0001-70",
    "52998224725"
  ]
}' |
apify call brasildados/sanctions-check --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,brasildados/sanctions-check"
        }
    }
}

```

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/qrHUz1WIM9Bkhl6TX/builds/ZT2d6JyMZEsTbv9C5/openapi.json
