Brazil Financial Data API: Filings vs Stock Market Data
Search for a Brazil financial API or Brazil stock data API and you will hit two different product categories mixed in the same SERP: market data (prices, OHLCV, dividends) and regulatory filings (DFP, ITR, FRE, fatos relevantes filed with the CVM).
apicvm is the second layer — a filings API for Brazilian public companies. It does not return quotes. Pipelines that need both usually pair a quotes vendor with apicvm.
Two layers people call "financial data"
| Layer | What you get | Typical APIs | Job |
|---|---|---|---|
| Market / stock data | Prices, candles, volume, some fundamentals | Quotes vendors (e.g. Brapi), broker feeds | Charts, backtests, MTM |
| Regulatory filings | Original CVM PDFs + extracted text | apicvm | Fundamentals from source, governance, risks, event disclosures |
A candle tells you what the market paid. A DFP tells you what the company reported. Both matter; neither replaces the other. Longer comparison: Quotes APIs vs CVM filings API.
What apicvm is (and is not)
Is: a programmatic CVM filings API — resolve by ticker/CNPJ/name, list documents, download PDFs, enqueue page-level markdown extraction.
Is not: a stock quotes API, a screener, or a Bloomberg replacement.
If you came from US workflows, think “EDGAR-style access for Brazilian filings,” not “Yahoo Finance for B3.” Role analogy only — details in Brazil EDGAR / CVM vs SEC filings. Overview of the product surface: CVM API.
Filing types you can pull
| Type | Cadence | Use |
|---|---|---|
DFP |
Annual | Standardized financial statements |
ITR |
Quarterly | Interim financials (Informações Trimestrais — not income tax return) |
FRE |
Annual / updates | Formulário de Referência — profile, governance, risks |
FATO_RELEVANTE + other IPE |
Event-driven | Material facts and related disclosures |
Quickstart: filings, not prices
export APICVM_KEY='apicvm_...'
export APICVM_URL='https://apicvm.dev'
# Resolve issuer — not a quote
curl -H "Authorization: Bearer $APICVM_KEY" \
"$APICVM_URL/v1/companies/resolve?query=PETR4&by=ticker"
# List annual filings
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": "VALE3", "type": "ITR", "year": 2024, "perPage": 20},
).json()
for d in docs["data"][:5]:
print(d["type"], d["dateRef"], d["name"], d["id"])
Download with GET /v1/documents/:id/file. Walkthrough: Download DFP and ITR filings.
When you actually need a stock data API
Use a quotes / market-data vendor when you need:
- Last price or historical OHLCV
- Intraday charts or volume
- Dividend calendars from a market-data feed
Use apicvm when you need:
- The PDF the company filed with CVM
- FRE risk factors or governance sections
- Fatos relevantes for event pipelines
- Text for RAG or research agents
Many production stacks call both.
Current limitations
- No prices, candles, or order-book data.
- Corpus coverage grows with ingestion — not every period for every issuer.
- Extraction is async via callback.
Next steps
Ready to integrate?
Get an API key and start querying Brazilian CVM filings programmatically.