Documentation
TickerLayer is a developer-first aggregated market data platform. REST for snapshots, quotes, trades, and historical bars. Public WebSocket for low-latency streaming when market connections are active.
Recent updates
- US overnight session add-on: aggregated quotes 20:00 to 04:00 New York
- Perpetuals: 24/7 quotes, marks, trades and bars for 260+ contracts
- USDINR on the 4-decimal onshore grid; prev_close is the 15:30 IST close
Important Data Notice
All API and WebSocket data provided by TickerLayer comes from non-exchange sources, except the Perpetuals feed, which is a calculated composite of third-party perpetual futures markets and is not the price of any underlying on its primary market. None of it is official exchange feed data, and it may be delayed, inaccurate, incomplete, or different from official market prices. The same applies to CFD-style index and ETF-style reference symbols and to commodity reference prices exposed through the API. The data is for informational and technical use only. Redistribution is prohibited unless expressly authorized in writing.
What you can access
Eight feeds on one key. Each one opens its own reference: routes, parameters, example responses and the WebSocket channels it streams on.
- StocksUS and international equities with market-qualified symbols.REST/stocksWSstocks.quotes · trades
- ForexMajor, minor and emerging-market currency pairs.REST/forexWSforex.quotes · trades
- CryptoSpot crypto pairs with normalized quote and trade fields.REST/cryptoWScrypto.quotes · trades
- IndicesIndex-style indicative levels for the major equity markets.REST/indicesWSindices.quotes · trades
- ETFsETF-style reference instruments on the stocks endpoint pattern.REST/etfsWSetfs.quotes · trades
- CommoditiesMetals, energy and agriculture reference prices.REST/commoditiesWScommodities.quotes · trades
- BondsGovernment bond yields by country and tenor, as daily observations.REST/bondWSbonds.quotes
- PerpetualsNewPerpetual futures on stocks, commodities, indices, FX and crypto, priced 24/7.REST/perpetualsWSperpetuals.quotes · marks · trades
Authentication
Every request requires your API key. REST uses a header; WebSocket uses the upgrade URL:
- REST —
x-api-key: <YOUR_API_KEY>header - WebSocket upgrade —
wss://stream.tickerlayer.com/?apiKey=<YOUR_API_KEY>
Missing or invalid keys return 401. Inactive keys or keys without the required permissions return 403. Full authentication guide →
Base URL & conventions
All REST routes are served from the same host. Use the base URL below:
https://api.tickerlayer.com- All responses are JSON with
Content-Type: application/json. - Timestamps are Unix milliseconds (
number). - HTTP methods are
GETonly for data endpoints. 404responses use NestJS JSON shape{ "statusCode": 404, "message": "…" }when a route is found but the requested symbol or resource does not exist.
Symbol format
Symbols are uppercase strings from the enabled registries. Path parameters are normalized (trimmed and uppercased) before lookup. Use the symbols endpoints to discover what is enabled for your key:
GET /stocks/symbols— equities withCC:SYMBOL(optional?market=CC)GET /forex/symbols— FX pairs (e.g.EURUSD)GET /crypto/symbols— crypto spot (e.g.BTCUSD)GET /indices/symbols— index codes (e.g.US500,JP225)GET /etfs/symbols— ETF-style codes (e.g.US500ETF)GET /commodities/symbols— commodity references (e.g.XAUUSD,WTIUSD)- Bonds — REST yield only via
GET /bond/last/:symbol(no symbols list)
Unknown symbols typically return 404 with a NestJS { "statusCode", "message" } body. See Symbols reference →
Response conventions
- Null and optional fields — required fields are always present. Fields explicitly documented as optional may be omitted entirely (for example
last_sizeon some snapshots). Nullable fields are present withnullwhen no reliable figure exists in the aggregated view at that moment. Individual fields may be optional depending on market conditions; see each route for response details. - 404 vs empty — a missing resource returns
404with a plain message. An empty list returns200with an empty array. - Rate limiting — exceeded quotas return
429. Refer to the Rate limits page. - Error shapes — REST errors follow NestJS default shape:
{ statusCode, message, error }. See the Errors reference.
Next steps
Quickstart
Issue a key, make your first REST call, and open a WebSocket in under 5 minutes.
Get started →WebSocket stream
Connect, authenticate, subscribe to channels, and handle real-time events.
WebSocket docs →Rate limits
Quotas, HTTP 429 structure, and in-stream WebSocket error codes.
View limits →Symbols reference
List enabled symbols for any asset class to discover what your key can access.
List symbols →