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
GET /v1/historical-market-cap
Sample Request

Python

import requests

url = "https://api.alphanume.com/v1/historical-market-cap"
params = {
    "ticker": "AAPL",
    "date": "2026-02-06",
    "api_key": "alp_abc123"
}

r = requests.get(url, params=params)
print(r.json())

cURL

curl "https://api.alphanume.com/v1/historical-market-cap?ticker=AAPL&date=2026-02-06&api_key=alp_abc123"
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
{
  "count": 1,
  "has_more": false,
  "next_cursor": null,
  "data": [
    {
      "date": "2026-02-06",
      "ticker": "AAPL",
      "market_cap": 4109599296360,
      "shares_outstanding": 14776353000
    }
  ]
}
Pagination

The Historical Market Cap endpoint uses cursor-based pagination for efficient retrieval of large result sets.

Results are ordered deterministically:

ORDER BY date DESC, ticker DESC

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:

requests.get("https://api.alphanume.com/v1/historical-market-cap?ticker=AAPL&api_key=alp_abc123")
{
  "count": 2000,
  "has_more": true,
  "next_cursor": {
    "date": "2018-03-08",
    "ticker": "AAPL"
  },

Next request:

params = {
    "ticker": "AAPL",
    "cursor_date": "2018-03-08",
    "cursor_ticker": "AAPL"
}
requests.get("https://api.alphanume.com/v1/historical-market-cap?ticker=AAPL&cursor_date=2018-03-08&cursor_ticker=AAPL&api_key=alp_abc123")

If only one cursor field is provided, the request will return a 400 error.

Python Pagination Example
import requests

base_url = "https://api.alphanume.com/v1/historical-market-cap"

headers = {
    "X-API-Key": "alp_abc123"
}

params = {
    "ticker": "AAPL"
}

all_rows = []

while True:
    r = requests.get(base_url, headers=headers, params=params).json()

    all_rows.extend(r["data"])

    if not r["has_more"]:
        break

    cursor = r["next_cursor"]
    params["cursor_date"] = cursor["date"]
    params["cursor_ticker"] = cursor["ticker"]

print(f"Retrieved {len(all_rows)} rows.")
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.