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

url = "https://api.financialdatasets.ai/financials/balance-sheets"

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/financials/balance-sheets', 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/financials/balance-sheets",
  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/financials/balance-sheets"

	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/financials/balance-sheets")
  .header("X-API-KEY", "<api-key>")
  .asString();
require 'uri'
require 'net/http'

url = URI("https://api.financialdatasets.ai/financials/balance-sheets")

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
{
  "balance_sheets": [
    {
      "ticker": "<string>",
      "report_period": "2023-12-25",
      "fiscal_period": "<string>",
      "currency": "<string>",
      "accession_number": "<string>",
      "filing_url": "<string>",
      "filing_date": "2023-12-25",
      "filing_datetime": "2023-11-07T05:31:56Z",
      "total_assets": 123,
      "current_assets": 123,
      "cash_and_equivalents": 123,
      "inventory": 123,
      "current_investments": 123,
      "trade_and_non_trade_receivables": 123,
      "non_current_assets": 123,
      "property_plant_and_equipment": 123,
      "goodwill_and_intangible_assets": 123,
      "investments": 123,
      "non_current_investments": 123,
      "outstanding_shares": 123,
      "tax_assets": 123,
      "total_liabilities": 123,
      "current_liabilities": 123,
      "current_debt": 123,
      "trade_and_non_trade_payables": 123,
      "deferred_revenue": 123,
      "deposit_liabilities": 123,
      "non_current_liabilities": 123,
      "non_current_debt": 123,
      "tax_liabilities": 123,
      "shareholders_equity": 123,
      "retained_earnings": 123,
      "accumulated_other_comprehensive_income": 123,
      "total_debt": 123
    }
  ]
}
{
  "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": "Not Found",
  "message": "Ticker XXXX not found"
}

Overview

The balance sheets API provides balance sheet data for a given stock ticker. Balance sheets are financial statements that summarize a company’s assets, liabilities, and shareholders’ equity at a specific point in time. You can filter the data by ticker, period, limit, and cik. The period parameter can be set to annual, quarterly, or ttm (trailing twelve months). The limit parameter is used to specify the number of statements to return. To get started, please create an account and grab your API key at financialdatasets.ai. You will use the API key to authenticate your API requests.

Coverage

TickersYears of CoverageUpdated
19,000+30+ yearsWithin 1 second

Available Tickers

You can fetch a list of available tickers with a GET request to: https://api.financialdatasets.ai/financials/balance-sheets/tickers/

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 query params like ticker, period and limit to filter the data.
  3. Execute the API request.

Filtering the Data

You can filter the data by ticker, period, limit, and report_period. Note: ticker and period are required. Alternatively, you can use cik instead of ticker as a company identifier in your request. By default, period is annual,limit is 4, and report_period is null. The period parameter can be set to annual, quarterly, or ttm (trailing twelve months). The limit parameter is used to specify the number of periods to return. The report_period parameter is used to specify the date of the statement. For example, you can include filters like report_period_lte=2024-09-30 and report_period_gte=2024-01-01 to get statements between January 1, 2024 and September 30, 2024. The available report_period operations are:
  • report_period_lte
  • report_period_lt
  • report_period_gte
  • report_period_gt
  • report_period

Normalized vs. As-Reported

We support two views of the balance sheet:
  • Normalized (this endpoint, GET /financials/balance-sheets): every filer mapped onto a single canonical schema (total_assets, total_liabilities, shareholders_equity, etc.). Consistent across companies and ideal for cross-company comparison and time-series analysis. Available from the 1990s onward.
  • As-Reported (GET /financials/balance-sheets/as-reported): the balance sheet exactly as filed in the 10-K or 10-Q, with original labels and parent-child line item hierarchy. Ideal when you need the exact wording, ordering, or subtotal structure from the filing. Available from 2010 onward, when XBRL became standard for SEC filings and companies started to report more granular data.

Examples

import requests

# add your API key to the headers
headers = {
    "X-API-KEY": "your_api_key_here"
}

# set your query params
ticker = 'NVDA'     # stock ticker
period = 'annual'   # possible values are 'annual', 'quarterly', or 'ttm'
limit = 30          # number of statements to return

# create the URL
url = (
    f'https://api.financialdatasets.ai/financials/balance-sheets'
    f'?ticker={ticker}'
    f'&period={period}'
    f'&limit={limit}'
)

# make API request
response = requests.get(url, headers=headers)

# parse balance_sheets from the response
balance_sheets = response.json().get('balance_sheets')
import requests

# add your API key to the headers
headers = {
    "X-API-KEY": "your_api_key_here"
}

# set your query params
ticker = 'NVDA'      # stock ticker
period = 'annual'    # possible values are 'annual' or 'quarterly'
limit = 5            # number of periods to return

# create the URL
url = (
    f'https://api.financialdatasets.ai/financials/balance-sheets/as-reported'
    f'?ticker={ticker}'
    f'&period={period}'
    f'&limit={limit}'
)

# make API request
response = requests.get(url, headers=headers)

# parse as_reported_balance_sheets from the response
as_reported_balance_sheets = response.json().get('as_reported_balance_sheets')

Authorizations

X-API-KEY
string
header
required

API key for authentication.

Query Parameters

ticker
string

The ticker symbol. Required if cik is not provided.

period
enum<string>
required

The time period of the balance sheets.

Available options:
annual,
quarterly,
ttm
limit
integer<int32>

The maximum number of balance sheets to return

cik
string

The Central Index Key (CIK) of the company.

report_period
string<date>

Filter by exact report period date in YYYY-MM-DD format.

report_period_gte
string<date>

Filter by report period greater than or equal to date in YYYY-MM-DD format.

report_period_lte
string<date>

Filter by report period less than or equal to date in YYYY-MM-DD format.

report_period_gt
string<date>

Filter by report period greater than date in YYYY-MM-DD format.

report_period_lt
string<date>

Filter by report period less than date in YYYY-MM-DD format.

filing_date
string<date>

Filter by exact SEC filing date in YYYY-MM-DD format. Rows without a known filing date are excluded.

filing_date_gte
string<date>

Filter by SEC filing date greater than or equal to date in YYYY-MM-DD format. Rows without a known filing date are excluded.

filing_date_lte
string<date>

Filter by SEC filing date less than or equal to date in YYYY-MM-DD format. Useful for point-in-time queries: returns only data that was publicly filed by the given date. Rows without a known filing date are excluded.

filing_date_gt
string<date>

Filter by SEC filing date greater than date in YYYY-MM-DD format. Rows without a known filing date are excluded.

filing_date_lt
string<date>

Filter by SEC filing date less than date in YYYY-MM-DD format. Rows without a known filing date are excluded.

Response

Balance sheets response

balance_sheets
object[]