# Financials

> Normalized income statement, balance sheet and cash flow fields, read from the lines companies printed.

```text
GET /v1/companies/{id}/financials
```

Standard fields, the same for every company, read from the lines a company printed on its financial statements. Newest period first. Each fact names the filing and the XBRL tag it came from.

```bash
curl -H "X-API-Key: $BELFORT_API_KEY" \
  "https://belfort-data-api.vercel.app/v1/companies/AAPL/financials?field=total_assets&period=annual"
```

:::note[25 fields are served today]
A field is served only after its figures were scored against an answer key and passed. Any other field name gets HTTP 400. The measured error for each served field is on [Quality](/quality/#financials).

Income statement: `revenue`, `gross_profit`, `operating_income`, `sga`, `research_development`, `pretax_income`, `income_tax`, `net_income`, `basic_eps`, `diluted_eps`, `weighted_diluted_shares`.

Balance sheet: `cash_and_equivalents`, `receivables`, `current_assets`, `ppe_net`, `intangibles`, `total_assets`, `accounts_payable`, `current_liabilities`, `total_liabilities`, `retained_earnings`, `total_equity`.

Cash flow: `operating_cash_flow`, `investing_cash_flow`, `financing_cash_flow`.
:::

## Parameters

| Parameter | Values | Default |
|---|---|---|
| `field` | One served field name from the list above. | Every served field |
| `period` | `annual` or `quarterly`. See below. | Both |
| `limit` | 1–100 facts per page. | 40 |
| `cursor` | The previous page's `meta.next_cursor`. | |

**`period=annual`** keeps full-year flows (`quarters` 4) and balances (`quarters` 0) dated on a fiscal year end, meaning the company has a full-year figure ending that day. **`period=quarterly`** keeps single quarters (`quarters` 1) and every balance.

## One fact

| Field | Meaning |
|---|---|
| `cik` | The company. |
| `period_end` | The last day of the period. |
| `quarters` | The period's length in whole quarters. `0` is a balance at a point in time. |
| `field` | The normalized field name. |
| `value` | The figure. |
| `unit` | Its unit, such as `USD`, or `null`. |
| `derived` | `true` when the figure is computed from other printed lines rather than read from one. |
| `source_accession` | The filing it came from. |
| `tag` | The XBRL tag of the printed line. A derived figure has no single tag. |

## Strict fields and bank revenue

Five fields are strict: `gross_profit`, `accounts_payable`, `pretax_income`, `sga` and `intangibles`. Each one is served only when the filing prints the matching line. We don't compute gross profit as revenue minus cost, and we don't accept a broader or narrower line in place of the one named. When the line isn't printed, the value is `null`.

Banks serve `revenue` only from a printed total-revenue line, such as "Total revenue". We never add net interest income and noninterest income to make one. 151 banks keep revenue and 462 have none. Non-bank revenue is unchanged.

## Every accepted field name

Income statement: `revenue`, `cost_of_revenue`, `gross_profit`, `operating_income`, `net_income`, `net_income_attributable`, `basic_eps`, `diluted_eps`, `weighted_diluted_shares`, `sga`, `research_development`, `interest_expense`, `income_tax`, `pretax_income`.

Balance sheet: `cash_and_equivalents`, `total_assets`, `total_liabilities`, `total_equity`, `equity_attributable`, `current_assets`, `current_liabilities`, `receivables`, `inventory`, `ppe_net`, `goodwill`, `intangibles`, `long_term_debt`, `short_term_debt`, `accounts_payable`, `retained_earnings`.

Cash flow: `operating_cash_flow`, `investing_cash_flow`, `financing_cash_flow`, `capital_expenditure`, `depreciation_amortization`, `dividends_paid`, `share_repurchases`, `stock_compensation`.

These are every name the route accepts. The 25 fields listed at the top are served. The rest are held back because they are not yet measured well enough; asking for one returns HTTP 400.

## Financials or metrics?

Both have `revenue`, `net_income`, `diluted_eps`, `operating_cash_flow` and `cash_and_equivalents`, and the two can differ. [Metrics](/datasets/metrics/) reads every figure a company filed in its Company Facts and picks one per period by documented rules. Financials reads the lines printed on the statements, from the SEC's quarterly data sets, so it can be a quarter behind. Use one source per analysis.

---
Source: https://docs.belfortagent.xyz/datasets/financials/
