DocsStocks

Stocks REST endpoints

Market-qualified US and international equity data: discovery, quotes, last trade, snapshots, and aggregates under /stocks.

Authx-api-key headerBase path/stocksWebSocketstocks.quotes, stocks.tradesSymbol formatCC:SYMBOL (e.g. US:AAPL, DE:BMW, TR:THYAO)
Stocks endpoints provide market-qualified equity data for supported US and international symbols. Responses use a consistent REST shape for quotes, trades, snapshots, and aggregates. Sidebar Asset Classes entry: Stocks product docs (same contract).

Symbol coverage

Symbols use ISO-style market prefixes with a ticker, for example US:AAPL, TR:ASELS, DE:ALVDE, and ES:IBE. Coverage spans many regions and market codes. List enabled rows with GET /stocks/symbols; add ?market=CC to filter to one market. Available markets depend on your account permissions. See also Symbols → Stocks and the Stocks product page for format details.

GET/stocks/symbols

Stocks symbol list

Returns enabled stocks with market-qualified symbols (CC:SYMBOL), sorted by market then symbol. Results are filtered to markets enabled on your account. Optional query market=CC further filters to one market (for example market=US or market=TR).

curl -sS "https://api.tickerlayer.com/stocks/symbols?market=US" \
  -H "x-api-key: <YOUR_API_KEY>"

Response 200 OK

JSON
{
  "symbols": [
    {
      "symbol": "US:AAPL",
      "base_symbol": "AAPL",
      "market": "US",
      "name": "Apple Inc."
    }
  ]
}
GET/stocks/quote/:symbol

Latest quote

Best bid and ask from the aggregated quote cache when present; otherwise resolved via the REST aggregation path for the symbol.

ParameterTypeDescription
symbolreqstringMarket-qualified symbol (CC:SYMBOL, e.g. US:AAPL, DE:BMW). Disambiguates listings across regions; plain tickers are rejected.
curl -sS "https://api.tickerlayer.com/stocks/quote/US:AAPL" \
  -H "x-api-key: <YOUR_API_KEY>"

Send runs against the live API with your account key (never exposed in the browser).

Response 200 OK

JSON
{
  "symbol": "US:AAPL",
  "bid": 214.22,
  "ask": 214.25,
  "bid_size": 1200,
  "ask_size": 800,
  "timestamp": 1743512400000
}
400 invalid stock symbol; expected MARKET:BASE (example: US:AAPL) when the path is not market-qualified. 403 when the market is not enabled on your account. 404 unknown symbol when the symbol is not in the enabled registry. 503 market data temporarily unavailable when lookup fails with no serviceable quote.
GET/stocks/trade/last/:symbol

Last trade

Latest executed trade from the aggregated tape when present; when the live tape snapshot is empty, price and timestamp fall back to the consolidated quote mid.

ParameterTypeDescription
symbolreqstringMarket-qualified symbol (CC:SYMBOL, e.g. US:AAPL, DE:BMW). Disambiguates listings across regions; plain tickers are rejected.
curl -sS "https://api.tickerlayer.com/stocks/trade/last/US:AAPL" \
  -H "x-api-key: <YOUR_API_KEY>"

Send runs against the live API with your account key (never exposed in the browser).

Response 200 OK

JSON
{
  "symbol": "US:AAPL",
  "price": 214.23,
  "size": 400,
  "timestamp": 1743512400000
}
404 no trade available when no consolidated trade exists yet. size may occasionally be null when lot size is not available on the tape at that instant.
GET/stocks/snapshot/:symbol

Market snapshot

Combined bid/ask, last trade, previous daily close, and change metrics in one normalized aggregated view.

ParameterTypeDescription
symbolreqstringMarket-qualified symbol (CC:SYMBOL, e.g. US:AAPL, DE:BMW). Disambiguates listings across regions; plain tickers are rejected.
curl -sS "https://api.tickerlayer.com/stocks/snapshot/US:AAPL" \
  -H "x-api-key: <YOUR_API_KEY>"

Send runs against the live API with your account key (never exposed in the browser).

Response 200 OK

