STRASMORE/EXPLORE 2,830 QUERIES

shares_over_time

Answered against 22 years of US equities and 12 years of US options data and published with the query that produced it. This result is stored as of 2026-09-30, from what-is-a-share-in-a-company.

as of series 20×3read in context →
shares_over_time — 20 rows by 3 columns, computed from US exchange, SIP and OPRA data.
quarter_end_datequarter_labeldiluted_shares_bn
2021-03-27Mar 202116.929
2021-06-26Jun 202116.782
2021-09-25Sep 202116.865
2021-12-25Dec 202116.519
2022-03-26Mar 202216.403
2022-06-25Jun 202216.262
2022-09-24Sep 202216.326
2022-12-31Dec 202215.956
2023-04-01Apr 202315.847
2023-07-01Jul 202315.775
2023-09-30Sep 202315.813
2023-12-30Dec 202315.577
2024-03-30Mar 202415.465
2024-06-29Jun 202415.348
2024-09-28Sep 202415.408
2024-12-28Dec 202415.151
2025-03-29Mar 202515.056
2025-06-28Jun 202514.948
2025-09-27Sep 202515.005
2025-12-27Dec 202514.81
Rows × columns
20 × 3
Period covered
to
Computed
Completeness
No missing values
Source
US exchange, SIP and OPRA market data
Licence
Strasmore terms · free, no signup
Formats
JSON · CSV · the SQL below

What each column holds

Column definitions for shares_over_time, derived from the stored result.
ColumnTypeRangeNotes
quarter_end_date date 2021-03-27 to 2025-12-27
quarter_label text 20 distinct values (Apr 2023, Dec 2021, Dec 2022…)
diluted_shares_bn number 14.81 to 16.929 count

Computed from Strasmore's warehouse of US exchange, SIP and OPRA market data. Equity prices are delayed; options greeks and implied volatility are end-of-day. This result is stored, not recomputed on load — it is exactly the numbers that were returned on , and the query below is what returned them.

Run it yourself

This is the exact query behind the result above. Change a ticker, a date or a column and run it against the warehouse — no account, no key. The no-signup tier is smaller than the one this page was computed on; a query that reaches past it comes back saying which plan runs it.

SELECT
    toString(period_end)                                                         AS quarter_end_date,
    formatDateTime(period_end, '%b %Y')                                          AS quarter_label,
    round(argMax(diluted_shares_outstanding, (filing_date, period_end)) / 1e9, 3) AS diluted_shares_bn
FROM global_markets.stocks_income_statements
WHERE has(tickers, 'AAPL')
  AND timeframe = 'quarterly'
  AND period_end >= '2021-01-01'
  AND diluted_shares_outstanding > 0
GROUP BY period_end
ORDER BY period_end
⌘/Ctrl + Enter

Work with this data in your AI assistant

Opens ready to query, with this page's data. Free, no account.