Brazil Company Financials (CVM DFP/ITR, B3) avatar

Brazil Company Financials (CVM DFP/ITR, B3)

Pricing

from $7.00 / 1,000 company periods

Go to Apify Store
Brazil Company Financials (CVM DFP/ITR, B3)

Brazil Company Financials (CVM DFP/ITR, B3)

Standardized financial statements of Brazilian listed companies from CVM open data (DFP annual, ITR quarterly): revenue, EBIT, net income, assets, cash, debt, equity, operating cash flow, margins, net debt, ROE and isolated quarters. Search by B3 ticker, CNPJ or CVM code.

Pricing

from $7.00 / 1,000 company periods

Rating

0.0

(0)

Developer

br_data_hub

br_data_hub

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Get standardized financial statements of Brazilian listed companies straight from the official open data of CVM (Comissão de Valores Mobiliários, Brazil's SEC): the annual statements (DFP) and the quarterly ones (ITR). Ask for a B3 ticker, a CNPJ or a CVM code and the years you want; get one clean row per company and period, ready for a spreadsheet, a model or an AI agent.

No scraping of investment websites: every number comes from the filings companies send to CVM, mapped by CVM account code, with a link back to the filing.

What you get per company and period

  • Income statement: net revenue (3.01), gross profit (3.03), EBIT (3.05), financial result (3.06), net income (3.11) and the part attributable to the parent company
  • Balance sheet: total assets, cash and equivalents, short-term financial investments, short- and long-term loans and financing, equity
  • Cash flow: operating cash flow (6.01)
  • Computed: gross, EBIT and net margins, gross debt, net debt, ROE
  • Quarters: isolated quarter values computed from the year-to-date ITR figures, and Q4 = annual DFP minus 9 months; year-to-date values stay in ytd
  • Traceability: consolidated or individual basis, filing version, date received by CVM, link to the filing and the CVM account code behind every metric (sourceAccounts)

Consolidated vs individual

By default the Actor uses the consolidated statements, and falls back to the individual (parent-only) ones when a company has no subsidiaries and files no consolidated statements. The basis field always says which one you got.

Banks and insurers

Banks and insurers use different charts of accounts. The Actor detects them (chartOfAccounts: commercial, bank or insurance) and maps net income, equity, total assets, cash and operating cash flow to the right accounts (for example, bank net income at 3.09 or 3.11, insurer net income at 3.13). Metrics that have no comparable meaning are left empty instead of being guessed, and the row is flagged with standardized: false plus a note. For example, a bank has no gross profit, EBIT or "debt".

Restatements

When a company refiles a statement, CVM keeps every version. The Actor always uses the latest version (filingVersion), and the period figures always come from the filing for that period, not from comparatives in later filings.

Input

FieldDescription
companiesB3 tickers (PETR4, or the root PETR), CNPJs (33.000.167/0001-01) or CVM codes (9512).
yearsFiscal years, e.g. [2023, 2024, 2025]. DFP starts in 2010, ITR in 2011.
statementTypeannual (DFP), quarterly (ITR Q1 to Q3 plus derived Q4) or both.
basisauto (consolidated first), consolidated or individual.
proxyConfigurationOptional. Only needed if CVM refuses connections from Apify's servers (see Data source); use Apify Proxy with country Brazil.

Default input: PETR4, VALE3, ITUB4, year 2025, annual. It is expected to finish in 1 to 2 minutes.

CVM publishes one file per year with all companies, so the run time depends on the number of years, not on the number of companies: asking for 30 companies costs about the same compute as asking for one.

Tickers

Tickers are matched to CNPJs with a table built from CVM's own open data (the securities listed in each company's Formulário Cadastral, FCA). Source, license and generation date are in src/data/tickers.meta.json; tickers not in the bundled table are looked up at run time in the latest FCA file. If a ticker is not found, use the CNPJ or CVM code.

Output

All amounts in BRL (units, not thousands). Ratios are decimals (0.15 = 15%).

{
"companyName": "EMPRESA EXEMPLO INDUSTRIAL S.A.",
"ticker": "EXIN3",
"cnpj": "11.222.333/0001-81",
"cvmCode": "99999",
"period": "2024Q4",
"periodType": "quarter",
"periodStart": "2024-10-01",
"periodEnd": "2024-12-31",
"basis": "consolidated",
"chartOfAccounts": "commercial",
"standardized": true,
"revenue": 260000,
"ebit": 70000,
"netIncome": 37000,
"totalAssets": 5000000,
"equity": 1400000,
"grossDebt": 1000000,
"netDebt": 600000,
"operatingCashFlow": 80000,
"netMargin": 0.1423,
"roe": 0.0243,
"ytd": {"revenue": 1000000, "netIncome": 150000, "operatingCashFlow": 320000},
"quarterDerivation": "annual-minus-9m",
"statementSource": "DFP-ITR",
"filingVersion": 2,
"filingReceivedAt": "2025-04-15",
"sourceAccounts": {"revenue": "DRE 3.01", "ebit": "DRE 3.05", "netIncome": "DRE 3.11"},
"notes": []
}

