ESG Screening with Brazil CVM Filings
ESG and stewardship teams running Brazil filings ESG screening need issuer-written disclosures — integrity programs, climate and social risk factors, governance structures — not a third-party scorecard. apicvm lets you list and download the underlying CVM PDFs (mainly FRE). It does not produce ESG ratings or materiality scores.
The persona
- Asset managers screening portfolios for disclosure gaps
- Stewardship / engagement teams preparing issuer meetings
- Researchers comparing integrity and climate narratives across tickers
The problem
Brazilian ESG-relevant narrative often lives in the FRE (and sometimes DFP footnotes), not in a single “ESG form.” Manual portal work does not scale across a 30-name watchlist. You need:
watchlist → FRE section filter → download / extract → your rubric
Solution flow
GET /v1/companies/resolve
GET /v1/documents?type=FRE&name=<theme>
GET /v1/documents/:id/file
optional POST /v1/document-text-extractions
Example: integrity / compliance themes
export APICVM_KEY='apicvm_...'
export APICVM_URL='https://apicvm.dev'
curl -H "Authorization: Bearer $APICVM_KEY" \
"$APICVM_URL/v1/documents?ticker=VALE3&type=FRE&year=2024&name=Integridade&perPage=20"
curl -H "Authorization: Bearer $APICVM_KEY" \
"$APICVM_URL/v1/documents?ticker=LREN3&type=FRE&year=2024&name=Socioambiental&perPage=20"
Example: risk factors (often includes climate / social)
curl -H "Authorization: Bearer $APICVM_KEY" \
"$APICVM_URL/v1/documents?ticker=PETR4&type=FRE&year=2024&name=FatoresRisco&perPage=10"
Try the public demo for VALE3 FRE 2025 risk-factor markdown: demo API guide.
Python: multi-issuer screen
import os, requests
BASE = os.environ["APICVM_URL"]
H = {"Authorization": f"Bearer {os.environ['APICVM_KEY']}"}
TICKERS = ["VALE3", "PETR4", "LREN3", "EMBR3"]
NEEDLES = ["Integridade", "Socioambiental", "Clima", "FatoresRisco"]
for ticker in TICKERS:
print("===", ticker)
for name in NEEDLES:
docs = requests.get(
f"{BASE}/v1/documents",
headers=H,
params={
"ticker": ticker,
"type": "FRE",
"year": 2024,
"name": name,
"perPage": 5,
},
).json()["data"]
print(f" {name}: {len(docs)}")
Your ESG framework (taxonomy, weights, pass/fail) stays outside apicvm — the API only supplies documents and optional page markdown.
What apicvm does not provide
- ESG scores, SFDR labels, or controversy databases
- News / NGO incident feeds
- Assurance that a disclosure is complete or accurate
- Non-CVM sustainability reports unless filed inside ingested types
Current limitations
- Section titles differ by issuer — tune
namefilters empirically. - IPE / material facts outside MVP.
- Extraction costs credits on Pro.
Next steps
Ready to integrate?
Get an API key and start querying Brazilian CVM filings programmatically.