Access DFP and ITR Notes and Management Reports by Section Name
DFP (annual) and ITR (quarterly) filings from Brazilian public companies rarely arrive as one file. A single DFP cycle can include the standardized financial statements, explanatory notes, management report, fiscal council opinion, audit committee report, and director declarations — each a separate entry in the CVM document catalog.
If your pipeline needs footnotes or MD&A text, listing type=DFP&year=2024 without a name filter returns everything. apicvm lets you narrow to the annex you need before download or markdown extraction.
The problem
Financial analysis workflows often target specific annexes:
| Annex | Why it matters |
|---|---|
| Explanatory notes | Segment revenue, contingencies, debt covenants, related parties |
| Management report (relatório da administração) | Narrative on margins, strategy, one-off items |
| Audit committee report | Internal control and audit oversight commentary |
| Fiscal council report | Brazilian governance body review of financials |
| Quarterly performance comments (ITR) | Interim MD&A updates between annual cycles |
Without section filtering, you download large PDF packages and search manually — or run extraction on files you never query.
How DFP/ITR section names appear
CVM catalog name values for financial filings mix Portuguese labels and regulatory codes. Common patterns:
Demonstrações Financeiras— core financial statementsNotas Explicativas— explanatory notes to the financialsRelatório da Administração— management reportParecer do Conselho Fiscal— fiscal council opinionRelatório do Comitê de Auditoria— audit committee reportDeclaração— director or officer declarations
Exact strings vary by issuer and filing year. Banks like ITUB4 file many PDF sections per DFP cycle — counts can be much higher than a typical industrial issuer. Use partial name matches and inspect list results.
How apicvm helps
The name parameter on GET /v1/documents performs a partial match on catalog document names.
Find DFP notes for PETR4
export APICVM_KEY='apicvm_...'
export APICVM_URL='https://apicvm.dev'
curl -H "Authorization: Bearer $APICVM_KEY" \
"$APICVM_URL/v1/documents?ticker=PETR4&type=DFP&year=2024&name=Notas&perPage=20"
Review returned name values — pick the notes annex explicitly:
{
"data": [
{
"id": "660e8400-e29b-41d4-a716-446655440001",
"type": "DFP",
"year": 2024,
"name": "Notas Explicativas às Demonstrações Financeiras",
"dateRef": "2024-12-31"
}
]
}
Find management report
curl -H "Authorization: Bearer $APICVM_KEY" \
"$APICVM_URL/v1/documents?ticker=RADL3&type=DFP&year=2024&name=Relatório da Administração"
ITR quarterly comments
curl -H "Authorization: Bearer $APICVM_KEY" \
"$APICVM_URL/v1/documents?ticker=VALE3&type=ITR&year=2024&name=Comentário&perPage=20"
ITR filings use dateRef for quarter-end dates — combine year and dateRef when multiple quarters return.
Python: notes and MD&A fetcher
import os, requests
BASE = os.environ["APICVM_URL"]
H = {"Authorization": f"Bearer {os.environ['APICVM_KEY']}"}
FINANCIAL_SECTIONS = {
"notes": "Notas",
"management_report": "Relatório da Administração",
"audit_committee": "Comitê de Auditoria",
"fiscal_council": "Conselho Fiscal",
}
def find_financial_sections(ticker: str, doc_type: str, year: int) -> dict[str, list]:
sections = {}
for key, name_prefix in FINANCIAL_SECTIONS.items():
resp = requests.get(
f"{BASE}/v1/documents",
params={
"ticker": ticker,
"type": doc_type,
"year": year,
"name": name_prefix,
"perPage": 20,
},
headers=H,
)
resp.raise_for_status()
sections[key] = resp.json()["data"]
return sections
sections = find_financial_sections("RADL3", "DFP", 2024)
for theme, docs in sections.items():
for doc in docs:
print(f"{theme}: {doc['name']} ({doc['id']})")
Queue POST /v1/document-text-extractions only for the sections your footnote parser or RAG index needs.
Footnote analysis workflow
Earnings quality and segment analysis depend on notes, not just the face financial statements:
1. GET /v1/documents?ticker=RADL3&type=DFP&year=2024&name=Notas
2. Pick notes document ID
3. POST /v1/document-text-extractions → receive page markdown via callback
4. Query: segment revenue mix, tax contingencies, non-recurring items, lease adjustments
5. Cross-check management report for narrative on same themes
See extract financial footnotes from DFP for prompt patterns once text is indexed.
Banks and high file counts
Large banks file many DFP sections per cycle. Example pattern from ITUB4 integrations:
# List all DFP 2024 files first to discover names
curl -H "Authorization: Bearer $APICVM_KEY" \
"$APICVM_URL/v1/documents?ticker=ITUB4&type=DFP&year=2024&perPage=50"
# Then filter to financial statements or notes
curl -H "Authorization: Bearer $APICVM_KEY" \
"$APICVM_URL/v1/documents?ticker=ITUB4&type=DFP&year=2024&name=Demonstrações"
Use perPage=50 (maximum) and paginate with page= when exploring unfamiliar issuers.
Current limitations
- No structured footnote parser — apicvm returns page-level markdown, not tagged note objects like
Note 12 — Segment Information. Your pipeline segments and classifies text within pages. - Name strings are issuer-specific — partial matches help, but first-time issuers may require a discovery list call without
name. - Notes may span multiple files — some companies split notes across annexes; review all matches.
- ITR quarter disambiguation — use
dateRefwhen listing ITR to pick the correct quarter. - Corpus coverage — documents must be ingested in Hold; verify with a list call.
Next steps
Ready to integrate?
Get an API key and start querying Brazilian CVM filings programmatically.