Brazil CVM Filings for Due Diligence

M&A analysts, legal teams, and corporate finance professionals conducting Brazil filings due diligence on B3-listed targets need the same CVM PDFs a human reviewer would open — at scale, with stable document IDs. apicvm provides programmatic access to DFP, ITR, and FRE for that evidence layer. It is a data access API, not a due diligence platform or legal advisor.

The persona

Typical users:

  • M&A / corp dev — screen acquisition targets for litigation, contingencies, and governance red flags
  • Legal / compliance — archive original filings with citation-ready metadata
  • Investment professionals — compare risk disclosures across a short list before deeper work

The job is document retrieval and search, not pass/fail legal conclusions.

The problem

Brazilian due diligence on public issuers pulls from multiple CVM filing types:

  • FRE — risk factors, legal contingencies, related parties, governance
  • DFP — annual audited financials and footnotes
  • ITR — quarterly updates between annual cycles

The CVM portal works for one company and one section. A deal screen across five tickers becomes a folder of inconsistently named PDFs with no API id to refresh next quarter. Bulk open-data dumps lack a clean "give me this FRE contingencies section" call.

Solution: due diligence flow

Target ticker(s)
  → GET /v1/companies/resolve — confirm issuer (name, CNPJ)
  → GET /v1/documents — FRE for risks/governance; DFP/ITR for financials
  → GET /v1/documents/:id/file — store original PDF for audit trail
  → optional POST /v1/document-text-extractions — searchable text (Pro plan)

Step 1 — Resolve the target

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

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

Step 2 — List FRE for risk and contingency sections

curl -H "Authorization: Bearer $APICVM_KEY" \
  "$APICVM_URL/v1/documents?ticker=VALE3&type=FRE&year=2024&name=Conting&perPage=20"

Use name filters or document prefixes to narrow FRE sections. See Analyze Brazil FRE governance and risks for section-level patterns.

Step 3 — Pull financial statements

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

curl -H "Authorization: Bearer $APICVM_KEY" \
  "$APICVM_URL/v1/documents?ticker=VALE3&type=ITR&year=2025&perPage=10"

Step 4 — Download the audit file

curl -OJ -H "Authorization: Bearer $APICVM_KEY" \
  "$APICVM_URL/v1/documents/<document-id>/file"

Downloads do not consume extraction credits.

Python: multi-ticker FRE screen

Screen a short list for litigation and contingency mentions before deeper review:

import os, requests

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

for ticker in TARGETS:
    company = requests.get(
        f"{BASE}/v1/companies/resolve",
        headers=H,
        params={"query": ticker, "by": "ticker"},
    ).json()

    fre = requests.get(
        f"{BASE}/v1/documents",
        headers=H,
        params={"ticker": ticker, "type": "FRE", "year": 2024, "name": "Conting", "perPage": 20},
    ).json()

    print(f"{ticker} — {company.get('name', '?')}: {len(fre['data'])} FRE contingency docs")
    for doc in fre["data"][:3]:
        print(f"  {doc['id']}: {doc['name']}")

For searchable text across long FRE files, enqueue async extraction with a callback URL. Extraction requires a Pro plan and consumes credits per page.

What apicvm does not provide

  • Not legal advice — apicvm delivers documents; interpretation is your team's responsibility.
  • Not real-time material facts — IPE / fatos relevantes are outside MVP scope; see IPE.
  • Not private company registry — public issuers only.
  • Not market prices or news — regulatory filings, not trading data.
  • Not a complete due diligence platform — no workflow engine, scoring, or policy rules.

Current limitations

  • Corpus coverage lags the live CVM portal — not every category on the portal is filterable via API.
  • Text extraction is async via callback; not instant full-text search.
  • Extraction costs credits (1 per page) on Pro; Student plan cannot extract.
  • Not all CVM document types are ingested — CAD, FCA, and others are educational-only today.

Next steps

Ready to integrate?

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