Brazil ESG Supply-Chain Monitor — Slave Labor + IBAMA by CNPJ avatar

Brazil ESG Supply-Chain Monitor — Slave Labor + IBAMA by CNPJ

Pricing

Pay per event

Go to Apify Store
Brazil ESG Supply-Chain Monitor — Slave Labor + IBAMA by CNPJ

Brazil ESG Supply-Chain Monitor — Slave Labor + IBAMA by CNPJ

ESG supply-chain risk monitor by Brazilian CNPJ with change detection between runs.

Pricing

Pay per event

Rating

0.0

(0)

Developer

MoreLock

MoreLock

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 hours ago

Last modified

Categories

Share

Give this Actor a list of your Brazilian suppliers' tax ids (CNPJ) and it tells you, company by company, whether there is an ESG or human-rights problem — and what changed since it last ran. It cross-references the slave-labor "Dirty List" (the Ministry of Labor's Employers Registry) with IBAMA's environmental infractions and embargoes. If a supplier lands on the list, picks up a new infraction, or gets an area embargoed, you find out on the next run.

The point is to run it on a schedule. Each run gives you two things: the current risk picture for every CNPJ, and the diff against the previous state. That is exactly what the EU Corporate Sustainability Due Diligence Directive (CSDDD) asks for — ongoing monitoring of your value chain, not a snapshot taken once.

🇧🇷 Versão em português → Monitor ESG BR por CNPJ

Overview

Two official Brazilian public sources, folded into one risk record per company.

The Dirty List (MTE) is the registry of employers caught subjecting workers to conditions analogous to slavery. It comes out twice a year (Interministerial Ordinance MTE/MDHC/MIR No. 18/2024). Being on it is the most serious signal this Actor reports.

IBAMA's infraction records come from the agency's open data, updated daily, together with the embargo terms tied to each infraction. They cover flora, fauna, pollution and other violations, with the fine amount, municipality, severity and status (active or cancelled).

Matching is always by document (CNPJ/CPF), never by name, so a homonymous company never gets attached by mistake. If you want, it also matches by the 8-digit CNPJ root, which catches branches and other companies in the same group.

Features

  • Delta between runs. The first run stores the baseline; later runs report only what moved (ADDED, REMOVED, MODIFIED). Two runs with no news return an empty delta instead of repeating everything.
  • Composite risk level: CRITICAL for the Dirty List, HIGH for an active environmental embargo, MEDIUM for an active infraction, LOW when only cancelled infractions remain, NONE for a clean company.
  • Current picture and change events land in the same dataset (record_type: snapshot or change).
  • Any watchlist size, documents formatted or digits-only.
  • An invalid document is not charged (see Pricing).

Input example

{
"watchCnpjs": ["03.246.366/0001-33", "10.199.645/0001-59"],
"mode": "auto",
"includeDirtyList": true,
"includeIbama": true,
"matchByRoot": false,
"stateStoreName": "esg-monitor-state"
}

Output example (real data)

The current picture of a CNPJ with an environmental infraction and an embargo:

{
"record_type": "snapshot",
"cnpj": "03.246.366/0001-33",
"entity_type": "COMPANY",
"name": "AGROPECUARIA VERSCHOOR LTDA",
"risk_level": "HIGH",
"on_dirty_list": false,
"ibama": {
"total_infractions": 1,
"active_infractions": 1,
"cancelled_infractions": 0,
"active_embargoes": 1,
"total_fines_value": 15000,
"infractions": [
{
"infraction_id": "QRNYPP1Q",
"cancelled": false,
"infraction_type": "Flora",
"fine_value": 15000,
"municipality": "PALMEIRA",
"state": "PR",
"embargo_term": "7NUXQG58",
"infraction_date": "2026-01-07 14:04:19"
}
]
},
"screened_at": "2026-07-09T18:00:00.000Z"
}

A change event, when the CNPJ joins the Dirty List between one run and the next:

{
"record_type": "change",
"cnpj": "03.246.366/0001-33",
"source": "dirty_list",
"change_type": "ADDED",
"record_key": "03246366000133",
"fields": { "employer": "AGROPECUARIA VERSCHOOR LTDA", "state": "PR", "inclusion_date": "06/04/2026" },
"detected_at": "2026-07-09T18:00:00.000Z"
}

Parameters

ParameterTypeDefaultDescription
watchCnpjsarray2 example CNPJsCNPJs/CPFs to watch (formatted or digits-only).
modestringautoauto = baseline on the 1st run, delta afterwards. baseline = re-emit everything and rewrite.
includeDirtyListbooleantrueQuery the slave-labor Dirty List (MTE).
includeIbamabooleantrueScan IBAMA infractions + embargoes (downloads ~120 MB/run).
matchByRootbooleanfalseAlso match IBAMA infractions by the 8-digit CNPJ root.
stateStoreNamestringesg-monitor-stateNamed key-value store for the baseline. Use a distinct name per watchlist.

Tips

  • Schedule the Actor through Apify Schedules. Daily keeps up with IBAMA, which changes every day; weekly is usually enough for a less critical chain.
  • Give each watchlist or client its own stateStoreName, so one monitor's delta history never bleeds into another's.
  • The Dirty List only changes in April and October. News there is rare, but when it happens it matters.
  • Turn on matchByRoot when you want the whole economic group behind a CNPJ, not just the single branch.

Use cases

  • Continuous supplier due diligence for ESG compliance and procurement teams.
  • A baseline check at onboarding, before you sign a new supplier.
  • Credit or insurance portfolio tracking by socio-environmental exposure.
  • Supply-chain audit for exporters answering to EU due-diligence duties.
  • A reputational-risk alert when a key supplier gets embargoed or listed.
  • A socio-environmental layer on top of your KYB company records.

FAQ

Are the sources official? They are. The Dirty List is the Employers Registry of the Brazilian Ministry of Labor and Employment; the IBAMA data comes from the agency's own open-data platform.

How often do the data change? The Dirty List, twice a year. IBAMA, every day. That is why it runs on a schedule.

Does it match by name? Never. Matching is by document only (CNPJ/CPF), which rules out homonym false positives.

What if the CNPJ is clean? You get a picture with risk_level: NONE. The screening ran, and "no risk" is a real answer.

What is the delta? The difference against the previous run. If nothing changed between two runs, the delta comes back empty instead of repeating what was already there.

Do I need a proxy? No. The sources are semi-open and the Actor uses no residential proxy.

Pricing

Pay-per-event, built around running the monitor on a schedule:

  • monitor_run — charged once per run that processes the watchlist. It covers downloading and scanning the sources.
  • cnpj_screened — charged per CNPJ/CPF screened.
  • risk_change_detected — charged per real, material change (ADDED, REMOVED, MODIFIED). A baseline run, or a run with no news, does not trigger it.

An invalid document, or a run with no valid documents, is not charged. You pay for the screening and the signal it produces.

Changelog

  • 1.0 — Launch: slave-labor Dirty List (MTE) + IBAMA infractions/embargoes, delta between runs, composite risk level, match by CNPJ and by root.

Contact

A question, a suggestion, or a problem? Open an issue in the Actor's Issues tab.