GET
/companies/{ticker}/income-statementGet income statement data including revenue, expenses, operating income, and net earnings. Supports both quarterly and annual data with pagination.
Example Request
https://api.metricduck.com/api/v1/companies/AAPL/income-statement?period=quarterly&limit=4Path Parameters
| Parameter | Type | Description |
|---|---|---|
tickerrequired | string | Stock ticker symbol (e.g., AAPL, MSFT, GOOGL) |
Query Parameters
| Parameter | Type | Description |
|---|---|---|
period | string | Reporting period: "quarterly" or "annual" |
limit | integer | Number of periods to return (max: 100) |
offset | integer | Number of periods to skip for pagination |
Response
Returns company info and an array of income statement periods. All monetary values are in USD.
Data Fields
| Field | Type | Description |
|---|---|---|
period_end | string | End date of the reporting period (YYYY-MM-DD) |
period_type | string | Period type: "quarterly" or "annual" |
total_revenue | numbernullable | Total revenue/sales |
cost_of_revenue | numbernullable | Cost of goods sold (COGS) |
gross_profit | numbernullable | Gross profit (revenue - COGS) |
operating_expenses | numbernullable | Total operating expenses |
operating_income | numbernullable | Operating income (EBIT) |
interest_expense | numbernullable | Interest expense |
income_before_tax | numbernullable | Income before income taxes |
income_tax_expense | numbernullable | Income tax expense |
net_income | numbernullable | Net income attributable to common shareholders |
eps_basic | numbernullable | Basic earnings per share |
eps_diluted | numbernullable | Diluted earnings per share |
shares_basic | numbernullable | Basic weighted average shares outstanding |
shares_diluted | numbernullable | Diluted weighted average shares outstanding |
Example Response
{
"company_name": "Apple Inc.",
"ticker": "AAPL",
"cik": "0000320193",
"data": [
{
"period_end": "2024-09-30",
"period_type": "quarterly",
"total_revenue": 94930000000,
"cost_of_revenue": 52550000000,
"gross_profit": 42380000000,
"operating_expenses": 14320000000,
"operating_income": 28060000000,
"interest_expense": 1030000000,
"income_before_tax": 28500000000,
"income_tax_expense": 4230000000,
"net_income": 14736000000,
"eps_basic": 0.97,
"eps_diluted": 0.97,
"shares_basic": 15204000000,
"shares_diluted": 15287000000
}
],
"count": 1,
"has_more": true
}Code Examples
Python
import requests
API_KEY = "your_api_key_here"
BASE_URL = "https://api.metricduck.com/api/v1"
# Get quarterly income statements
response = requests.get(
f"{BASE_URL}/companies/AAPL/income-statement",
headers={"Authorization": f"Bearer {API_KEY}"},
params={"period": "quarterly", "limit": 4}
)
data = response.json()
print(f"Company: {data['company_name']}")
for period in data['data']:
revenue = period['total_revenue']
net_income = period['net_income']
print(f"{period['period_end']}: Revenue ${revenue:,.0f}, Net Income ${net_income:,.0f}")JavaScript
const API_KEY = 'your_api_key_here';
const BASE_URL = 'https://api.metricduck.com/api/v1';
// Get quarterly income statements
const response = await fetch(
`${BASE_URL}/companies/AAPL/income-statement?` +
new URLSearchParams({ period: 'quarterly', limit: '4' }),
{
headers: {
'Authorization': `Bearer ${API_KEY}`
}
}
);
const data = await response.json();
console.log(`Company: ${data.company_name}`);
data.data.forEach(period => {
const revenue = period.total_revenue?.toLocaleString() ?? 'N/A';
const netIncome = period.net_income?.toLocaleString() ?? 'N/A';
console.log(`${period.period_end}: Revenue $${revenue}, Net Income $${netIncome}`);
});Notes
- - All monetary values are in USD (not scaled)
- - Quarterly data is from 10-Q filings, annual from 10-K filings
- - Some fields may be null if not reported by the company
- - Data is sourced directly from SEC XBRL filings