Brazilian ADRs: SEC 20-F vs CVM Filings
US investors researching Brazil ADR 20-F vs CVM disclosures often start on EDGAR, then need the Brazilian regulatory package — DFP, ITR, and FRE. CVM is Brazil’s securities regulator; the SEC is the US regulator. apicvm covers the CVM side programmatically. It is not “Brazil’s EDGAR” and does not serve Form 20-F.
Two regulators, two stacks
| Source | Regulator | Typical docs | Access |
|---|---|---|---|
| EDGAR | SEC (US) | Form 20-F, 6-K, F-series | SEC EDGAR APIs / website |
| CVM filings | CVM (Brazil) | DFP, ITR, FRE | apicvm /v1/* or CVM portals |
Many large Brazilian issuers (for example Petrobras, Vale) appear in both systems: ADR / foreign-private-issuer forms in the US, and periodic CVM forms at home. Language, structure, and update cadence differ — treat them as complementary, not duplicates.
What Form 20-F covers (US)
Form 20-F is the annual report many foreign private issuers file with the SEC. It includes business description, risk factors, financial statements under applicable standards, and governance disclosures aimed at US markets.
apicvm does not host 20-F PDFs. Use EDGAR for that trail.
What CVM filings cover (Brazil)
| Type | Role |
|---|---|
| DFP | Annual standardized financial statements |
| ITR | Quarterly financial information |
| FRE | Reference form — risks, governance, contingencies, business plan |
Foreign developers often want FRE risk factors and contingencies in Portuguese primary text, plus local financial statement files — even when a 20-F exists in English.
Background: Brazil CVM vs SEC EDGAR.
Pull the Brazil side with apicvm
export APICVM_KEY='apicvm_...'
export APICVM_URL='https://apicvm.dev'
# Resolve Brazilian ticker (not the NYSE ADR ticker)
curl -H "Authorization: Bearer $APICVM_KEY" \
"$APICVM_URL/v1/companies/resolve?query=VALE3&by=ticker"
curl -H "Authorization: Bearer $APICVM_KEY" \
"$APICVM_URL/v1/documents?ticker=VALE3&type=FRE&year=2024&name=FatoresRisco&perPage=10"
curl -H "Authorization: Bearer $APICVM_KEY" \
"$APICVM_URL/v1/documents?ticker=PETR4&type=DFP&year=2024&perPage=20"
import os, requests
BASE = os.environ["APICVM_URL"]
H = {"Authorization": f"Bearer {os.environ['APICVM_KEY']}"}
docs = requests.get(
f"{BASE}/v1/documents",
headers=H,
params={"ticker": "EMBR3", "type": "FRE", "year": 2024, "perPage": 20},
).json()
for d in docs["data"][:5]:
print(d["id"], d["name"])
Practical research pattern
1. EDGAR — 20-F / 6-K for US-facing narrative and English financials
2. apicvm — resolve B3 ticker → FRE sections + DFP/ITR for Brazil-primary evidence
3. Compare themes (risks, contingencies, segments) — do not assume identical wording
Use section filters on FRE (name=) when you need contingencies or risk factors — see filter by section name.
What not to assume
- Not official equivalence — CVM ≠ SEC; apicvm ≠ EDGAR.
- Not ADR ticker resolution — resolve
VALE3/PETR4style B3 tickers, not necessarily the NYSE symbol alone. - Not real-time material facts — IPE / fatos relevantes are outside MVP; see IPE.
- Not complete English translation — CVM PDFs are often Portuguese.
Current limitations
- Corpus coverage is ingestion-dependent.
- Text extraction is async (Pro) via callback.
- No SEC endpoints in apicvm.
Next steps
Ready to integrate?
Get an API key and start querying Brazilian CVM filings programmatically.