Skip to main content
These endpoints serve standardized financial data built from what each company itself reported in its SEC filings (XBRL company facts): the three statements, 38 computed metrics per period, as-reported segment breakdowns, and a compact issuer reference object. All routes here return bare wrapper-key responses (no meta envelope) and use the flat { error, message } error body — see Errors. Pagination is limit-only, newest first — see Pagination. Unknown query parameters are silently ignored on these routes, so double-check parameter spelling.

GET /v1/financials

Returns all three statements for a company in one call: income statements, balance sheets, and cash-flow statements. Plan: Free and above · Credits: 1 per call
string
Trading symbol. At least one of ticker | cik is required.
string
SEC Central Index Key, any zero-padding. At least one of ticker | cik is required.
string
required
Reporting grain — one of annual, quarterly, ttm. Required; there is no default.
  • annual — full fiscal-year statements.
  • quarterly — fiscal quarters Q1–Q3 (EDGAR has no Q4 slot; Q4 is derivable from FY minus Q1–Q3).
  • ttm — trailing-twelve-month sums for flow statements; latest instant for balance sheets.
integer
default:"4"
Number of statement rows per statement type, newest first. Minimum 1.
string
Exact filter: only the row whose report_period equals this YYYY-MM-DD date.
string
Only periods ending on or after this YYYY-MM-DD date. report_period_lte, report_period_gt, and report_period_lt work the same way for the other bounds.
Every statement row starts with the same metadata head: ticker, cik (integer), report_period (period end date, YYYY-MM-DD), period (echoes the requested grain), fiscal_period (FY, Q1, Q2, or Q3), currency, accounting_standard (us_gaap, ifrs, or null), accession_number, and filing_url.
Figures are in the currency the company reports in (currency on every row) — never converted to USD. Summing across companies without checking currency produces nonsense.
accounting_standard matters: IFRS and US GAAP do not line up item by item, so comparing an IFRS filer’s operating income with a US-GAAP filer’s is a comparison of two different definitions.
A null value means the company did not report that line — not zero. Where a filer reports the split, net_income_continuing_operations and net_income_discontinued_operations carry both halves as reported; a bottom line can be negative purely because of a disposal.

GET /v1/financials/income-statements

Income-statement rows only. Same parameters as /v1/financials. Returns { "income_statements": [...] }. Plan: Free and above · Credits: 1 per call Value fields per row: revenue, cost_of_revenue, gross_profit, operating_expense, selling_general_and_administrative_expenses, research_and_development, operating_income, interest_expense, nonoperating_income_expense, ebit, income_tax_expense, net_income_discontinued_operations, net_income_continuing_operations, net_income_non_controlling_interests, net_income, net_income_common_stock, preferred_dividends_impact, consolidated_income, earnings_per_share, earnings_per_share_diluted, dividends_per_common_share, plus weighted_average_shares and weighted_average_shares_diluted.

GET /v1/financials/balance-sheets

Balance-sheet rows only. Same parameters as /v1/financials. Returns { "balance_sheets": [...] }. Plan: Free and above · Credits: 1 per call Value fields per row include: total_assets, current_assets, cash_and_equivalents, inventory, current_investments, trade_and_non_trade_receivables, non_current_assets, property_plant_and_equipment, goodwill_and_intangible_assets, investments, non_current_investments, outstanding_shares, tax_assets, total_liabilities, current_liabilities, trade_and_non_trade_payables, deferred_revenue, deposit_liabilities, non_current_liabilities, current_debt, non_current_debt, total_debt, tax_liabilities, shareholders_equity, retained_earnings, accumulated_other_comprehensive_income.

GET /v1/financials/cash-flow-statements

