Brazil Merger and Acquisition Disclosures API: Track Incorporação and Deal Notices from CVM Filings

A Brazil merger acquisition disclosures API in the compliance sense is not a deal database or exchange matching engine. It is access to the CVM filings that announce incorporação, aquisição, cisão (spin-off), joint ventures, and other control or asset transactions — the PDFs issuers file on the IPE layer when a transaction becomes material. Term sheets and news wires move faster than your archive; apicvm returns the regulatory document you can cite in surveillance, corp dev research, or NLP pipelines.

This guide shows which type values to query, how to list and download M&A-related notices on a watchlist, and how event-layer monitoring differs from M&A diligence on DFP and FRE and from tender offers (OPA).

The problem

Brazilian M&A monitoring splits into three stacks that English search results often merge:

  1. Market and news — price, premium, rumored targets. Useful for trading, not for the filing text that defines consideration, conditions, and regulatory references.
  2. Periodic diligence — contingencies, related parties, and contracts in DFP, ITR, and FRE. Essential for dataroom-style review, but lagging for new deals.
  3. Event disclosures — fatos relevantes when a board approves an acquisition, a JV closes, or a spin-off is announced, plus avisos aos acionistas when assemblies frame the transaction for holders.

Scraping the CVM portal works for one ticker and breaks on a multi-name watchlist. Bulk open-data ZIPs are dataset-oriented, not ticker-first. You want GET /v1/documents with stable document.id, then GET /v1/documents/:id/file for the original PDF — the same pattern as Brazil material facts monitoring API, scoped to deal announcements.

For equity issuance tied to M&A financing, see Brazil follow-on offering disclosures API. For mandatory takeover bids, see Brazil tender offer disclosures API.

Which filing type carries M&A events?

Brazilian issuers do not expose a dedicated type=MERGER in the apicvm document list. Deal events usually surface under:

type Role in M&A workflows
FATO_RELEVANTE Material fact when a transaction is signed, amended, closed, or materially updated
AVISO_AOS_ACIONISTAS Notice to shareholders — assembly convocation, exchange ratios, and formal legal text for incorporação or cisão

Practical rule: poll FATO_RELEVANTE on active watchlists, add AVISO_AOS_ACIONISTAS when you track assembly-driven restructurings, then filter rows by name keywords (Aquisicao, aquisição, Incorporacao, incorporação, Cisao, cisão, joint-venture, Desincorporacao) before downloading PDFs. After download, search PDF text for incorporação, aquisição de controle, cisão, or desincorporação.

On VALE3 for calendar year 2025, the demo corpus returned multiple FATO_RELEVANTE rows whose name includes aquisicao or joint-venture (demo API, queried 2026-09-17). Banks and acquisitive retailers follow the same list-and-download workflow when those tokens appear. Zero rows in a given year does not prove no M&A occurred — see limitations below.

How apicvm helps

  1. Resolve the issuer — GET /v1/companies/resolve
  2. List event filings — GET /v1/documents with type=FATO_RELEVANTE (optionally add AVISO_AOS_ACIONISTAS)
  3. Scope with year and optional dateRef; sort with field=dateRef&order=desc
  4. Download the PDF — GET /v1/documents/:id/file (no extraction credits)
  5. Optional (Pro): page-level markdown — POST /v1/document-text-extractions with async callback

Auth: Authorization: Bearer or X-API-Key. Try VALE3 without a key via the demo API.

Setup

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

Step 1: List material facts for one ticker

curl -H "Authorization: Bearer $APICVM_KEY" \
  "$APICVM_URL/v1/documents?ticker=VALE3&type=FATO_RELEVANTE&year=2025&perPage=50&field=dateRef&order=desc"

Response rows include stable id, dateRef, name, and nested company metadata. Use id as your cache key — not name, which can be long and encoding-sensitive.

Paginate with page= when meta.lastPage > 1. perPage maxes at 50.

Step 3: Download an M&A notice PDF

curl -H "Authorization: Bearer $APICVM_KEY" \
  -o ma-notice.pdf \
  "$APICVM_URL/v1/documents/<document-id>/file"

Download does not consume extraction credits.

Example: Python watchlist for M&A filings

Poll material facts across a corp-dev watchlist. Persist seen in your database in production.

import os, time, requests, re
from datetime import datetime

BASE = os.environ["APICVM_URL"]
H = {"Authorization": f"Bearer {os.environ['APICVM_KEY']}"}
WATCH = ["VALE3", "RADL3", "SMFT3", "PETR4", "ABEV3"]
YEAR = datetime.utcnow().year
MA_RE = re.compile(
    r"aquisicao|aquisição|incorporacao|incorporação|cisao|cisão|"
    r"joint-venture|desincorporacao|desincorporação",
    re.I,
)
seen = set()  # load from your store on startup

def list_events(ticker):
    r = requests.get(
        f"{BASE}/v1/documents",
        headers=H,
        params={
            "ticker": ticker,
            "types": "FATO_RELEVANTE,AVISO_AOS_ACIONISTAS",
            "year": YEAR,
            "perPage": 50,
            "field": "dateRef",
            "order": "desc",
        },
    )
    if r.status_code == 429:
        time.sleep(5)
        return list_events(ticker)
    r.raise_for_status()
    return r.json()["data"]

for ticker in WATCH:
    for doc in list_events(ticker):
        if doc["id"] in seen:
            continue
        if not MA_RE.search(doc.get("name") or ""):
            continue
        seen.add(doc["id"])
        print(f"M&A {ticker} {doc['dateRef']} {doc['name'][:70]}")

Wire this into GitHub Actions or extend the diff pattern from Brazil material facts monitoring API.

Where M&A events sit in the filings stack

Layer Types M&A relevance
Events FATO_RELEVANTE, AVISO_AOS_ACIONISTAS Deal signing, closing, assembly notices
Control bids FATO_RELEVANTE, AVISO_AOS_ACIONISTAS OPA — see tender offer hub
Statements DFP, ITR, FRE Post-deal contingencies and pro forma context — see M&A research use case

Brazil regulatory filings API explains the full layer map. During earnings windows, pair this hub with Track Brazil earnings season for ITR alongside event filings.

Current limitations

  • Documents, not a deal room — apicvm does not replace virtual data rooms or legal counsel review.
  • Keyword filters are heuristic — name tokens help; false negatives are possible if issuers use unusual titles.
  • Polling, not push — no webhook when CVM publishes a new fact. Schedule polls and diff document.id.
  • Ingestion lag — sync is not real-time. A notice may appear on the portal before it is in the corpus.
  • Corpus coverage — not every issuer or period is present. Validate against the portal for production compliance use cases.
  • Demo scope — /v1/demo/* is limited to VALE3. Other tickers need a production key.

Next steps

Ready to integrate?

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