Stocks REST endpoints
Market-qualified US and international equity data: discovery, quotes, last trade, snapshots, and aggregates under /stocks.
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.
/stocks/symbolsStocks 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).
Request
curl -sS "https://api.tickerlayer.com/stocks/symbols?market=US" \
-H "x-api-key: <YOUR_API_KEY>"Response 200 OK
{
"symbols": [
{
"symbol": "US:AAPL",
"base_symbol": "AAPL",
"market": "US",
"name": "Apple Inc."
}
]
}/stocks/quote/:symbolLatest quote
Best bid and ask from the aggregated quote cache when present; otherwise resolved via the REST aggregation path for the symbol.
Path parameters
| Parameter | Type | Description |
|---|---|---|
| symbolreq | string | Market-qualified symbol (CC:SYMBOL, e.g. US:AAPL, DE:BMW). Disambiguates listings across regions; plain tickers are rejected. |
Request
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
{
"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./stocks/trade/last/:symbolLast 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.
Path parameters
| Parameter | Type | Description |
|---|---|---|
| symbolreq | string | Market-qualified symbol (CC:SYMBOL, e.g. US:AAPL, DE:BMW). Disambiguates listings across regions; plain tickers are rejected. |
Request
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
{
"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./stocks/snapshot/:symbolMarket snapshot
Combined bid/ask, last trade, previous daily close, and change metrics in one normalized aggregated view.
Path parameters
| Parameter | Type | Description |
|---|---|---|
| symbolreq | string | Market-qualified symbol (CC:SYMBOL, e.g. US:AAPL, DE:BMW). Disambiguates listings across regions; plain tickers are rejected. |
Request
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
{
"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./stocks/agg/:symbol/prevPrevious completed daily bar
Single most-recently completed UTC daily candle for the symbol.
Path parameters
| Parameter | Type | Description |
|---|---|---|
| symbolreq | string | Market-qualified symbol (CC:SYMBOL, e.g. US:AAPL, DE:BMW). Disambiguates listings across regions; plain tickers are rejected. |
Query parameters
| Parameter | Type | Description |
|---|---|---|
| interval | string | Optional. 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. |
Request
curl -sS "https://api.tickerlayer.com/stocks/agg/US:AAPL/prev" \
-H "x-api-key: <YOUR_API_KEY>"Response 200 OK
{
"symbol": "US:AAPL",
"result": {
"o": 228.5,
"h": 230.8,
"l": 227.9,
"c": 229.4,
"v": 52000000,
"t": 1733011200000
}
}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./stocks/agg/:symbol/:multiplier/:timespan/:from/:toAggregates — OHLCV range
Historical OHLCV bars for the symbol from the aggregated interval service, with the same pagination rules as crypto aggregates.
Path parameters
| Parameter | Type | Description |
|---|---|---|
| symbolreq | string | Enabled public symbol for the asset: crypto pairs like BTCUSD; stocks use CC:SYMBOL (e.g. US:AAPL). Trimmed before lookup. |
| multiplierreq | number | Interval multiplier. Valid pairs: 1, 5, 15 with minute; 1, 4 with hour; 1 with day. |
| timespanreq | string | minute · hour · day — case-insensitive. Other values return 400. |
| fromreq | string | UTC date start, inclusive. Format: YYYY-MM-DD. |
| toreq | string | UTC date end, inclusive. Format: YYYY-MM-DD. Must be ≥ from. |
Query parameters
| Parameter | Type | Description |
|---|---|---|
| limit | number | Page size. Default 500, max 5000. |
| offset | number | Zero-based row offset applied after sort. Default 0. |
| sort | string | Sort bars by timestamp t before pagination. asc or desc (default desc). |
Request
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
{
"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.
vmay 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_countis 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.