Brazil CVM Filings for Academic Research

Labs and graduate courses need reproducible Brazil filings academic inputs — primary CVM documents with stable IDs, not screenshots from the portal. apicvm provides resolve → list → download (and optional async extract on Pro). It is not a pre-built panel dataset for every listed firm.

The persona

  • PhD / MSc students building Brazil disclosure samples
  • Faculty labs that need citable document UUIDs in replication packages
  • Methods courses teaching HTTP access to regulatory filings

The problem

Academic need Why portal downloads hurt
Replication Filenames alone are hard to cite years later
Cohort builds Manual clicks do not scale across tickers/years
Teaching Students need a single auth pattern, not scrapers

CVM is Brazil's securities regulator. If your lab already uses SEC EDGAR programmatically, apicvm offers a similar workflow shape for Brazilian filings — without claiming official EDGAR equivalence.

Solution flow

Study ticker × year matrix
  → GET /v1/companies/resolve
  → GET /v1/documents (filters)
  → persist id + meta in your research DB
  → GET /v1/documents/:id/file (on demand)
export APICVM_KEY='apicvm_...'
export APICVM_URL='https://apicvm.dev'

curl -H "Authorization: Bearer $APICVM_KEY" \
  "$APICVM_URL/v1/documents?ticker=BRFS3&type=DFP&year=2024&perPage=20"

Company landing: BRFS3 CVM filings.

Teaching sketch (Python)

import os, csv, requests

BASE = os.environ["APICVM_URL"]
H = {"Authorization": f"Bearer {os.environ['APICVM_KEY']}"}
SAMPLE = ["PETR4", "VALE3", "BRFS3"]

with open("dfp_ids.csv", "w", newline="") as f:
    w = csv.writer(f)
    w.writerow(["ticker", "document_id", "name", "year"])
    for t in SAMPLE:
        data = requests.get(
            f"{BASE}/v1/documents",
            headers=H,
            params={"ticker": t, "type": "DFP", "year": 2024, "perPage": 20},
            timeout=30,
        ).json()["data"]
        for d in data:
            w.writerow([t, d["id"], d["name"], d.get("year")])

Store UUIDs in the replication package; re-download files when reviewers ask.

Plans that matter for labs

Need Note
List + download PDFs Available on paid keys with rate limits
Page-level markdown extract Pro credits; Student returns 403 for extract
Full-market panel Only companies in the ingested corpus — not "all Brazilian issuers"

Quant-style pipelines: Brazil filings for quant research. Policy angle: Regulatory data research.

Current limitations

  • Ingestion lag — not real-time with the CVM portal.
  • perPage max 50; paginate for large pulls.
  • Extraction is async via HTTPS callback (no sync extract endpoint).
  • Do not publish API keys in student repos; use env vars / secrets.

Next steps

Ready to integrate?

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