Manual CVM Portal Downloads vs apicvm API
Analysts and developers often download Brazilian filings manually from the CVM portal — search company, pick document type, click PDF. It works for one-off research. It breaks down when you need repeatable CVM portal download API behavior: same query tomorrow, same result shape, callable from code or an agent.
apicvm automates the lookup and download steps. This page compares manual portal workflows with the API — without claiming manual access is always wrong.
Manual portal workflow
Typical steps on sistemas.cvm.gov.br or related CVM interfaces:
- Search by company name or CNPJ
- Navigate filing categories (DFP, ITR, FRE)
- Identify the correct year and document
- Download PDF to local disk
- Repeat for each company and period
Works well when:
- You need one or two filings for ad-hoc review
- A human verifies the correct file before analysis
- No automation or audit trail is required
Pain points at scale:
| Issue | At scale |
|---|---|
| No batch mode | 50 tickers × 3 types × 5 years = hundreds of clicks |
| Inconsistent file names | Hard to organize in a data lake |
| No stable IDs | "the PDF I downloaded Tuesday" is not reproducible |
| Language/UI friction | Non-Portuguese speakers slow down |
| Agent incompatibility | LLM tools cannot click portals |
apicvm programmatic workflow
Replace clicks with HTTP calls:
export APICVM_KEY='apicvm_...'
export APICVM_URL='https://apicvm.dev'
# 1. Resolve
curl -H "Authorization: Bearer $APICVM_KEY" \
"$APICVM_URL/v1/companies/resolve?query=WEGE3&by=ticker"
# 2. List
curl -H "Authorization: Bearer $APICVM_KEY" \
"$APICVM_URL/v1/documents?ticker=WEGE3&type=DFP&year=2024&perPage=20"
# 3. Download
curl -OJ -H "Authorization: Bearer $APICVM_KEY" \
"$APICVM_URL/v1/documents/<document-id>/file"
Every filing has a stable document.id (UUID). Re-run the same query months later for auditability.
Comparison table
| Dimension | Manual portal | apicvm API |
|---|---|---|
| Setup time | Zero | API key + HTTP client |
| Cost | Free | $9/month (see landing) |
| Reproducibility | Low | High (versioned /v1) |
| Batch / scheduled jobs | Impractical | Natural fit |
| Agent / LLM tools | Not callable | Designed for automation |
| Human file verification | Easy | Inspect name + dateRef in JSON first |
| Coverage | Live portal | Ingested corpus |
| Text extraction | Manual OCR | Async page markdown callbacks |
When manual still wins
- Spot-checking a single ambiguous filing before a board presentation
- Verifying apicvm list results match your expectation (good practice either way)
- Documents outside corpus not yet ingested by apicvm
Use manual download as validation, not as your production data plane.
When the API wins
- Research pipelines refreshing filings on a schedule
- Product features ("Download source filing" button)
- AI agents resolving tickers and fetching documents in a tool loop
- Cross-border teams building on HTTP contracts instead of Portuguese UI flows
See Download DFP and ITR filings for a step-by-step API guide.
Current limitations
- apicvm does not mirror every CVM portal screen — only DFP/ITR/FRE in the ingested corpus.
- Not real-time — filings appear after ingestion processing.
- Manual portal may show filings before they reach apicvm.
- API requires HTTPS callbacks for text extraction in production.
Next steps
Ready to integrate?
Get an API key and start querying Brazilian CVM filings programmatically.