CVM Dados Abertos CSV Dumps vs Per-Filing API

Official dados abertos publishes large CSV/ZIP packages. Developers searching for a CVM CSV dump API often mean: “I have tables — how do I also get the PDF for one company?” That is the gap between bulk ETL and a per-filing product API like apicvm.

This page focuses on the CSV/ZIP workflow specifically (complementing the broader open data vs API comparison).

The CSV / ZIP workflow

Typical research ETL:

  1. Download a yearly ZIP from dados.cvm.gov.br
  2. Unzip dozens of CSVs
  3. Join company codes to tickers
  4. Filter rows for your universe
  5. Separately hunt PDFs if you need the filing narrative

This shines for cross-sectional panels and academic reproducibility.

Friction for application code

CSV/ZIP strength Application friction
Millions of rows offline Slow path to “one PDF now”
Free, official Schema and file layout drift
Great for Spark/dbt Weak as a request/response API
Full-history batches Poor fit for agent tool calls

If your feature is GET filing(ticker, type, year), CSV dumps force you to build that API yourself.

Per-filing API workflow (apicvm)

export APICVM_KEY='apicvm_...'
export APICVM_URL='https://apicvm.dev'

curl -H "Authorization: Bearer $APICVM_KEY" \
  "$APICVM_URL/v1/companies/resolve?query=ABEV3&by=ticker"

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

Then GET /v1/documents/:id/file for the PDF, or enqueue text extraction when you need markdown pages.

When to use each

Prefer CSV/ZIP dumps Prefer per-filing API
Universe-wide econometrics Single-issuer product paths
You already run batch ETL Agents / microservices
Tabular line items only Original PDF + citations
Zero API cost required Stable document UUIDs

Hybrid is common: CSV for panels, apicvm for document retrieval and extraction.

Current limitations

  • apicvm covers ingested DFP/ITR/FRE, not every open-data dataset.
  • Dumps may include series apicvm does not expose (funds, etc.).
  • Neither path is “real-time CVM” by default.

Next steps

Ready to integrate?

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