Formulário de Referência (FRE): Brazil CVM Reference Form Explained
Formulário de Referência — abbreviated FRE — is the annual reference form Brazilian public companies file with the CVM. It describes who the company is, how it is governed, and what risks it faces. When you list CVM documents for a ticker you will see FRE alongside DFP and ITR; for company research, due diligence, and NLP over regulatory text, FRE is the context that financial statements alone do not provide.
This guide explains what the Formulário de Referência contains, how FRE differs from DFP/ITR, and how to fetch it with apicvm.
The problem
Developers encounter FRE in document metadata but official CVM documentation is mostly in Portuguese. Without context you might:
- Skip FRE and miss governance, compensation, and risk disclosures
- Confuse FRE with annual financial statements (that is DFP)
- Manually hunt PDFs on CVM portals instead of filtering
type=FREin an API
You need a clear definition and a programmatic fetch path.
What is FRE (Formulário de Referência)?
FRE is a standardized disclosure form that Brazilian publicly traded companies file with the CVM. It is updated annually (and when material changes occur). Typical sections include:
- Company overview — business description, segments, competitive position
- Share capital and control — ownership structure, major shareholders
- Management and board — executives, directors, compensation policies
- Risk factors — operational, regulatory, market risks
- Legal and regulatory matters — litigation, environmental, labor issues
- Other disclosures — related-party transactions, dividend policy
Think of FRE as a structured company handbook for investors — complementary to the numbers in DFP/ITR.
FRE vs DFP vs ITR
| FRE | DFP | ITR | |
|---|---|---|---|
| Focus | Company profile, governance, risks | Annual financial statements | Quarterly financials |
| Cadence | Annual (+ updates) | Annual | Quarterly |
| Primary use | Research, risk, NLP context | Financial modeling | Interim monitoring |
| apicvm filter | type=FRE |
type=DFP |
type=ITR |
For a complete picture of WEGE3 or any B3 ticker, fetch all three types for the same year when available.
List FRE filings via API
export APICVM_KEY='apicvm_...'
export APICVM_URL='https://apicvm.dev'
curl -H "Authorization: Bearer $APICVM_KEY" \
"$APICVM_URL/v1/documents?ticker=WEGE3&type=FRE&year=2024&perPage=20"
You can also search by CNPJ or company name:
curl -H "Authorization: Bearer $APICVM_KEY" \
"$APICVM_URL/v1/documents?companyName=WEG&types=FRE&perPage=20"
Each result includes id, year, dateRef, and name — pick the document you need explicitly.
Download FRE PDF
curl -OJ -H "Authorization: Bearer $APICVM_KEY" \
"$APICVM_URL/v1/documents/<document-id>/file"
FRE documents are often long (hundreds of pages). For text pipelines, prefer async extraction over local PDF parsing.
Python example
import os
import requests
BASE = os.environ["APICVM_URL"]
H = {"Authorization": f"Bearer {os.environ['APICVM_KEY']}"}
def get_fre_filings(ticker: str, year: int | None = None) -> list:
params = {"ticker": ticker, "type": "FRE", "perPage": 50}
if year:
params["year"] = year
r = requests.get(f"{BASE}/v1/documents", headers=H, params=params)
r.raise_for_status()
return r.json()["data"]
filings = get_fre_filings("WEGE3", year=2024)
print(f"Found {len(filings)} FRE filing(s) for WEGE3")
if filings:
doc = filings[0]
print(f" {doc['year']} — {doc['name']} (id={doc['id']})")
# Download
r = requests.get(f"{BASE}/v1/documents/{doc['id']}/file", headers=H, stream=True)
r.raise_for_status()
with open(f"wege3-fre-{doc['year']}.pdf", "wb") as f:
for chunk in r.iter_content(8192):
f.write(chunk)
Use cases for developers
Company profile APIs — Extract FRE sections to populate issuer metadata beyond ticker and sector.
Risk scoring — FRE risk factor sections feed NLP classifiers or LLM summarization for ESG and governance products.
Agent tools — AI agents answering "Who controls PETR4?" or "What are Vale's main risks?" need FRE, not just ITR numbers.
Cross-filing analysis — Join FRE governance data with DFP financials in a research pipeline:
for doc_type in ("FRE", "DFP", "ITR"):
docs = requests.get(
f"{BASE}/v1/documents",
headers=H,
params={"ticker": "WEGE3", "type": doc_type, "year": 2024, "perPage": 10},
).json()["data"]
print(f"{doc_type}: {len(docs)} docs")
For markdown extraction suitable for LLMs, see Extract Text from CVM PDFs for AI Agents.
Current limitations
- Section structure varies — FRE content follows CVM norms but layout differs by company; apicvm delivers the PDF, not parsed sections.
- Corpus gaps — FRE is available only for companies and years in the ingested database.
- Language — Original filings are in Portuguese; extraction preserves source language.
- Not a substitute for DFP — FRE describes the company; DFP/ITR contain the financial statements.
Next steps
- List Formulário de Referência (FRE) via API
- CVM API overview
- Read the API docs for filters, pagination, and errors
- Get an API key
- Download DFP and ITR filings — financial statement types
- Access CVM filings with Python — end-to-end tutorial
Ready to integrate?
Get an API key and start querying Brazilian CVM filings programmatically.