Brazil EDGAR? CVM vs SEC Filings for Developers

Developers searching for Brazil EDGAR, Brazil SEC filings, or a Brazilian SEC equivalent usually want one thing: an EDGAR-like way to resolve an issuer, list filings, and download documents for B3 companies. Brazil's regulator is the CVM (Comissão de Valores Mobiliários). It plays a similar role to the US SEC — it is not a mirror of EDGAR's technical stack, and it is not correct to call CVM "Brazil's EDGAR."

If you already integrate with SEC EDGAR, the workflow pattern transfers. The filing types, portals, and data access paths do not. This guide maps the mental model and shows how apicvm gives you that programmatic path for Brazilian CVM documents.

The problem

Foreign developers often assume one of two things:

  1. SEC tools work for Brazil — they do not. EDGAR covers US issuers only.
  2. CVM has an EDGAR API — it does not. Official CVM data is published through portals and open-data bulk exports, not a ticker-first REST API.

The gap: you need Brazilian public company filings with the same developer ergonomics you expect from a financial data API.

CVM and SEC: same role, different systems

SEC (US) CVM (Brazil)
Regulator Securities and Exchange Commission Comissão de Valores Mobiliários
Primary exchange context NYSE, NASDAQ B3 (Bovespa)
Filing repository EDGAR CVM portals + company submissions
Official API EDGAR full-text search, submissions API Open data dumps; no unified dev API

Important: CVM is Brazil's securities regulator, analogous in role to the SEC. It is not a mirror of EDGAR's technical infrastructure.

Filing type mapping

Rough equivalents help you pick the right CVM document type:

US (SEC) Brazil (CVM) apicvm type filter Cadence
10-K (annual report) DFP — Demonstrações Financeiras Padronizadas DFP Annual
10-Q (quarterly) ITR — Informações Trimestrais (not income tax) ITR Quarterly
Proxy / company handbook FRE — Formulário de Referência FRE Annual (updated)
8-K (material events) Fato relevante / IPE disclosures FATO_RELEVANTE, … Event-driven

For financial statement pipelines, DFP and ITR are your 10-K/10-Q equivalents. For company background and governance, use FRE. For event disclosures, see What is a fato relevante?.

EDGAR-style workflow with apicvm

The recommended flow matches what you would do with EDGAR submissions:

1. Resolve company     →  GET /v1/companies/resolve?query=PETR4&by=ticker
2. List filings        →  GET /v1/documents?ticker=PETR4&type=DFP&year=2024
3. Download or extract →  GET /v1/documents/:id/file
                         POST /v1/document-text-extractions

Example: list PETR4 annual filings

export APICVM_KEY='apicvm_...'
export APICVM_URL='https://apicvm.dev'

# Resolve (like looking up CIK → ticker mapping)
curl -H "Authorization: Bearer $APICVM_KEY" \
  "$APICVM_URL/v1/companies/resolve?query=PETR4&by=ticker"

# List DFP filings (like filtering 10-K on EDGAR)
curl -H "Authorization: Bearer $APICVM_KEY" \
  "$APICVM_URL/v1/documents?ticker=PETR4&type=DFP&year=2024&perPage=20"

Response documents include UUID id, type, year, dateRef, and nested company metadata — enough to build filing indexes similar to EDGAR submission tables. Step-by-step listing, name filters, and download: List Brazil DFP filings (10-K equivalent) via API.

Python: compare DFP and ITR for one ticker

import os, requests

BASE = os.environ["APICVM_URL"]
H = {"Authorization": f"Bearer {os.environ['APICVM_KEY']}"}

def list_filings(ticker, doc_type, year):
    r = requests.get(
        f"{BASE}/v1/documents",
        headers=H,
        params={"ticker": ticker, "type": doc_type, "year": year, "perPage": 50},
    )
    r.raise_for_status()
    return r.json()["data"]

for doc_type in ("DFP", "ITR"):
    filings = list_filings("PETR4", doc_type, 2024)
    print(f"{doc_type}: {len(filings)} document(s)")
    for f in filings[:3]:
        print(f"  - {f['year']} {f['name']} ({f['id']})")

When to use CVM open data instead

CVM publishes bulk datasets at dados.cvm.gov.br. Use open data when:

  • You need historical CSV across all companies for academic research
  • One-time bulk import is acceptable
  • You do not need per-ticker real-time-ish lookups

Use apicvm when:

  • Your pipeline resolves tickers (PETR4, VALE3) and fetches specific filings
  • You want PDF download and async text extraction in one API
  • You are building agents or microservices, not batch ETL from ZIP files

Key differences from EDGAR APIs

EDGAR apicvm
CIK as primary identifier Ticker, CNPJ, or company name via /resolve
accession numbers UUID document.id
Inline XBRL on many filings PDF originals; markdown extraction via callback
Free, no auth API key required; rate limit per key
Comprehensive US coverage Coverage = Hold corpus (growing)

Current limitations

  • apicvm does not replace EDGAR for US issuers — it covers Brazilian CVM filings only.
  • Coverage equals the ingested corpus — not a live CVM mirror of every filing.
  • Text extraction is async via callback, unlike EDGAR's inline text files on some submissions.
  • Fato relevante / IPE types are available as PDFs; section prefixes apply only to DFP, ITR, and FRE.

Next steps

Ready to integrate?

Get an API key and start querying Brazilian CVM filings programmatically.