(Example with a fictional company; field list shortened.)

Definitions:

  • grossDebt = loans and financing, current (2.01.04) + non-current (2.02.01). Under IFRS 16 some companies include lease liabilities in these accounts.
  • netDebt = gross debt − cash and equivalents − short-term financial investments.
  • roe = net income attributable to the parent (or net income) ÷ ending equity, for the period of the row (quarterly ROE is not annualized).
  • quarterDerivation: reported (3-month values filed by the company), ytd-difference (at least one value is year-to-date minus previous quarter, as the cash flow statement is only filed year-to-date) or annual-minus-9m (Q4).

How much does it cost?

Pay per event: company-period, charged once per row returned (one company × one period). Companies or years with no filing are not charged, and errors are free.

The standard Apify start event (apify-actor-start, charged by the platform, not by the code) stays at its default price.

Suggested price: US$ 0.01 per company-period (US$ 10 per 1,000). Ten years of annual data for one company cost US$ 0.10; one year of quarters plus the annual row costs US$ 0.05. How it was set:

  • Apify compute costs US$ 0.20 per compute unit (1 CU = 1 GB of memory for 1 hour). The Actor runs with 256 MB: it streams CVM's ZIP files from disk and peaks at about 70 MB.
  • Most of the time is spent downloading and reading CVM's yearly files (about 10 to 45 MB per year and type). Estimate per year requested: about 1 minute for annual data, 2 minutes with quarters, at 256 MB = 0.004 to 0.008 CU = US$ 0.0008 to 0.0017.
  • After Apify's 20% commission, US$ 0.01 leaves US$ 0.008 per row. The worst case, a run that returns a single row (one company, one year, annual), still leaves US$ 0.008 against about US$ 0.001 of compute; with quarters each year returns 5 rows (US$ 0.04 net) against about US$ 0.002.
  • Comparable Actors on the Store: one charges US$ 0.02 per account line of ITR filings (a single company-quarter has dozens of lines), and a B3 fundamentals Actor charges US$ 0.05 per stock for a current snapshot. Raw-line Actors at US$ 0.0005 per line exist, but leave mapping, banks, restatements and quarter isolation to you.

$0.01 per company period (company-period event, pay per event). Charged once per company and period returned with standardized statements. Errors are free.

  • apify-actor-start: $0.00005 (Charged once when a run starts (Apify synthetic event).)
You getFree tierBronze tier (10% off)Gold tier (30% off)
100 company periods$1.00$0.90$0.70
1,000 company periods$10.00$9.00$7.00
10,000 company periods$100.00$90.00$70.00

Discounts follow your Apify subscription tier: Bronze 10%, Silver 20%, Gold and above 30%. No subscription to this Actor and no charge for platform usage: you pay only for results. The Apify Free plan includes $5 of monthly credit, enough for about 500 company periods at the list price. You can cap the cost of any run with Maximum cost per run; the Actor stops when it is reached.

Data source

  • CVM open data portal (dados.cvm.gov.br): Cias Abertas: Documentos: DFP, ITR and FCA, plus Cadastro de Companhias Abertas. License: Open Database License (ODbL). Attribution: "Fonte: CVM – Portal Dados Abertos (dados.cvm.gov.br)". If you redistribute a database built from this output, ODbL requires attribution and sharing that database under the same license.
  • Not affiliated with CVM, B3 or any listed company. This Actor only reads CVM's public open-data files.
  • Some Brazilian government sites refuse connections from outside Brazil. If a run fails to download CVM files, the run stops with a clear message and nothing is charged; set proxyConfiguration to Apify Proxy with country Brazil and run again.
  • Data is as filed by the companies; CVM updates the files about weekly. Figures of a recently filed quarter appear after CVM's next update.
  • Personal data: the CVM registry includes the name, e-mail and phone of each company's investor relations officer. The Actor does not read or return them.
  • Not investment advice. Account mapping follows the CVM standard chart of accounts; companies may classify items differently, so check sourceAccounts and the filing link for decisions that matter.

More questions

Can I ask for PETR3 and PETR4, or just "PETR"?

Yes. Financial statements belong to the company, not to the share class, so the Actor matches tickers to the company's CNPJ and returns one set of rows per company: PETR3 and PETR4 in the same run give the same rows once. A 4-letter root such as PETR also works. If a ticker is not found in CVM's securities list, use the CNPJ or the CVM code; the unresolved entries are listed in the run's OUTPUT record.

