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.