CVM API: Access Brazilian Regulatory Filings Programmatically

A CVM API (or API CVM) is a programmatic interface to Brazilian securities filings — the documents public companies submit to the CVM (Comissão de Valores Mobiliários). Developers search for it when they want ticker-first HTTP access instead of scraping portals or unpacking open-data ZIPs.

apicvm is that interface for product and agent workflows: resolve a company, list filings, download the original PDF, and optionally extract page-level markdown.

What people mean by "CVM API"

Searchers usually want one of these:

  1. List filings by ticker — PETR4 DFP, VALE3 ITR, WEGE3 FRE
  2. Download the PDF the company filed with CVM
  3. Extract text for NLP, RAG, or research pipelines
  4. Event disclosuresfatos relevantes and related IPE documents

CVM itself publishes bulk open data and portal UIs. It does not ship a ticker-first REST product API for the resolve → list → download loop. That is the gap apicvm fills.

What is the CVM?

The CVM is Brazil's securities regulator — similar in role to the US SEC, not a copy of EDGAR's technical stack. Filings live in CVM systems; apicvm indexes a corpus of those documents and exposes a stable /v1 HTTP contract.

For a side-by-side mental model with EDGAR, see Brazil EDGAR / CVM vs SEC filings.

What apicvm covers

1. Resolve company     →  GET /v1/companies/resolve
2. List filings        →  GET /v1/documents
3. Download PDF        →  GET /v1/documents/:id/file
4. Extract markdown    →  POST /v1/document-text-extractions  (async callback)
Type Role
DFP Annual standardized financial statements
ITR Quarterly financial information (Informações Trimestrais — not an income tax return)
FRE Reference form (Formulário de Referência) — profile, governance, risks
FATO_RELEVANTE Material facts
Other IPE types Market communications, investor presentations, shareholder notices, assembly minutes

Auth: Authorization: Bearer or X-API-Key. Details: CVM API authentication.

Quickstart

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

curl -H "Authorization: Bearer $APICVM_KEY" \
  "$APICVM_URL/v1/companies/resolve?query=PETR4&by=ticker"

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']}"}

company = requests.get(
    f"{BASE}/v1/companies/resolve",
    headers=H,
    params={"query": "VALE3", "by": "ticker"},
).json()

docs = requests.get(
    f"{BASE}/v1/documents",
    headers=H,
    params={"ticker": "VALE3", "type": "ITR", "year": 2024, "perPage": 20},
).json()

print(company["name"], len(docs["data"]), "ITR filings")

Where to go next

Need Guide
Full walkthrough Getting started with the CVM filings API
DFP / ITR downloads Download DFP and ITR filings
Material facts List fatos relevantes via API
Filings vs market data Brazil financial data API
Errors and rate limits Handle CVM API errors
Pricing / credits CVM API pricing
Python deep dive Access CVM filings with Python

Current limitations

  • Coverage equals the ingested corpus — not a live mirror of every CVM filing.
  • Text extraction is async via callback (no synchronous extract endpoint).
  • Downloads are original PDFs, not XBRL line items.
  • apicvm is a product API, not an official CVM government endpoint.

Next steps

Ready to integrate?

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