Developer API docs
Financial statements endpoint
Income statement, balance sheet and cash flow as filed with the SEC: JSON or CSV from EDGAR XBRL company facts with per-value provenance (tag, accession, date).
Documentation updated 2026-09-02. Machine-readable: openapi.json · llms.txt
Endpoint
GET https://tgmcharts.com/api/v1/statements/{symbol}/{statement} serves raw, as-filed statement rows from SEC EDGAR XBRL company facts — public-domain lineage end to end. {statement} is one of income-statement, balance-sheet, cash-flow. Keyless and CORS-open.
| Query parameter | Values | Behavior |
|---|---|---|
| period | annual (default) | quarterly | Quarterly serves the as-filed discrete quarters plus disclosed derived ones (see provenance). |
| years | integer 1–30 (default 10) | Trailing fiscal years of rows; quarterly serves 4 × years rows, capped at 120. Out of range answers 400 — never clamped. |
| format | json (default) | csv | CSV: one row per fiscal period, one column per concept, # provenance comments. |
curl -s "https://tgmcharts.com/api/v1/statements/AAPL/income-statement?years=5"curl -s "https://tgmcharts.com/api/v1/statements/KO/cash-flow?period=quarterly&years=3&format=csv" -o ko-cash-flow-quarterly.csvResponse shape
A type sketch. Rows are newest first; every catalogue concept appears on every row, with null where the filer tagged nothing for that period — never a zero.
{
"symbol": "AAPL",
"entityName": string | null,
"cik": string | null,
"statement": "income-statement" | "balance-sheet" | "cash-flow",
"period": "annual" | "quarterly",
"currency": "USD",
"source": "SEC EDGAR XBRL company facts (public domain)",
"asOf": ISO date-time | null, // last EDGAR ingestion for this symbol
"methodology": string,
"status": "preparing" | "unavailable", // ABSENT when rows are served
"reason": string, // with status: unavailable
"note": string, // honest-state explanation
"concepts": [ { "key": string, "label": string, "unit": "USD" | "USD/shares" | "shares", "tags": string[] }, … ],
"rows": [ // newest first; null while status is set
{
"fiscalYear": integer,
"fiscalPeriod": "FY" | "Q1" | "Q2" | "Q3" | "Q4",
"periodStart": "YYYY-MM-DD" | null, // null for balance-sheet instants
"periodEnd": "YYYY-MM-DD",
"form": "10-K" | "10-Q" | … | null, // the most recently filed fact on the row
"filed": "YYYY-MM-DD" | null,
"metrics": { "<concept key>": number | null, … },
"provenance": {
"<concept key>": { "tag": string, "accn": string, "form": string, "filed": "YYYY-MM-DD",
"derived": "ytd-differencing", "inputs": [accn, accn] } // derived/inputs on derived quarters only
}
}
],
"links": { "page": string, "docs": string, "openapi": string }
}Per-value provenance
provenance[key].tag— the us-gaap tag that produced the value (one winning tag per concept per symbol; the priority lists are below).provenance[key].accn,form,filed— the accession number, form type and filing date of the filing the value was taken from. Latest-filed wins per period, so a restated figure supersedes the original.provenance[key].derived: "ytd-differencing"withinputs: [accn, accn]— a quarter the filer did not tag discretely (Q4 generally; Q2–Q3 for cash-flow items, which 10-Qs tag year-to-date) was derived by differencing two same-tag, same-fiscal-year facts, and both source accessions are disclosed. Derivation is withheld when a surrounding filing restates prior periods.- Per-share values and share counts are never derived, and per-share values are as filed — not adjusted for later stock splits.
Preparing and unavailable states
status: "preparing"(HTTP200,rows: null, shorts-maxage=120cache) — the symbol is covered by the site but its SEC EDGAR data has not been ingested yet. No value is substituted from any other source in the meantime.status: "unavailable"with areason(HTTP200, daily cache) — the security has no usable us-gaap/USD company facts: typically an ETF or trust, or a filer reporting under IFRS or in a non-USD currency. This is a stable, periodically re-checked state, not a pending one.404— the symbol is not covered at all (onboarding hint), or the statement slug is unknown (the body lists the three valid ones).rows: []with anote— ingested, but no XBRL fact mapped to this statement's concepts.
Methodology (served verbatim on every response)
Values as filed with the SEC (XBRL company facts, public domain), selected latest-filed per period; the winning us-gaap tag, accession number, and filing date are recorded per value in provenance. Quarters not filed discretely (Q4 generally; Q2-Q3 for cash-flow items, which 10-Qs tag year-to-date only) are derived solely by differencing two same-tag, same-fiscal-year facts and are marked derived with both source accessions; derivation is withheld when a surrounding filing restates prior periods. Per-share values are as filed and NOT adjusted for subsequent stock splits. Missing data is null — never zero-filled, never backfilled from any other source.
Income statement concepts
The metrics keys served for income-statement, with the us-gaap tags tried in priority order. Generated from the concept catalogue the ingestion lane uses. For revenue the priority is applied per period (Revenues first, then the ASC 606 tags), so filers that tag both never have the narrower contract-revenue subset served as total revenue.
| Key | Label | Unit | us-gaap tags (priority order) |
|---|---|---|---|
| revenue | Revenue | USD | Revenues, RevenueFromContractWithCustomerExcludingAssessedTax, RevenueFromContractWithCustomerIncludingAssessedTax, SalesRevenueNet, SalesRevenueGoodsNet, SalesRevenueServicesNet |
| costOfRevenue | Cost of Revenue | USD | CostOfRevenue, CostOfGoodsAndServicesSold |
| grossProfit | Gross Profit | USD | GrossProfit |
| operatingExpenses | Operating Expenses | USD | OperatingExpenses |
| researchAndDevelopmentExpenses | Research & Development Expense | USD | ResearchAndDevelopmentExpense, ResearchAndDevelopmentExpenseExcludingAcquiredInProcessCost |
| sellingGeneralAndAdministrativeExpenses | Selling, General & Administrative Expense | USD | SellingGeneralAndAdministrativeExpense |
| operatingIncome | Operating Income | USD | OperatingIncomeLoss |
| interestExpense | Interest Expense | USD | InterestExpense, InterestExpenseNonoperating |
| pretaxIncome | Pre-Tax Income | USD | IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest, IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments |
| incomeTaxExpense | Income Tax Expense | USD | IncomeTaxExpenseBenefit |
| netIncome | Net Income | USD | NetIncomeLoss, ProfitLoss |
| epsBasic | EPS (Basic) | USD/shares | EarningsPerShareBasic |
| epsDiluted | EPS (Diluted) | USD/shares | EarningsPerShareDiluted |
| weightedAverageShsOut | Weighted Average Shares (Basic) | shares | WeightedAverageNumberOfSharesOutstandingBasic |
| weightedAverageShsOutDil | Weighted Average Shares (Diluted) | shares | WeightedAverageNumberOfDilutedSharesOutstanding |
Balance sheet concepts
The metrics keys served for balance-sheet, with the us-gaap tags tried in priority order. Generated from the concept catalogue the ingestion lane uses.
| Key | Label | Unit | us-gaap tags (priority order) |
|---|---|---|---|
| cashAndCashEquivalents | Cash & Cash Equivalents | USD | CashAndCashEquivalentsAtCarryingValue, CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents |
| shortTermInvestments | Short-Term Investments | USD | ShortTermInvestments, MarketableSecuritiesCurrent, AvailableForSaleSecuritiesCurrent |
| netReceivables | Receivables (Net) | USD | AccountsReceivableNetCurrent, ReceivablesNetCurrent |
| inventory | Inventory | USD | InventoryNet |
| totalCurrentAssets | Total Current Assets | USD | AssetsCurrent |
| propertyPlantEquipmentNet | Property, Plant & Equipment (Net) | USD | PropertyPlantAndEquipmentNet |
| goodwill | Goodwill | USD | Goodwill |
| intangibleAssets | Intangible Assets (ex. Goodwill) | USD | IntangibleAssetsNetExcludingGoodwill, FiniteLivedIntangibleAssetsNet |
| totalAssets | Total Assets | USD | Assets |
| accountPayables | Accounts Payable | USD | AccountsPayableCurrent, AccountsPayableAndAccruedLiabilitiesCurrent |
| totalCurrentLiabilities | Total Current Liabilities | USD | LiabilitiesCurrent |
| shortTermDebt | Short-Term Debt | USD | DebtCurrent, ShortTermBorrowings, LongTermDebtCurrent |
| longTermDebt | Long-Term Debt | USD | LongTermDebtNoncurrent, LongTermDebt |
| totalLiabilities | Total Liabilities | USD | Liabilities |
| totalStockholdersEquity | Total Stockholders' Equity | USD | StockholdersEquity, StockholdersEquityIncludingPortionAttributableToNoncontrollingInterest |
| retainedEarnings | Retained Earnings | USD | RetainedEarningsAccumulatedDeficit |
| commonSharesOutstanding | Common Shares Outstanding | shares | CommonStockSharesOutstanding, CommonStockSharesIssued |
Cash-flow statement concepts
The metrics keys served for cash-flow, with the us-gaap tags tried in priority order. Generated from the concept catalogue the ingestion lane uses.
| Key | Label | Unit | us-gaap tags (priority order) |
|---|---|---|---|
| operatingCashFlow | Operating Cash Flow | USD | NetCashProvidedByUsedInOperatingActivities, NetCashProvidedByUsedInOperatingActivitiesContinuingOperations |
| capitalExpenditure | Capital Expenditure | USD | PaymentsToAcquirePropertyPlantAndEquipment, PaymentsToAcquireProductiveAssets, PaymentsForCapitalImprovements |
| depreciationAndAmortization | Depreciation & Amortization | USD | DepreciationDepletionAndAmortization, DepreciationAndAmortization, DepreciationAmortizationAndAccretionNet |
| stockBasedCompensation | Stock-Based Compensation | USD | ShareBasedCompensation |
| investingCashFlow | Investing Cash Flow | USD | NetCashProvidedByUsedInInvestingActivities, NetCashProvidedByUsedInInvestingActivitiesContinuingOperations |
| acquisitionsNet | Acquisitions (Net of Cash) | USD | PaymentsToAcquireBusinessesNetOfCashAcquired |
| financingCashFlow | Financing Cash Flow | USD | NetCashProvidedByUsedInFinancingActivities, NetCashProvidedByUsedInFinancingActivitiesContinuingOperations |
| dividendsPaid | Dividends Paid | USD | PaymentsOfDividends, PaymentsOfDividendsCommonStock |
| commonStockRepurchased | Common Stock Repurchased | USD | PaymentsForRepurchaseOfCommonStock |
| debtIssuance | Long-Term Debt Issued | USD | ProceedsFromIssuanceOfLongTermDebt |
| debtRepayment | Long-Term Debt Repaid | USD | RepaymentsOfLongTermDebt, RepaymentsOfDebt |
| netChangeInCash | Net Change in Cash | USD | CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect, CashAndCashEquivalentsPeriodIncreaseDecrease |
CSV format
Empty cells are nulls. A # status: comment line appears on preparing/unavailable bodies so a downloaded file is never mistaken for data.
# TGMCharts — AAPL income-statement (annual, SEC EDGAR XBRL)
# source: SEC EDGAR XBRL company facts (public domain)
# as of: <ISO date-time>
# methodology: <the methodology above>
# terms: https://tgmcharts.com/terms — attribution required (data by TGMCharts, tgmcharts.com; underlying facts: SEC EDGAR, public domain)
fiscalYear,fiscalPeriod,periodEnd,form,filed,revenue,costOfRevenue,grossProfit,…
<FY>,FY,<YYYY-MM-DD>,10-K,<YYYY-MM-DD>,<number or empty>,…FAQ
- Can I get SEC financial statements as JSON?
- Yes. GET /api/v1/statements/{symbol}/{statement} returns the income statement, balance sheet or cash-flow statement as filed with the SEC, from EDGAR XBRL company facts, as JSON (or CSV with ?format=csv), annual or quarterly, up to 30 fiscal years, with the us-gaap tag, accession number and filing date recorded on every value.
- Are the statement values split-adjusted or restated?
- Values are as filed. For each period the latest-filed fact wins, so a company's own restatement supersedes the original figure. Per-share values are not adjusted for later stock splits.
- Why is a statement value null?
- The filer tagged no us-gaap fact for that concept and period (or none of the catalogue's tags). Nothing is backfilled from another source and nothing is zero-filled — null is the honest answer.
- Can I redistribute the statement data?
- The underlying XBRL facts are public-domain SEC data. Use of this API is governed by the API terms: name TGMCharts and link tgmcharts.com where the data is shown, and do not re-serve the API in bulk as a standalone data feed.