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"])

Company hubs: VALE3, PETR4, EMBR3.

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 / PETR4 style 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.