Brazil CVM Filings for Competitor Monitoring
IR, strategy, and competitive-intelligence teams need primary Brazil filings competitor monitoring packs — not only news clips. apicvm lets you resolve peer tickers, list DFP/ITR/FRE documents, and archive UUIDs. It is not a news feed, alert SaaS, or market-data terminal.
The persona
- Investor relations analysts tracking peer disclosure cadence
- Corporate strategy teams comparing annual DFP packages
- Competitive intel associates pulling FRE risk / business-model sections
The problem
| Monitoring task | Typical CVM source |
|---|---|
| Annual peer statements | DFP |
| Quarterly updates | ITR |
| Business description, risks, related parties | FRE |
Manual portal downloads across a peer set are slow and hard to cite in strategy decks.
Solution flow
Peer ticker list
→ GET /v1/companies/resolve
→ GET /v1/documents (type + year)
→ optional name= filter on FRE sections
→ GET /v1/documents/:id/file
→ store UUID in the competitive archive
export APICVM_KEY='apicvm_...'
export APICVM_URL='https://apicvm.dev'
curl -H "Authorization: Bearer $APICVM_KEY" \
"$APICVM_URL/v1/documents?ticker=RAIL3&type=ITR&year=2024&perPage=20"
For broader watchlists, see Multi-ticker CVM filings watchlist.
Example: peer pack job
import os, requests
BASE = os.environ["APICVM_URL"]
H = {"Authorization": f"Bearer {os.environ['APICVM_KEY']}"}
PEERS = ["RAIL3", "CCRO3", "ECOR3"] # logistics / concessions peers — resolve each
for t in PEERS:
r = requests.get(
f"{BASE}/v1/companies/resolve",
headers=H,
params={"query": t, "by": "ticker"},
timeout=30,
)
if r.status_code == 404:
print(t, "not resolved — skip")
continue
for doc_type in ("DFP", "ITR"):
docs = requests.get(
f"{BASE}/v1/documents",
headers=H,
params={"ticker": t, "type": doc_type, "year": 2024, "perPage": 20},
timeout=30,
).json()["data"]
print(t, doc_type, [d["id"] for d in docs[:2]])
Skip tickers outside the ingested corpus. Do not invent peer coverage.
FRE section skim
When comparing risk narratives, filter FRE by name:
curl -H "Authorization: Bearer $APICVM_KEY" \
"$APICVM_URL/v1/documents?ticker=RAIL3&type=FRE&year=2024&name=Risco&perPage=20"
Section-level filters are coverage-dependent. See Filter by section name and What is FRE.
Current limitations
- No push alerts when a new filing appears — you poll or schedule a job.
- Not a substitute for material-fact news wires.
- Markdown extraction is async (Pro) via callback; Student keys cannot extract.
perPagemax 50.
Next steps
Ready to integrate?
Get an API key and start querying Brazilian CVM filings programmatically.