Financial Metrics List API
Retrieve the complete catalog of metrics the API supports, so you never have to hard-code a field name or guess whether one exists. There are two separate catalogs behind a single endpoint — 795 screener metrics identified by full name and grouped by statement, and 1,257 time-series metrics identified by slug and grouped by reporting period. They overlap but are not interchangeable: 758 metric names appear in both, and each catalog carries several hundred the other does not. The API is free to use.
Three catalog views available:
https://data.businessquant.com/metadata?table={table}&api_key={api_key}
Where these metrics are used:
Names from the screener catalog go into the conditions and preferred_columns of the Stock Screener API.
Slugs from the historic catalog go into the slug parameter of the Historical Financial Metrics API.
For the securities these metrics can be requested against, see the List of Securities API.
1. Request Parameters
One required parameter selects the catalog. Values are case insensitive, so table=SCREENER and table=screener behave identically. Every response is cached server side for 24 hours.
| Parameter | Description |
|---|---|
| api_key |
Required
Your unique API key for authentication.
|
| table |
Required
Which catalog to return. Exactly one of screener, historic, or historic-detailed. Any other value returns 400 listing the three valid options.
Format:
table=screener |
| ticker |
Conditional
Comma separated tickers. Required only when table=historic-detailed, and ignored by the other two catalogs, which are company independent. Omitting it on the detailed route returns 400; supplying a ticker with no coverage returns 404.
Format:
ticker=AAPL,MSFT |
curl -X GET "https://data.businessquant.com/metadata?table=screener&api_key=YOUR_API_KEY"
curl -X GET "https://data.businessquant.com/metadata?table=historic&api_key=YOUR_API_KEY"
curl -X GET "https://data.businessquant.com/metadata?table=historic-detailed&ticker=AAPL&api_key=YOUR_API_KEY"
2. Screener Metrics Catalog
795 metrics, returned as a flat array with no envelope. This catalog has no slug field — the screener identifies a metric by its full name, so the value of metric_full is what you paste into a conditions string. Names are unique across the whole catalog, so a name is a safe key. The excerpt below shows a spread across all seven statement groups.
Screener Catalog — Excerpt
Total in catalog: 795 •
Statement groups: 7 •
Showing 42 rows
| Metric Full | Metric Short | Datatype | Statement |
|---|---|---|---|
| Consolidated Net Income (Annual) | Consol Net Inc. (Yr) | int | Income Statement |
| Consolidated Net Income (Quarter) | Consol Net Inc. (Qtr) | int | Income Statement |
| Consolidated Net Income (TTM) | Consol Net Inc. (TTM) | int | Income Statement |
| Depreciation & Amortization - Total (Annual) | Dep. & Amort. (Tot) (Yr) | int | Income Statement |
| Depreciation & Amortization - Total (Quarter) | Dep. & Amort. (Tot) (Qtr) | int | Income Statement |
| Depreciation & Amortization - Total (TTM) | Dep. & Amort. (Tot) (TTM) | int | Income Statement |
| Accounts Payables (Annual) | Accounts Payables (Yr) | int | Balance Sheet |
| Accounts Payables (Quarter) | Accounts Payables (Qtr) | int | Balance Sheet |
| Accounts Payables (TTM) | Accounts Payables (TTM) | int | Balance Sheet |
| Assets (Annual) | Assets (Yr) | int | Balance Sheet |
| Assets (Quarter) | Assets (Qtr) | int | Balance Sheet |
| Assets (TTM) | Assets (TTM) | int | Balance Sheet |
| Acquisitions (Annual) | Acquisitions (Yr) | int | Cash Flow Statement |
| Acquisitions (Quarter) | Acquisitions (Qtr) | int | Cash Flow Statement |
| Acquisitions (TTM) | Acquisitions (TTM) | int | Cash Flow Statement |
| Amortization (Quarter) | Amort. (Qtr) | int | Cash Flow Statement |
| Amortization (TTM) | Amort. (TTM) | int | Cash Flow Statement |
| Amortizatization of Intangibles (Annual) | Amortizatization of Intangibles (Yr) | int | Cash Flow Statement |
| Asset Utilization Ratio (Annual) | Asset Util. (Yr) | int | Ratios |
| Asset Utilization Ratio (Quarter) | Asset Util. (Qtr) | int | Ratios |
| Asset Utilization Ratio (TTM) | Asset Util. (TTM) | int | Ratios |
| Assets Average (Annual) | Assets Avg. (Yr) | int | Ratios |
| Assets Average (Quarter) | Assets Avg. (Qtr) | int | Ratios |
| Assets Average (TTM) | Assets Avg. (TTM) | int | Ratios |
| Assets (QoQ) | Assets (QoQ) (Qtr) | % | Growth Metrics |
| Capital Expenditures (QoQ) | Capex (QoQ) (Qtr) | % | Growth Metrics |
| Capital Expenditures Growth (1y) (Annual) | Capex Growth (1y) (Yr) | % | Growth Metrics |
| Capital Expenditures Growth (1y) (Quarter) | Capex Growth (1y) (Qtr) | % | Growth Metrics |
| Capital Expenditures Growth (1y) (TTM) | Capex Growth (1y) (TTM) | % | Growth Metrics |
| Capital Expenditures Growth (3y) (Annual) | Capex Growth (3y) (Yr) | % | Growth Metrics |
| Dividend Yield | Div. Yield | % | Daily Values |
| EV to CFO | EV to CFO | int | Daily Values |
| EV to EBIT | EV to EBIT | int | Daily Values |
| EV to EBITDA | EV to EBITDA | int | Daily Values |
| EV to FCF | EV to FCF | int | Daily Values |
| EV to Revenue | EV to Revenue | int | Daily Values |
| Amortization - Deferred Charges (Annual) | Amortization - Deferred Charges (Yr) | int | Others |
| Amortization - Deferred Charges (Quarter) | Amortization - Deferred Charges (Qtr) | int | Others |
| Amortization - Deferred Charges (TTM) | Amortization - Deferred Charges (TTM) | int | Others |
| Cost - Fuel Purchased (Annual) | Cost - Fuel Purchased (Yr) | int | Others |
| Cost - Fuel Purchased (Quarter) | Cost - Fuel Purchased (Qtr) | int | Others |
| Cost - Fuel Purchased (TTM) | Cost - Fuel Purchased (TTM) | int | Others |
Screener Catalog Fields
| Field | Type | Description |
|---|---|---|
| metric_full | string | The metric's full name, including its period suffix — for example Accounts Payables (Annual). This is the identifier the screener expects, so pass it verbatim inside conditions and preferred_columns. Unique across the catalog. |
| metric_short | string | Abbreviated label for narrow table headers, for example Accounts Payables (Yr). Display only — the screener will not accept it as an identifier. |
| datatype | string | Either int for absolute values or % for values already expressed as percentages. Use it to decide formatting and whether a threshold like > 15 means 15 units or 15 percent. The split is 602 int to 193 %. |
| statement | string | Which financial statement or family the metric belongs to. One of seven values — see the group breakdown below. Bind it directly to a filter or accordion in a screener UI. |
Screener Metrics by Statement Group
| Statement | Metrics | What it covers |
|---|---|---|
| Growth Metrics | 229 | Period-over-period and multi-year growth rates. The largest group by some margin, and almost entirely % datatype. |
| Income Statement | 147 | Revenue, margins, expense lines, and earnings, at annual, quarterly, and trailing twelve month periods. |
| Balance Sheet | 132 | Assets, liabilities, equity, cash, and debt positions. |
| Cash Flow Statement | 117 | Operating, investing, and financing flows, plus free cash flow and capital expenditure. |
| Others | 98 | Metrics that do not map cleanly to a single statement, including per-share and share-count measures. |
| Ratios | 60 | Profitability, liquidity, leverage, and efficiency ratios. |
| Daily Values | 12 | Market-driven valuation metrics recomputed every trading day. These 12 are identical to the Daily group in the time-series catalog. |
3. Time-Series Metrics Catalog
1,257 metrics, again a flat array. This catalog identifies a metric by slug, which is the value the Historical Financial Metrics API expects — passing a full name there will not resolve, and an unrecognised slug comes back as a 404 naming it.
Time-Series Catalog — Excerpt
Metrics in catalog: 1,257 •
Periods: 4 •
Showing 40 rows
| Slug | Code | Dimension | Metric Full | Datatype |
|---|---|---|---|---|
| non-operating-investment-income-annual | intinvinc_nonop | Annual | Non Operating Investment Income (Annual) | int |
| shares-issued-annual | sharesissued | Annual | Shares Issued (Annual) | int |
| property-plant-and-equipment-gross-annual | ppne_gross | Annual | Property, Plant & Equipment (Gross) (Annual) | int |
| curent-deferred-tax-liability-annual | deferredtaxliability_curr | Annual | Curent Deferred Tax Liability (Annual) | int |
| randd-in-process-annual | rndinprocess | Annual | R&D In Process (Annual) | int |
| wages-salaries-and-other-annual | wages | Annual | Wages, Salaries and Other (Annual) | int |
| fcf-payout-ratio-annual | fcfpayout | Annual | FCF Payout Ratio (Annual) | int |
| return-on-capital-employed-growth-1y-annual | roce_growth_1y | Annual | Return on Capital Employed Growth (1y) (Annual) | int |
| investment-gain-loss-annual | inc_invbanking | Annual | Investment Gain (Loss) (Annual) | int |
| loans-net-annual | loans_net | Annual | Loans - Net (Annual) | int |
| fcf-margin-qoq | fcfmargin_qoq | Quarter | FCF Margin (QoQ) (Quarter) | int |
| income-trust | inc_trust | Quarter | Income - Trust (Quarter) | int |
| service-charges | inc_servicecharges | Quarter | Service Charges (Quarter) | int |
| cash-and-equivalents-qoq | cash_qoq | Quarter | Cash & Equivalents (QoQ) (Quarter) | % |
| fcf-margin-growth-5y | fcfmargin_growth_5y | Quarter | FCF Margin Growth (5y) (Quarter) | int |
| cash-from-financing-activities | cff | Quarter | Cash from Financing Activities (Quarter) | int |
| other-operating-expenses | opexother | Quarter | Other Operating Expenses (Quarter) | int |
| net-margin-growth-3y | netmargin_growth_3y | Quarter | Net Margin Growth (3y) (Quarter) | int |
| liabilities-from-discontinued-operations | liabilitiesdiscont_noncurr | Quarter | Liabilities from Discontinued Operations (Quarter) | int |
| amortization-of-goodwill | amort_goodwill_cf | Quarter | Amortization of Goodwill (Quarter) | int |
| other-working-capital-changes-ttm | otherworkingcap_ch | TTM | Other Working Capital Changes (TTM) | int |
| interest-expense-fed-funds-ttm | intexp_fedfunds | TTM | Interest Expense - Fed Funds (TTM) | int |
| amortizatization-of-intangibles-ttm | amort_intangibles_cf | TTM | Amortizatization of Intangibles (TTM) | int |
| return-on-invested-capital-growth-5y-ttm | roic_growth_5y | TTM | Return on Invested Capital Growth (5y) (TTM) | int |
| eps-diluted-ttm | epsdil | TTM | EPS (Diluted) (TTM) | int |
| revenue-other-ttm | revenue_other | TTM | Revenue - Other (TTM) | int |
| capital-leases-ttm | capitalleases_noncurr | TTM | Capital Leases (TTM) | int |
| change-in-net-loans-ttm | netloans_chg | TTM | Change in Net Loans (TTM) | int |
| rent-expense-ttm | rentalexp | TTM | Rent Expense (TTM) | int |
| cash-from-discontinued-operations-ttm | cfdiscont | TTM | Cash from Discontinued Operations (TTM) | int |
| dividend-yield | divyield_daily | Daily | Dividend Yield | % |
| ev-to-fcf | ev2fcf_daily | Daily | EV to FCF | int |
| price-to-sales | ps_daily | Daily | Price to Sales | int |
| ev-to-ebitda | evebitda_daily | Daily | EV to EBITDA | int |
| market-capitalization | marketcap_daily | Daily | Market Capitalization | int |
| ev-to-cfo | ev2cfo_daily | Daily | EV to CFO | int |
| ev-to-ebit | evebit_daily | Daily | EV to EBIT | int |
| enterprise-value | ev_daily | Daily | Enterprise Value | int |
| price-to-earnings | pe_daily | Daily | Price to Earnings | int |
| market-cap-to-fcf | mcap2fcf_daily | Daily | Market Cap to FCF | int |
Time-Series Catalog Fields
| Field | Type | Description |
|---|---|---|
| slug | string | Hyphenated identifier, for example revenue-annual. This is what the time-series endpoint expects in its slug parameter. Pass it exactly as returned; it is lower case and hyphenated throughout. |
| code | string | Compact internal code such as fcfmargin_qoq. Deliberately not unique: only 441 distinct codes cover all 1,257 metrics, because one code describes a base measure that then repeats across reporting periods. Do not use it as a primary key. |
| dimension | string | Reporting period the metric is measured over — Annual, Quarter, TTM, or Daily. This is the field to group a metric picker by. |
| metric_full | string | Full display name including the period, for example Revenue (Annual). Useful for labels, but the time-series endpoint will not accept it as an identifier — use slug. |
| metric_short | string | Abbreviated display label, sized for narrow table headers and chart legends. Display only — not accepted as an identifier. |
| datatype | string | int or %, split 934 to 323. A transformation mode other than original on the time-series endpoint overrides this to % in the response. |
Time-Series Metrics by Reporting Period
| Dimension | Metrics | What it covers |
|---|---|---|
| Quarter | 428 | Quarterly line items, margins, ratios, and growth rates. Slugs usually carry no suffix, for example revenue. |
| TTM | 428 | Trailing twelve month equivalents. Slugs end in -ttm. |
| Annual | 389 | Fiscal year figures. Slugs end in -annual. |
| Daily | 12 | Market-driven valuation metrics recomputed every trading day: price, market-capitalization, enterprise-value, dividend-yield, price-to-earnings, price-to-sales, ev-to-ebitda, ev-to-ebit, ev-to-revenue, ev-to-fcf, ev-to-cfo, and market-cap-to-fcf. |
4. Per-Ticker Metric Coverage
The two catalogs above describe what the API supports in general. table=historic-detailed answers a narrower and often more useful question: which metrics are actually populated for a specific company. Apple returns 807 metrics and Microsoft 852, both well short of the 1,257-metric global catalog, because coverage depends on what a company reports.
Unlike the other two routes this one is not a flat array. A single ticker returns a metadata block (CIK, ticker, company name) alongside a data array. Request several tickers and the response becomes an object keyed by ticker, each holding its own metadata and data pair — so write your parser for both shapes.
https://data.businessquant.com/metadata?table=historic-detailed&ticker=AAPL&api_key={api_key}
Rows here carry both catalogs' identifying fields — slug, code and dimension from the time-series catalog, plus statement from the screener catalog, and a bare metric name without the period suffix. It is the only route that returns statement and slug together, which makes it the most convenient source for a per-company metric browser.
{
"metadata": {
"cik": 320193,
"ticker": "AAPL",
"companyname": "Apple Inc.",
"companyname_short": "Apple"
},
"data": [
{
"code": "cash_growth_1y",
"dimension": "Annual",
"statement": "Growth Metrics",
"slug": "cash-and-equivalents-growth-1y-annual",
"metric": "Cash & Equivalents Growth (1y)",
"metric_short": "Cash & Equiv. Growth (1y) (Yr)",
"metric_full": "Cash & Equivalents Growth (1y) (Annual)",
"datatype": "%"
}
]
}
5. Which Catalog Do I Need?
The two general catalogs are not interchangeable, and the most common integration mistake is taking an identifier from one and sending it to the other endpoint. They share 758 metric names, but the screener carries 37 the time-series catalog lacks, and the time-series catalog carries 499 the screener lacks.
| table=screener | table=historic | |
|---|---|---|
| Feeds which endpoint | Stock Screener API | Historical Financial Metrics API |
| Identifier to send | metric_full — the full name | slug — the hyphenated slug |
| Metrics returned | 795 | 1,257 |
| Grouping field | statement — 7 groups | dimension — 4 periods |
| Answers the question | What can I filter the market on? | What can I pull a history for? |
Metrics List Request Examples
Copy any request below directly into your application.
https://data.businessquant.com/metadata?table=screener&api_key=YOUR_API_KEY
https://data.businessquant.com/metadata?table=historic&api_key=YOUR_API_KEY
https://data.businessquant.com/metadata?table=historic-detailed&ticker=AAPL&api_key=YOUR_API_KEY
https://data.businessquant.com/metadata?table=historic-detailed&ticker=AAPL,MSFT&api_key=YOUR_API_KEY
Frequently Asked Questions
Are the screener and time-series metric lists the same?
No. They are two distinct catalogs with different sizes, different identifiers, and different grouping fields. The screener catalog holds 795 metrics keyed by full name; the time-series catalog holds 1,257 metrics keyed by slug. They share 758 metric names, but 37 exist only in the screener and 499 only in the time-series catalog. Always fetch the catalog that matches the endpoint you are calling.
Can I use a slug in the screener, or a metric name in the time-series endpoint?
No, and this is the most common integration mistake. The screener matches on metric_full, the exact name including its period suffix, such as Revenue (Annual). The time-series endpoint matches on slug, such as revenue-annual, and returns 404 naming the slugs that failed. The two identifier styles are not interchangeable even when they describe the same metric.
How do I find which metrics exist for a particular company?
Use table=historic-detailed with a ticker. The global catalogs list everything the API supports, but coverage varies by company: Apple returns 807 metrics and Microsoft 852. This route is also the only one that returns statement and slug in the same row, so it is the easiest source for a per-company metric browser.
How often should I refresh the catalog?
Responses are cached server side for 24 hours, so refreshing more than once a day gains nothing. Fetch once at startup, cache locally, and resolve identifiers at runtime rather than hard-coding them — metrics are added over time, and a hard-coded list silently goes stale.
Is the Financial Metrics List API free to use?
Yes, the API is free to use. Sign up for an API key and start pulling the metric catalogs immediately.