How far back does the data go?

Annual statements (DFP) start in 2010 and quarterly ones (ITR) in 2011, which is where CVM's open data starts. Earlier years are skipped with a warning and nothing is charged for them.

When does a new quarter show up?

After the company files it with CVM and CVM refreshes its open data files, which happens about once a week. A year whose file CVM has not published yet is skipped with a warning; the other years of the run are returned normally.

Are the values in thousands of reais?

No. CVM files report values in units or thousands depending on the company; the Actor reads the scale of each filing and always returns BRL units. Ratios such as netMargin and roe are decimals (0.15 = 15%), and quarterly ROE is not annualized.

How do I get Q4 if companies do not file a fourth-quarter ITR?

With statementType set to quarterly or both, the Actor derives Q4 as the annual DFP minus the first nine months and marks it with quarterDerivation: "annual-minus-9m". Q2 and Q3 are isolated from year-to-date figures when needed (ytd-difference), and the year-to-date values stay in ytd.

What happens when a company restates its statements?

CVM keeps every version. The Actor uses the latest version filed for each period (filingVersion, filingReceivedAt) and takes each period's figures from that period's own filing, not from the comparative columns of later filings.

Does it work for banks and insurers?

Yes, with their own charts of accounts (chartOfAccounts: bank or insurance). Net income, equity, total assets, cash and operating cash flow are mapped to the right accounts; metrics without a comparable meaning, such as gross profit or gross debt for a bank, are left empty and the row has standardized: false with a note.

Does asking for more companies make the run slower?

Barely. CVM publishes one file per year with all companies, so the run time depends on the years and statement types you ask for, not on how many companies. One year of annual data takes about a minute.

Use it via API

Run it from any language and get the results as JSON. Replace <YOUR_API_TOKEN> with your Apify API token.

curl -X POST "https://api.apify.com/v2/acts/br_data_hub~br-cvm-company-financials/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"companies": ["PETR4", "VALE3", "ITUB4"], "years": [2025]}'
from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("br_data_hub/br-cvm-company-financials").call(run_input={'companies': ['PETR4', 'VALE3', 'ITUB4'], 'years': [2025]})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

You can also schedule runs, send results to webhooks, or connect the Actor to Make, Zapier, n8n, Google Sheets and other integrations.

Use it with AI agents (MCP)

This Actor is ready for AI agents: typed input and output schemas, pay-per-event pricing, limited permissions and short runs.

  • Apify MCP server: add https://mcp.apify.com/?tools=br_data_hub/br-cvm-company-financials to Claude, ChatGPT, Cursor, VS Code or any MCP client, and the agent can call this Actor as a tool.
  • Agent frameworks: call it from LangChain, LlamaIndex, CrewAI or the OpenAI Agents SDK through the Apify integrations, or with the API call above.
  • Results come as structured JSON with stable field names, documented in the Output tab.

FAQ

Where does the data come from?

  • CVM open data portal (dados.cvm.gov.br): Cias Abertas: Documentos: DFP, ITR and FCA, plus Cadastro de Companhias Abertas. License: Open Database License (ODbL). Attribution: "Fonte: CVM – Portal Dados Abertos (dados.cvm.gov.br)". If you redistribute a database built from this output, ODbL requires attribution and sharing that database under the same license. - Not affiliated with CVM, B3 or any listed company. This Actor only reads CVM's public open-data files. - Some Brazilian government sites refuse connections from outside Brazil. If a run fails to download CVM files, the run stops with a clear message and nothing is charged; set proxyConfiguration to Apify Proxy with country Brazil and run again. - Data is as filed by the companies; CVM updates the files about weekly. Figures of a recently filed quarter appear after CVM's next update. - Personal data: the CVM registry includes the name, e-mail and phone of each company's investor relations officer. The Actor does not read or return them. - Not investment advice. Account mapping follows the CVM standard chart of accounts; companies may classify items differently, so check sourceAccounts and the filing link for decisions that matter.

How much does it cost?

$0.01 per company period. Discounts follow your Apify subscription tier: Bronze 10%, Silver 20%, Gold and above 30%. See How much does it cost? above for examples.

Do I pay for errors or empty results?

No. Charged once per company and period returned with standardized statements. Errors are free.

Can I run it on a schedule or connect it to other tools?

Yes. Use Apify schedules to run it daily or weekly, webhooks to get notified, and integrations such as Make, Zapier, n8n and Google Sheets. Everything also works through the API.

Can AI agents use it?

