DocsIndices

Indices REST endpoints

Indicative index levels under /indices: discovery, quotes, last trade, snapshots, and aggregates for analytics, display, and operational tooling.

Authx-api-key headerBase path/indicesWebSocketindices.quotes, indices.tradesSymbol formatPublic index codes (e.g. US500, US30, DE40, EU50)
Indices endpoints provide indicative reference levels for analytics, display, and operational tooling. Responses follow the same core REST schema as other asset classes. For coverage and behavior at a product level, see Indices product docs (same contract).

Symbol coverage

Symbols are generic public codes such as US500, US30, US100, DE40, EU50, and JP225. Unlike stocks and ETFs, index codes carry no market prefix: an index is written HK33, never HK:HK33, and the prefixed form is rejected. Use GET /indices/symbols for the curated list enabled for your key (see Symbols → Indices).

GET/indices/symbols

Indices symbol list

Curated index symbols available on the REST API.

curl -sS "https://api.tickerlayer.com/indices/symbols" \
  -H "x-api-key: <YOUR_API_KEY>"

Response 200 OK

JSON
{
  "symbols": [
    { "symbol": "DE40", "name": "Germany 40" },
    { "symbol": "EU50", "name": "Europe 50" },
    { "symbol": "JP225", "name": "Japan 225" }
  ]
}
GET/indices/quote/:symbol

Latest quote

Indicative bid/ask and timestamp from the consolidated REST quote path.

ParameterTypeDescription
symbolreqstringEnabled index symbol (e.g. US500, DE40, EU50, JP225). Generic regional codes only—trimmed and uppercased before lookup. Full list: GET /indices/symbols.
curl -sS "https://api.tickerlayer.com/indices/quote/US500" \
  -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": "US500",
  "bid": 4788.12,
  "ask": 4788.12,
  "bid_size": 62,
  "ask_size": 58,
  "timestamp": 1743512400000
}
404 unknown symbol if the code is not enabled. 404 no quote available when no consolidated quote can be resolved.
GET/indices/trade/last/:symbol

Last trade

Latest indicative trade-style print for the index. size may be null when the feed has no lot size.

ParameterTypeDescription
symbolreqstringEnabled index symbol (e.g. US500, DE40, EU50, JP225). Generic regional codes only—trimmed and uppercased before lookup. Full list: GET /indices/symbols.
curl -sS "https://api.tickerlayer.com/indices/trade/last/US500" \
  -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": "US500",
  "price": 4788.12,
  "size": 62,
  "timestamp": 1743512400000
}
404 when the symbol is unknown or no trade-style value can be resolved (message text may be unknown symbol or symbol not available).
GET/indices/snapshot/:symbol

Market snapshot

Combined bid/ask, last reference level, previous daily close, and change metrics.

ParameterTypeDescription
symbolreqstringEnabled index symbol (e.g. US500, DE40, EU50, JP225). Generic regional codes only—trimmed and uppercased before lookup. Full list: GET /indices/symbols.
curl -sS "https://api.tickerlayer.com/indices/snapshot/US500" \
  -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": "US500",
  "bid": 4788.12,
  "ask": 4788.12,
  "bid_size": 62,
  "ask_size": 58,
  "last_price": 4788.12,
  "last_timestamp": 1743512400000,
  "prev_close": 4750.00,
  "change": 38.12,
  "change_percent": 0.8025
}
change_percent is null when prev_close is zero or unavailable.
GET/indices/agg/:symbol/prev

Previous completed daily bar

Most recent fully completed daily OHLCV bar in UTC (previous session close).

ParameterTypeDescription
symbolreqstringEnabled index symbol (e.g. US500, DE40, EU50, JP225). Generic regional codes only—trimmed and uppercased before lookup. Full list: GET /indices/symbols.
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/indices/agg/US500/prev" \
  -H "x-api-key: <YOUR_API_KEY>"

Response 200 OK

JSON
{
  "symbol": "US500",
  "result": {
    "o": 5950.0,
    "h": 5980.0,
    "l": 5930.0,
    "c": 5965.0,
    "v": null,
    "t": 1732924800000
  }
}
404 no bar available when no completed daily bar can be resolved. 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/indices/agg/:symbol/:multiplier/:timespan/:from/:to

Aggregates — OHLCV range

Historical bars between two UTC calendar dates. Same interval rules and pagination as other asset classes.

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/indices/agg/EU50/1/day/2025-11-01/2025-11-30?sort=desc&limit=2" \
  -H "x-api-key: <YOUR_API_KEY>"

Response 200 OK

JSON
{
  "symbol": "EU50",
  "results_count": 2,
  "results": [
    { "o": 5950.0, "h": 5980.0, "l": 5930.0, "c": 5965.0, "v": null, "t": 1733011200000 },
    { "o": 5920.0, "h": 5945.0, "l": 5905.0, "c": 5935.0, "v": null, "t": 1732924800000 }
  ],
  "next_offset": 2
}
  • v may be null when no consolidated volume exists for that interval.
  • Same supported intervals and max calendar windows as stocks aggregates.

WebSocket Streaming

Stream live quotes and trades for this asset class over the public WebSocket.

Connect
wss://stream.tickerlayer.com/?apiKey=<YOUR_API_KEY>

Available channels

Quotesindices.quotesTradesindices.trades

Subscribe example

After the connection is ready, send a JSON text frame:

Subscribe
{
  "action": "subscribe",
  "channels": [
    "indices.quotes",
    "indices.trades"
  ],
  "symbols": [
    "US500",
    "DE40"
  ]
}

Example message

indices.quotes
{
  "type": "quote",
  "channel": "indices.quotes",
  "asset": "indices",
  "symbol": "US500",
  "bid": 4788.12,
  "ask": 4788.12,
  "bid_size": 62,
  "ask_size": 58,
  "ts": 1743512400000,
  "timestamp": 1743512400000
}

General WebSocket documentation

For authentication, subscribe/unsubscribe lifecycle, errors, limits, and heartbeats, see the WebSocket overview and Subscriptions.