Cash-flow rows only. Same parameters as /v1/financials. Returns { "cash_flow_statements": [...] }. Plan: Free and above · Credits: 1 per call Value fields per row (16): net_income, depreciation_and_amortization, share_based_compensation, net_cash_flow_from_operations, capital_expenditure, business_acquisitions_and_disposals, investment_acquisitions_and_disposals, net_cash_flow_from_investing, issuance_or_repayment_of_debt_securities, issuance_or_purchase_of_equity_shares, dividends_and_other_cash_distributions, net_cash_flow_from_financing, change_in_cash_and_equivalents, effect_of_exchange_rate_changes, ending_cash_balance, free_cash_flow.

GET /v1/financial-metrics

38 computed metric fields per reporting period, built on the standardized statements: valuation (enterprise_value, price_to_earnings_ratio, price_to_book_ratio, price_to_sales_ratio, enterprise_value_to_ebitda_ratio, enterprise_value_to_revenue_ratio, free_cash_flow_yield, peg_ratio), profitability (gross_margin, operating_margin, net_margin, return_on_equity, return_on_assets, return_on_invested_capital), efficiency (asset_turnover, inventory_turnover, receivables_turnover, days_sales_outstanding, operating_cycle, working_capital_turnover), liquidity (current_ratio, quick_ratio, cash_ratio, operating_cash_flow_ratio), leverage (debt_to_equity, debt_to_assets, interest_coverage), growth (revenue_growth, earnings_growth, book_value_growth, earnings_per_share_growth, free_cash_flow_growth, operating_income_growth, ebitda_growth), and per-share (earnings_per_share, book_value_per_share, free_cash_flow_per_share, payout_ratio). Plan: Free and above · Credits: 1 per call Parameters are identical to /v1/financials (ticker | cik required, period required, limit default 4, report_period* filters). Returns { "financial_metrics": [...] }; each row carries the same metadata head as the statement rows. A metric that cannot be computed for a period is null.

GET /v1/financials/segments

As-reported business and geographic segment breakdowns — how revenue and related line items split across a company’s own segments. Returns { "segmented_financials": [...] }, one row per period. Plan: Free and above · Credits: 1 per call
string
Trading symbol. At least one of ticker | cik is required.
string
SEC Central Index Key. At least one of ticker | cik is required.
string
default:"annual"
annual or quarterly. Unlike /v1/financials, there is no ttm — segment breakdowns are as-reported per filing — and period is optional (defaults to annual).
integer
default:"4"
Number of period rows, newest first. Minimum 1. report_period and report_period_gte/lte/gt/lt filters work as on /v1/financials.
Each row leads with seven scalars — ticker, report_period, fiscal_period, period, currency, accession_number, filing_url — followed by (all-in-one route) income_statement, balance_sheet, and cash_flow_statement payloads. A payload is a metric → dimension → buckets map, where each bucket is { "label": "...", "value": ... } with the company’s own segment names as labels. Per-statement variants return the same rows flattened, with the payload spread beside the scalars:
  • GET /v1/financials/income-statements/segments{ "income_statement_segments": [...] } — the populated one.
  • GET /v1/financials/balance-sheets/segments{ "balance_sheet_segments": [] } — always empty; companies do not report balance-sheet segment splits in this form.
  • GET /v1/financials/cash-flow-statements/segments{ "cash_flow_statement_segments": [] } — always empty, same reason.
Segment names are the company’s own and change when it reorganizes — a segment that disappears between years is usually renamed, not discontinued.

GET /v1/company/facts

A compact 13-field reference object for one SEC issuer: ticker, name, cik (zero-padded string), industry, sector, category, exchange, is_active, location, sec_filings_url, sic_code, sic_industry, sic_sector. Plan: Free and above · Credits: 1 per call
string
Trading symbol. At least one of ticker | cik is required.
string
SEC Central Index Key. At least one of ticker | cik is required.
A field with no source resolves to an empty string (""), never a guess. This dataset is SEC-scoped — a company with no SEC presence will 404 here.

Free discovery endpoints

  • GET /v1/company/facts/tickers{ "resource": "company-facts", "tickers": [...] }
  • GET /v1/company/facts/ciks{ "resource": "company-facts", "ciks": [...] } (zero-padded to 10)
Plan: Free and above · Credits: free (not metered)