Brazil CVM Filings for Quant Research Pipelines
You are a quant or data engineer building a fundamental layer for Brazil. You need a Brazil filings quant API: ticker → annual/quarterly PDFs → machine-readable text — not another price feed.
apicvm is built for that regulatory slice: resolve issuers, list DFP/ITR/FRE, download originals, and extract page-level markdown asynchronously.
The persona
- Cross-asset quants adding B3 names beside US EDGAR pipelines
- Research shops assembling panel datasets from audited statements
- Feature stores that cite original filings, not scraped HTML
You already have prices elsewhere (B3 vendors, brokers). The gap is programmatic CVM documents.
The problem
Open-data ZIP/CSV dumps are excellent for some panels but awkward for “fetch VALE3 DFP 2024 PDF, then next quarter’s ITR.” Scrapers break. Multi-market APIs may bundle Brazil with event feeds you do not need yet.
Quant code wants a boring HTTP loop:
for ticker in watchlist:
resolve → list DFP/ITR by year → download or extract → store with document.id
Solution flow
GET /v1/companies/resolve— confirm issuerGET /v1/documents— filtertype,year,tickerGET /v1/documents/:id/file— original PDF- Optional:
POST /v1/document-text-extractions— page markdown via callback
export APICVM_KEY='apicvm_...'
export APICVM_URL='https://apicvm.dev'
curl -H "Authorization: Bearer $APICVM_KEY" \
"$APICVM_URL/v1/documents?ticker=VALE3&type=DFP&year=2024&perPage=20"
Python sketch — multi-ticker DFP index
import os, requests
BASE = os.environ["APICVM_URL"]
H = {"Authorization": f"Bearer {os.environ['APICVM_KEY']}"}
TICKERS = ["PETR4", "VALE3", "ABEV3"]
index = []
for t in TICKERS:
r = requests.get(
f"{BASE}/v1/documents",
headers=H,
params={"ticker": t, "type": "DFP", "year": 2024, "perPage": 50},
)
r.raise_for_status()
for d in r.json()["data"]:
index.append({"ticker": t, "id": d["id"], "name": d["name"], "dateRef": d["dateRef"]})
print(len(index), "DFP files indexed")
Respect rate limits when the watchlist grows — 60 requests / 60 seconds on standard plans.
What this is not
- Not market data — no quotes, order books, or corporate-action calendars
- Not real-time CVM firehose — corpus follows ingestion, not a live portal mirror
- Not IPE / fato relevante alerts — see IPE
Next steps
Ready to integrate?
Get an API key and start querying Brazilian CVM filings programmatically.