Financial data is informational and may be inaccurate. See Disclaimer.

drillr.ai
API keys →

Financials

Financial metrics snapshot

GET/api/v2/financial-metrics-snapshot
Coverage
US / CN / JP
Billing
20 cr / thousand calls

Returns one row per ticker with market capitalization, enterprise value, TTM valuation multiples, margins, returns, growth rates and dividend metrics as of the latest snapshot date. Ratio fields are always decimals (0.25 = 25%), not percentages; amount fields are denominated in currency (the trading currency), and market_capitalization_usd is additionally converted to USD at the snapshot-date exchange rate.

  • Metrics are precomputed values calculated from the snapshot date's close, not real-time data; the endpoint does not provide real-time or raw quotes (US market data is served by /prices-snapshot, ; CN / JP have no market data endpoint).
  • The endpoint provides no forecast or estimate metrics; consensus price targets are served by /analyst-consensus, EPS / revenue estimates by /earnings-calendar.
  • Certain metrics (enterprise_value, dividend metrics) can be null, depending on per-company coverage.
Shared financials conventions

US / CN / JP, the last 3 years; markets out of scope return 404 . The three statement endpoints take the same parameters (ticker / period / limit) and return one row per period, aligned on (ticker, fiscal_year, period); for each ticker they return the most recent limit periods in descending report_period order. Valuation and derived financial metrics are provided separately by /financial-metrics-snapshot.

period: FY (default) / Q1Q4 / H1. Accepts multiple comma-separated values. Periods actually disclosed per market: US FY Q1Q3 (no standalone Q4 single-quarter figure), CN FY Q1 H1 Q3, JP FY H1 (no quarterly reports); a period that does not exist returns an empty array (Q4 is currently not disclosed separately in any of the three markets and is always an empty array; the caller computes fourth-quarter flow figures itself: US = FY − Q1 − Q2 − Q3, CN = FY − Q3 (Q3 is year-to-date cumulative), and JP has no quarterly figures; /balance-sheets holds point-in-time values, so no such subtraction applies). There is no date filter; limit counts back from the most recent period.

Common fields (present on every row of all three statements):

FieldTypeDescription
tickerstringCanonical ticker (US has no suffix, e.g. AAPL; CN is 600519.SH; JP is 7203.T)
marketstringMarket code: US / CN / JP
fiscal_yearintFiscal year
periodstringFY / Q1Q4 / H1
period_startdatePeriod start date; null for /balance-sheets
report_perioddatePeriod end date
currencystringReporting currency
accounting_standardstringUS-GAAP / IFRS / CN-GAAP / JP-GAAP
accession_numberstringNative document number from the official source: US is the SEC accession (e.g. 0000320193-25-000123), JP the EDINET docID, CN the cninfo announcement id
form_typestringType of the source filing, in the market's native encoding (US: SEC form names such as 10-K / 10-Q; JP: EDINET numeric codes; CN: annual_report and the like)
filing_urlstringDeep link to the official filing; opens the source document directly
filing_datedateFiling date: the date the document became public on the official channel

Value conventions (common to all three statements):

  • Field names are cross-market canonical line-item names; values are numbers in the base unit of currency; line items that do not apply are null.
  • Cash outflows are negative, inflows positive.
  • Flow line items are as reported, no de-cumulation is applied, and the value corresponds to the [period_start, report_period] range: US quarterly reports carry single-quarter figures; the CN third-quarter report (Q3) is year-to-date cumulative, the single-quarter figure = Q3H1 and the fourth quarter = FYQ3; the semi-annual report (H1) is cumulative for the first half.
  • For derived line items (ebitda / total_debt / net_debt / free_cash_flow), missing components count as 0; the value is null only when all components are missing.
  • Only GAAP / statutory-basis figures are returned; for non-GAAP numbers, use /filing-search.

Query parameters

ParameterTypeRequiredDescription
tickerstringrequiredUp to 50 tickers, comma-separated.

Response fields

FieldTypeDescription
tickerstringCanonical ticker (US has no suffix, e.g. AAPL; CN is 600519.SH; JP is 7203.T)
marketstringMarket code: US / CN / JP
currencystringTrading currency; the amount fields below are denominated in this currency
shares_outstandingnumberShares outstanding
market_capitalizationnumberMarket capitalization in local currency
market_capitalization_usdnumberMarket capitalization in USD, converted at the snapshot-date exchange rate
enterprise_valuenumberEnterprise value in local currency
pe_ratio_ttmnumberValuation multiple: P/E (TTM)
peg_ratio_ttmnumberValuation multiple: PEG (TTM)
pb_ratio_ttmnumberValuation multiple: P/B (TTM)
ps_ratio_ttmnumberValuation multiple: P/S (TTM)
pcf_ratio_ttmnumberValuation multiple: P/CF (TTM)
ev_to_sales_ttmnumberEV multiple: EV/Sales (TTM)
ev_to_ebitda_ttmnumberEV multiple: EV/EBITDA (TTM)
ev_to_ebit_ttmnumberEV multiple: EV/EBIT (TTM)
gross_profit_margin_ttmnumberGross profit margin (TTM)
ebitda_margin_ttmnumberEBITDA margin (TTM)
net_income_margin_ttmnumberNet income margin (TTM)
fcf_margin_ttmnumberFree cash flow margin (TTM)
roe_ttmnumberReturn ratio: ROE (TTM)
roa_ttmnumberReturn ratio: ROA (TTM)
roic_ttmnumberReturn ratio: ROIC (TTM)
revenue_growth_ttmnumberRevenue TTM year-over-year growth
eps_growth_ttmnumberEPS TTM year-over-year growth
fcf_growth_ttmnumberFree cash flow TTM year-over-year growth
revenue_cagr_3ynumberRevenue 3-year CAGR
eps_cagr_3ynumberEPS 3-year CAGR
dividend_yield_ttmnumberDividend yield (TTM)
payout_ratio_ttmnumberPayout ratio (TTM)
dividend_growth_1ynumber1-year dividend growth
consecutive_dividend_yearsnumberConsecutive years of dividend payments

No key yet? Create one under API Keys — it is shown once, so store it where your shell can read it. Connecting an agent over MCP instead? That signs in through the browser and needs no key at all.

Authentication, conventions, rate limits and error shapes are the same for every endpoint — they live on REST API.