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 callstring
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.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.
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.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)