Brazil Stock-Based Compensation Disclosures API: Track RSU and Option Plans
A Brazil stock-based compensation disclosures API in the research sense is not a cap-table SaaS, a proxy-voting terminal, or an automatic dilution calculator. It is access to the CVM filings where Brazilian issuers disclose equity incentive plans, share-based pay expense, and grant policy — the PlanoRemuneracaoBaseadoAcoes chapter in FRE, explanatory notes in DFP and ITR (Informações Trimestrais, not US income tax returns), and event PDFs when a new plan or material grant is disclosed. apicvm lets you list those rows by ticker, download the original filing, and diff new document.id values on a governance or earnings-quality watchlist.
This guide shows which type values to query, FRE section name tokens for equity plans, keyword heuristics for event filings, and how this hub differs from management change monitoring, related-party transaction hubs, and pension benefit notes.
The problem
Equity pay surveillance splits into three stacks that English search results often merge:
- Market data terminals — sometimes show parsed share count or basic SBC expense. They rarely store the issuer’s regulatory PDF with vesting rules, strike mechanics, and board approval narrative.
- Periodic packages —
DFP,ITR, andFREwith CPC 10 / IFRS 2 style share-based payment notes,FREsection 8.4 equity plans, and compensation committee disclosures. Essential for proxy and earnings-quality work, but you still need ticker-first access and stable file IDs. - Event disclosures — fatos relevantes when a new long-term incentive plan, extraordinary grant, or plan amendment is disclosed outside the normal filing calendar.
Scraping the CVM portal works for one ticker and breaks on a diversified 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 — scoped to stock-based compensation workflows.
For company-specific walkthroughs, see FRE governance compensation sections or PGMN3 executive bonus and share-based pay on FRE. This guide focuses on the API list-and-download pattern across periodic and event layers.
Which filing type carries equity incentive detail?
Brazilian issuers do not expose a dedicated type=RSU in the apicvm document list. Equity pay detail usually appears under:
type |
Role in stock-based compensation workflows |
|---|---|
ITR / DFP |
Periodic financials — share-based payment expense, fair value assumptions, outstanding options/RSUs |
FRE |
Annual reference form — PlanoRemuneracaoBaseadoAcoes-8_4 and related compensation chapters |
FATO_RELEVANTE |
Material fact when a new plan, large grant, or plan revision is disclosed |
COMUNICADO_AO_MERCADO |
Occasional market communication when incentive-driven provisions affect earnings |
Practical rule: pull FRE once per year with a name filter for PlanoRemuneracaoBaseadoAcoes (see filter CVM filings by section name), list latest ITR/DFP during 3Q ITR season, narrow annex rows with name filters for notes (notas, notes, explicativas), and poll FATO_RELEVANTE for equity keywords. After download, search PDF text for opcao, opção, RSU, stock, acao, ação, remuneracao, remuneração, equity, dilui, vesting, or CPC 10 / IFRS 2 references.
Issuer titles vary: some names bury grant tables only inside note PDFs without event-layer keywords. Zero rows in a given year does not prove the issuer has no equity plan — see limitations below.
How apicvm helps
- Resolve the issuer —
GET /v1/companies/resolve - List periodic packages —
GET /v1/documentswithtype=ITRortype=DFPandyear - Pull FRE equity plan section —
GET /v1/documentswithtype=FREandname=PlanoRemuneracaoBaseadoAcoes - List event filings —
GET /v1/documentswithtype=FATO_RELEVANTE - Scope with
dateRef; sort withfield=dateRef&order=desc - Download the PDF —
GET /v1/documents/:id/file(no extraction credits) - Optional (Pro): page-level markdown —
POST /v1/document-text-extractionswith 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 FRE equity plan section for one ticker
curl -H "Authorization: Bearer $APICVM_KEY" \
"$APICVM_URL/v1/documents?ticker=WEGE3&type=FRE&year=2025&name=PlanoRemuneracaoBaseadoAcoes&perPage=5&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.
Step 2: Narrow to explanatory notes (SBC tables live here)
curl -s -H "Authorization: Bearer $APICVM_KEY" \
"$APICVM_URL/v1/documents?ticker=WEGE3&type=ITR&year=2025&perPage=50&name=Notas" \
| jq '.data[] | {id, type, dateRef, name}'
Combine with access DFP and ITR notes by section name when your catalog uses English or abbreviated tokens.
Step 4: Download the filing PDF
DOC_ID=123456
curl -H "Authorization: Bearer $APICVM_KEY" \
"$APICVM_URL/v1/documents/$DOC_ID/file" -o filing.pdf
Store document.id in your warehouse. Re-download when the issuer replaces a filing; do not assume name alone is a stable key.
Step 5: Watchlist poll (Python sketch)
import os, re, requests
BASE = os.environ["APICVM_URL"]
KEY = os.environ["APICVM_KEY"]
HEADERS = {"Authorization": f"Bearer {KEY}"}
WATCH = ["WEGE3", "PGMN3", "RADL3", "ITUB4"]
EQUITY_RE = re.compile(
r"opcao|opção|RSU|stock|acao|ação|remuneracao|remuneração|equity|incentivo|plano de ac",
re.I,
)
seen = set()
def list_events(ticker):
r = requests.get(
f"{BASE}/v1/documents",
headers=HEADERS,
params={
"ticker": ticker,
"types": "FATO_RELEVANTE,COMUNICADO_AO_MERCADO",
"year": 2025,
"perPage": 50,
"field": "dateRef",
"order": "desc",
},
timeout=60,
)
r.raise_for_status()
return r.json().get("data") or []
for ticker in WATCH:
for doc in list_events(ticker):
if doc["id"] in seen:
continue
if not EQUITY_RE.search(doc.get("name") or ""):
continue
seen.add(doc["id"])
print(f"EQUITY {ticker} {doc['dateRef']} {doc['name'][:70]}")
Wire this into GitHub Actions CVM filings monitor or extend the diff pattern from Brazil material facts monitoring API. For NLP over downloaded PDFs, see extract text from CVM PDFs for AI agents.
Where equity pay disclosures sit in the filings stack
| Layer | Types | Stock-based compensation relevance |
|---|---|---|
| Periodic | ITR, DFP |
Share-based payment expense, outstanding grants, fair value assumptions |
| Reference | FRE |
Equity incentive plan rules (PlanoRemuneracaoBaseadoAcoes-8_4), committee policy |
| Events | FATO_RELEVANTE, COMUNICADO_AO_MERCADO |
New plans, extraordinary grants, plan amendments |
Brazil regulatory filings API explains the full layer map. Pair periodic note pulls with quarterly ITR monitoring during 3Q ITR season (typically Oct–Nov). When grants involve affiliates, cross-check Brazil related party transaction disclosures API. When board turnover coincides with plan redesign, see Brazil management change disclosures API. When equity pay sits next to post-employment benefits, see Brazil pension benefit disclosures API.
Current limitations
- Documents, not parsed cap tables — apicvm does not return fully diluted share count, automatic grant fair value, or vesting schedules parsed from tables.
- Keyword filters are heuristic —
nametokens help on the event layer; many CPC 10 tables appear only inside periodic PDF notes without matching keywords. - 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. - ITR disambiguation — Informações Trimestrais (CVM quarterly financials), not US income tax return software.
Next steps
- Read the API docs
- Get an API key
- Filter CVM filings by section name — FRE compensation chapters
Ready to integrate?
Get an API key and start querying Brazilian CVM filings programmatically.