Historical Market Cap
The Historical Market Cap dataset provides point-in-time market capitalization and shares outstanding for equities, as they were known on each historical date.
This is designed for research and production workflows that require true point-in-time fundamentals (e.g., avoiding lookahead bias when modeling size, liquidity regimes, or dilution/float dynamics).
Why it’s useful
Use this dataset to:
Build point-in-time size factors (market cap) without future leakage
Normalize signals by shares outstanding / float regime
Backtest strategies that depend on historical capitalization thresholds (e.g., “only trade > $X market cap at the time”)
Monitor structural shifts from issuance/buybacks via share count changes
Endpoint
Sample Request
Python
cURL
Request Parameters
api_key (optional)
Your API key. Enables full dataset access and removes per-request limits.
If omitted, a limited subset is returned.
ticker (optional)
Equity ticker filter (case-insensitive, exact match).
If omitted, data across all tickers are returned.
date (optional)
Trading date filter (YYYY-MM-DD).
If omitted, a ticker must be provided.
Date Filtering
All dates must be provided in YYYY-MM-DD format.
Supported parameters:
date_gte
date_lte
date_gt
date_lt
Any logically valid combination is accepted.
Response Fields
Field | Type | Description |
|---|---|---|
date | string | Observation date (YYYY-MM-DD) |
ticker | string | Equity ticker symbol |
shares_outstanding | float | Shares outstanding at the time |
market_cap | float | Market capitalization at the time |
Example Response
Pagination
The Historical Market Cap endpoint uses cursor-based pagination for efficient retrieval of large result sets.
Results are ordered deterministically:
This ensures stable, repeatable pagination across requests.
How Pagination Works
Each response includes:
count — number of rows returned in this page
has_more — whether additional data is available
next_cursor — cursor object to retrieve the next page
If has_more = true, use the next_cursor values in your next request.
Cursor Parameters
When paginating, you must provide both:
cursor_date
cursor_ticker
These must match the next_cursor object from the previous response.
Example:
Next request:
If only one cursor field is provided, the request will return a 400 error.
Python Pagination Example
Free vs Pro Limits
Pagination behavior depends on account tier:
Free / Trial accounts: limited rows per request
Pro accounts: higher per-request limits
When more data is available beyond your per-request limit, has_more will be true.