JSON
{
  "symbol": "US:AAPL",
  "bid": 214.22,
  "ask": 214.25,
  "bid_size": 1200,
  "ask_size": 800,
  "last_price": 214.23,
  "last_size": 400,
  "last_timestamp": 1743512400000,
  "prev_close": 212.10,
  "change": 2.13,
  "change_percent": 1.004
}
last_size is present only when a native trade size is available. change_percent is null when prev_close is zero or unavailable. An all-null snapshot returns 404.
GET/stocks/agg/:symbol/prev

Previous completed daily bar

Single most-recently completed UTC daily candle for the symbol.

ParameterTypeDescription
symbolreqstringMarket-qualified symbol (CC:SYMBOL, e.g. US:AAPL, DE:BMW). Disambiguates listings across regions; plain tickers are rejected.
ParameterTypeDescription
intervalstringOptional. 1m · 5m · 15m · 1h · 4h · 1d. Returns the most recently settled bar at that interval instead of the previous daily bar, and adds interval, bar_start, bar_end and as_of to the response. Omit for the daily bar.
curl -sS "https://api.tickerlayer.com/stocks/agg/US:AAPL/prev" \
  -H "x-api-key: <YOUR_API_KEY>"

Response 200 OK

JSON
{
  "symbol": "US:AAPL",
  "result": {
    "o": 228.5,
    "h": 230.8,
    "l": 227.9,
    "c": 229.4,
    "v": 52000000,
    "t": 1733011200000
  }
}
Returns 404 no bar available when the daily bar cannot be resolved yet. With ?interval= the response is the most recently settled bar at that interval. The bar is held for a short settle lag after it closes, so the boundary sits away from the round minute and small clock differences between callers do not change which bar comes back. It is the same bar the historical range endpoint returns for that window, so an audit can re-fetch that exact window and compare against the same source. The response then also carries interval, bar_start, bar_end and as_of, and Cache-Control plus ETag mark exactly when the value can next change. While the market is closed the last real bar is returned, still labelled with its own bar_start.
GET/stocks/agg/:symbol/:multiplier/:timespan/:from/:to

Aggregates — OHLCV range

Historical OHLCV bars for the symbol from the aggregated interval service, with the same pagination rules as crypto aggregates.

ParameterTypeDescription
symbolreqstringEnabled public symbol for the asset: crypto pairs like BTCUSD; stocks use CC:SYMBOL (e.g. US:AAPL). Trimmed before lookup.
multiplierreqnumberInterval multiplier. Valid pairs: 1, 5, 15 with minute; 1, 4 with hour; 1 with day.
timespanreqstringminute · hour · day — case-insensitive. Other values return 400.
fromreqstringUTC date start, inclusive. Format: YYYY-MM-DD.
toreqstringUTC date end, inclusive. Format: YYYY-MM-DD. Must be ≥ from.
ParameterTypeDescription
limitnumberPage size. Default 500, max 5000.
offsetnumberZero-based row offset applied after sort. Default 0.
sortstringSort bars by timestamp t before pagination. asc or desc (default desc).
curl -sS "https://api.tickerlayer.com/stocks/agg/US:AAPL/1/day/2025-11-01/2025-11-30?sort=desc&limit=2" \
  -H "x-api-key: <YOUR_API_KEY>"

Response 200 OK

JSON
{
  "symbol": "US:AAPL",
  "results_count": 2,
  "results": [
    { "o": 228.5, "h": 230.8, "l": 227.9, "c": 229.4, "v": 52000000, "t": 1733011200000 },
    { "o": 226.0, "h": 228.9, "l": 225.5, "c": 228.5, "v": 48000000, "t": 1732924800000 }
  ],
  "next_offset": 2
}
  • Same supported intervals and max calendar windows as the crypto endpoint.
  • v may occasionally be null per bar when no consolidated volume is available for that interval.
  • US symbols: sub-daily bars cover the regular session (09:30 to the close, exchange time) and carry consolidated volume, including the session in progress. Hourly bars start at 09:30, 4-hour bars at 09:30 and 13:30.
  • results_count is the page length, not the total rows available.

WebSocket

Subscribe to stocks.quotes and stocks.trades for streaming updates (market-qualified symbols). See the WebSocket overview, Subscriptions, and Message types.