Skip to main content
GET
/
kpi
/
metrics
Get KPI metrics
curl --request GET \
  --url https://api.financialdatasets.ai/kpi/metrics \
  --header 'X-API-KEY: <api-key>'
import requests

url = "https://api.financialdatasets.ai/kpi/metrics"

headers = {"X-API-KEY": "<api-key>"}

response = requests.get(url, headers=headers)

print(response.text)
const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};

fetch('https://api.financialdatasets.ai/kpi/metrics', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://api.financialdatasets.ai/kpi/metrics",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => [
    "X-API-KEY: <api-key>"
  ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.financialdatasets.ai/kpi/metrics"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("X-API-KEY", "<api-key>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.get("https://api.financialdatasets.ai/kpi/metrics")
  .header("X-API-KEY", "<api-key>")
  .asString();
require 'uri'
require 'net/http'

url = URI("https://api.financialdatasets.ai/kpi/metrics")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'

response = http.request(request)
puts response.read_body
{
  "kpi_metrics": [
    {
      "ticker": "DAL",
      "metric_name": "load_factor",
      "value": 82,
      "unit": "%",
      "period": "Q4 2025",
      "period_type": "quarterly",
      "segment": "Commercial Engines & Services",
      "yoy_value": 84,
      "yoy_change_pct": -2.381,
      "source_text": "Passenger load factor",
      "source_url": "https://www.sec.gov/Archives/edgar/data/27904/000002790426000008/deltaairlinesannouncesdece.htm"
    }
  ]
}
{
  "error": "Bad Request",
  "message": "Invalid request parameters"
}
{
  "error": "Unauthorized",
  "message": "Invalid API key provided"
}
{
  "error": "Payment Required",
  "message": "This endpoint requires a paid subscription. Please upgrade your plan."
}
{
  "error": "Early access",
  "message": "KPI endpoints are in early access. Contact [email protected] for access."
}

Overview

The KPI Metrics API returns structured operational KPIs that are not available in standard financial statements. These are the metrics that drive investment theses:
  • Airlines: load factor, CASM-ex-fuel, passenger yield, revenue per ASM, fuel cost per gallon
  • Banks: CET1 ratio, net interest margin, efficiency ratio, ROTCE, trading revenue
  • REITs: FFO per share, same-store NOI growth, occupancy, lease spreads, cap rates
  • Retail: comparable store sales, e-commerce growth, membership revenue
  • Semiconductors: data center revenue, gaming revenue, automotive revenue
Data is sourced from earnings releases, earnings call transcripts, and press releases. Each metric includes the source text and a direct link to the source document.

Coverage

TickersYears of CoverageUpdated
600+3+ yearsWithin 10 seconds

Available Tickers

You can fetch a list of available tickers with a GET request to: https://api.financialdatasets.ai/kpi/metrics/tickers/

Available Sectors

You can fetch a list of available sectors with a GET request to: https://api.financialdatasets.ai/kpi/metrics/sectors/

Getting Started

There are only 3 steps for making a successful API call:
  1. Add your API key to the header of the request as X-API-KEY.
  2. Add the required query param ticker.
  3. Execute the API request.

Filtering the Data

ParameterRequiredDescription
tickerYesStock ticker symbol (e.g., DAL, JPM)
metric_nameNoFilter to a specific metric (e.g., load_factor, cet1_ratio)
periodNoquarterly (default) or annual
report_period_gteNoOnly return metrics on or after this date (YYYY-MM-DD)
report_period_lteNoOnly return metrics on or before this date (YYYY-MM-DD)
limitNoNumber of periods to return (default: 4, max: 50). Returns all metrics for the N most recent periods.

Example

KPI Metrics
import requests

headers = {
    "X-API-KEY": "your_api_key_here"
}

ticker = "DAL"
url = f"https://api.financialdatasets.ai/kpi/metrics?ticker={ticker}"

response = requests.get(url, headers=headers)
data = response.json()
kpi_metrics = data["kpi_metrics"]

Example Response

{
  "kpi_metrics": [
    {
      "ticker": "DAL",
      "metric_name": "load_factor",
      "value": 82.0,
      "unit": "%",
      "period": "Q4 2025",
      "period_type": "quarterly",
      "yoy_value": 84.0,
      "yoy_change_pct": -2.381,
      "source_text": "Passenger load factor",
      "source_url": "https://www.sec.gov/Archives/edgar/data/27904/000002790426000008/deltaairlinesannouncesdece.htm#:~:text=Passenger%20load%20factor,82"
    },
    {
      "ticker": "DAL",
      "metric_name": "casm_ex_fuel",
      "value": 14.27,
      "unit": "cents",
      "period": "Q4 2025",
      "period_type": "quarterly",
      "yoy_value": 13.72,
      "yoy_change_pct": 4.01,
      "source_text": "CASM-Ex - see Note A (cents)",
      "source_url": "https://www.sec.gov/Archives/edgar/data/27904/000002790426000008/deltaairlinesannouncesdece.htm#:~:text=CASM-Ex%20-%20see%20Note%20A%20%28cents%29,14.27"
    },
    {
      "ticker": "DAL",
      "metric_name": "passenger_yield",
      "value": 21.58,
      "unit": "cents",
      "period": "Q4 2025",
      "period_type": "quarterly",
      "source_text": "Passenger yield (cents)",
      "source_url": "https://www.sec.gov/Archives/edgar/data/27904/000002790426000008/deltaairlinesannouncesdece.htm#:~:text=Passenger%20yield%20%28cents%29,21.58"
    }
  ]
}

Notes

  • The source_url links directly to the source document. When a text-level citation is available, the URL includes a fragment that highlights the source text in the browser.

Authorizations

X-API-KEY
string
header
required

API key for authentication.

Query Parameters

ticker
string
required

The ticker symbol.

metric_name
string

Filter to a specific metric (e.g., load_factor, cet1_ratio).

period
enum<string>
default:quarterly

Filter by period type: quarterly or annual.

Available options:
quarterly,
annual
report_period_gte
string<date>

Only return metrics on or after this date (YYYY-MM-DD).

report_period_lte
string<date>

Only return metrics on or before this date (YYYY-MM-DD).

limit
integer
default:4

Number of periods to return. Returns all metrics for the N most recent periods.

Required range: x <= 50

Response

KPI metrics response

kpi_metrics
object[]