Yes. It works as a tool in the Apify MCP server and in agent frameworks, and AI agents can pay per event. See Use it with AI agents (MCP).

The Actor reads only public, official sources and keeps personal data masked as the source publishes it. You are responsible for how you use the data, including LGPD compliance.

I found a bug or need a feature. What should I do?

Open an issue in the Issues tab. We answer within 14 days, usually much sooner.

More Actors from BR Data Hub

ActorWhat it does
Brazil Exchange Rates API (Cotação PTAX)Get official PTAX exchange rates from Banco Central do Brasil: buy and sell rates in BRL, parities and bulleti
Brazil Treasury Bonds API (Tesouro Direto)Daily rates and unit prices of Brazilian Treasury bonds (Tesouro Direto: Selic, Prefixado, IPCA+, Renda+, Educ
Brazil Inflation Calculator (IPCA, IGP-M, Selic)Correct BRL amounts in bulk by IPCA, INPC, IGP-M, IGP-DI, IPC-Fipe, Selic, CDI, TR or savings (poupança) using
Brazil Investment Fund Returns (Fundos CVM)Ready-made performance metrics for Brazilian investment funds from CVM open data: period, YTD and 12-month ret
Brazil Fuel Prices by City (ANP Combustíveis)Weekly fuel prices in Brazil from the ANP open data survey (not affiliated with the ANP): average, minimum, ma

See all our Actors at apify.com/br_data_hub.

Usar em português

Demonstrações financeiras padronizadas das companhias abertas brasileiras, direto dos dados abertos da CVM: a DFP (anual) e o ITR (trimestral). Você informa ticker da B3, CNPJ ou código CVM e os anos; recebe uma linha limpa por empresa e período, pronta para planilha, modelo de valuation ou agente de IA.

Para que serve: montar o histórico de resultados de uma empresa ou de um setor, comparar margens e endividamento entre empresas, alimentar um modelo ou painel com números oficiais e rastreáveis, sem copiar dados de sites de investimento.

Como usar em 3 passos:

  1. Em companies, coloque tickers (PETR4, ou só a raiz PETR), CNPJs (33.000.167/0001-01) ou códigos CVM (9512).
  2. Em years, escolha os exercícios (DFP desde 2010, ITR desde 2011) e, em statementType, annual (anual), quarterly (1º ao 3º trimestre e o 4º calculado) ou both (ambos).
  3. Deixe basis em auto (consolidado, ou individual quando a empresa não tem consolidado) e rode. Baixe em JSON, CSV ou Excel.

Exemplo de entrada:

{"companies": ["PETR4", "VALE3", "ITUB4"], "years": [2023, 2024, 2025], "statementType": "annual", "basis": "auto"}

Campos principais: companyName, ticker, cnpj, period (por exemplo 2024 ou 2024Q4), periodType, basis (consolidado ou individual), revenue (receita líquida, conta 3.01), grossProfit, ebit, netIncome (lucro líquido), totalAssets, equity (patrimônio líquido), grossDebt e netDebt (dívida bruta e líquida), operatingCashFlow, netMargin, roe, ytd (acumulado no ano), filingVersion e sourceAccounts (a conta CVM por trás de cada número).

Bom saber:

  • Valores sempre em reais (unidades, não milhares); margens e ROE em decimal (0,15 = 15%). O ROE trimestral não é anualizado.
  • O 4º trimestre é o anual menos os 9 meses (quarterDerivation: "annual-minus-9m").
  • Reapresentações: vale sempre a versão mais recente de cada demonstração.
  • Bancos e seguradoras têm plano de contas próprio: o Actor mapeia o que é comparável e marca standardized: false no resto.
  • PETR3 e PETR4 são a mesma empresa: as linhas vêm uma vez só.
  • Se a CVM recusar a conexão dos servidores da Apify, a execução para com mensagem clara e sem cobrança; rode de novo com proxyConfiguration (Apify Proxy, país Brasil).

O que é grátis: erros, empresas não encontradas e anos sem demonstração. Você paga por linha entregue (empresa × período, evento company-period), mais o evento padrão de início de execução da Apify (apify-actor-start). Não é recomendação de investimento. Fonte: CVM – Portal Dados Abertos (dados.cvm.gov.br), licença ODbL. Ferramenta independente, sem vínculo com a CVM, a B3 ou as companhias.

Quanto custa: $0.01 por resultado (company-period); 1.000 resultados saem por $10.00. Desconto pelo nível da assinatura Apify: Bronze 10%, Silver 20%, Gold ou acima 30%. Erros e consultas sem resultado não são cobrados. Use também pela API ou por agentes de IA no servidor MCP da Apify (https://mcp.apify.com/?tools=br_data_hub/br-cvm-company-financials).