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:
- List filings by ticker — PETR4 DFP, VALE3 ITR, WEGE3 FRE
- Download the PDF the company filed with CVM
- Extract text for NLP, RAG, or research pipelines
- Event disclosures — fatos 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.