Brazil ESG Supply-Chain Monitor — Slave Labor + IBAMA by CNPJ
Pricing
Pay per event
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
Maintained by CommunityActor 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:
CRITICALfor the Dirty List,HIGHfor an active environmental embargo,MEDIUMfor an active infraction,LOWwhen only cancelled infractions remain,NONEfor a clean company. - Current picture and change events land in the same dataset (
record_type: snapshotorchange). - 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
| Parameter | Type | Default | Description |
|---|---|---|---|
watchCnpjs | array | 2 example CNPJs | CNPJs/CPFs to watch (formatted or digits-only). |
mode | string | auto | auto = baseline on the 1st run, delta afterwards. baseline = re-emit everything and rewrite. |
includeDirtyList | boolean | true | Query the slave-labor Dirty List (MTE). |
includeIbama | boolean | true | Scan IBAMA infractions + embargoes (downloads ~120 MB/run). |
matchByRoot | boolean | false | Also match IBAMA infractions by the 8-digit CNPJ root. |
stateStoreName | string | esg-monitor-state | Named 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
matchByRootwhen 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.
Related Actors
- Monitor ESG BR por CNPJ (Portuguese version)
- Brazil Company Data — Bulk CNPJ Lookup & Enrichment
- Brazil Due Diligence — CNPJ Registry + Reclame Aqui
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.