curl --request GET \
--url https://api.financialdatasets.ai/financials/cash-flow-statements/segments \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.financialdatasets.ai/financials/cash-flow-statements/segments"
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/cash-flow-statements/segments', 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/cash-flow-statements/segments",
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/cash-flow-statements/segments"
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/cash-flow-statements/segments")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.financialdatasets.ai/financials/cash-flow-statements/segments")
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{
"segmented_financials": [
{
"ticker": "<string>",
"report_period": "2023-12-25",
"fiscal_period": "<string>",
"period": "quarterly",
"currency": "<string>",
"accession_number": "<string>",
"filing_url": "<string>",
"capital_expenditure": {
"product": [
{
"label": "<string>",
"value": 123
}
],
"segment": [
{
"label": "<string>",
"value": 123
}
]
}
}
],
"next_page_url": "<string>"
}{
"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"
}Cash Flow Statement
Get cash flow statement segment breakdowns (capital expenditure) by business segment for any US public company.
curl --request GET \
--url https://api.financialdatasets.ai/financials/cash-flow-statements/segments \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.financialdatasets.ai/financials/cash-flow-statements/segments"
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/cash-flow-statements/segments', 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/cash-flow-statements/segments",
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/cash-flow-statements/segments"
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/cash-flow-statements/segments")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.financialdatasets.ai/financials/cash-flow-statements/segments")
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{
"segmented_financials": [
{
"ticker": "<string>",
"report_period": "2023-12-25",
"fiscal_period": "<string>",
"period": "quarterly",
"currency": "<string>",
"accession_number": "<string>",
"filing_url": "<string>",
"capital_expenditure": {
"product": [
{
"label": "<string>",
"value": 123
}
],
"segment": [
{
"label": "<string>",
"value": 123
}
]
}
}
],
"next_page_url": "<string>"
}{
"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 cash flow statement segments API provides as-reported segment breakdowns from SEC filings (10-Ks and 10-Qs) for a given stock ticker. This includes segment data for metrics like:- Capital Expenditure — by business segment
{
"segmented_financials": [
{
"ticker": "AAPL",
"report_period": "2025-12-27",
"period": "quarterly",
"capital_expenditure": {
"segment": [
{"label": "Americas", "value": 3000000000.0},
{"label": "Europe", "value": 2000000000.0},
{"label": "Greater China", "value": 1500000000.0}
]
}
}
]
}
Coverage
| Tickers | Years of Coverage | Updated |
|---|---|---|
| 5,900+ | 15+ years | Within 1 second |
Available Tickers
You can fetch a list of available tickers with aGET request to:
https://api.financialdatasets.ai/financials/cash-flow-statements/segments/tickers/
Getting Started
There are only 3 steps for making a successful API call:- Add your API key to the header of the request as
X-API-KEY. - Add query params like
ticker,periodandlimitto filter the data. - Execute the API request.
Filtering the Data
You can filter the data byticker, 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 or quarterly. 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_ltereport_period_ltreport_period_gtereport_period_gtreport_period
Example
import requests
# add your API key to the headers
headers = {
"X-API-KEY": "your_api_key_here"
}
# set your query params
ticker = 'AAPL' # 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/cash-flow-statements/segments'
f'?ticker={ticker}'
f'&period={period}'
f'&limit={limit}'
)
# make API request
response = requests.get(url, headers=headers)
# parse segmented_financials from the response
segmented_financials = response.json().get('segmented_financials')
Example (with report_period)
import requests
# add your API key to the headers
headers = {
"X-API-KEY": "your_api_key_here"
}
# set your query params
ticker = 'AAPL'
period = 'annual'
limit = 100
report_period_lte = '2024-01-01' # end date
report_period_gte = '2020-01-01' # start date
# create the URL
url = (
f'https://api.financialdatasets.ai/financials/cash-flow-statements/segments'
f'?ticker={ticker}'
f'&period={period}'
f'&limit={limit}'
f'&report_period_lte={report_period_lte}'
f'&report_period_gte={report_period_gte}'
)
# make API request
response = requests.get(url, headers=headers)
# parse segmented_financials from the response
segmented_financials = response.json().get('segmented_financials')
Authorizations
API key for authentication.
Query Parameters
The ticker symbol. Required if cik is not provided.
The time period of the data.
annual, quarterly The maximum number of periods to return. This is the total across all pages, not a page size: each page holds up to 10 records, linked by next_page_url.
The Central Index Key (CIK) of the company.
Filter by exact report period date in YYYY-MM-DD format.
Filter by report period greater than or equal to date in YYYY-MM-DD format.
Filter by report period less than or equal to date in YYYY-MM-DD format.
Filter by report period greater than date in YYYY-MM-DD format.
Filter by report period less than date in YYYY-MM-DD format.
Opaque pagination cursor from a previous response's next_page_url. When provided, all other query parameters are ignored: the cursor carries the original request's filters. Treat it as opaque; do not construct or modify it.