> TickerLayer documentation for AI agents and LLMs, the Markdown version of https://tickerlayer.com/docs
> REST base URL https://api.tickerlayer.com, API key in the `x-api-key` header. WebSocket wss://stream.tickerlayer.com?apiKey=YOUR_API_KEY.
> Any docs page reads as Markdown at its URL plus `.md`. Index: https://tickerlayer.com/llms.txt · Full API reference: https://tickerlayer.com/llms-full.txt

# 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.

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, to commodity reference prices, and to Futures CFDs, which are reference prices calculated with our own methodology and not the official settlement or closing price of any contract month. The data is for informational and technical use only. Redistribution is prohibited unless expressly authorized in writing.

[Quickstart](https://tickerlayer.com/docs/quickstart) [Authentication](https://tickerlayer.com/docs/authentication) [Market Status](https://tickerlayer.com/docs/market-status)

## What you can access

Nine feeds on one key. Each one opens its own reference: routes, parameters, example responses and the WebSocket channels it streams on.

- [Stocks](https://tickerlayer.com/docs/products/stocks): US and international equities with market-qualified symbols. REST `/stocks`, WebSocket `stocks.quotes`, `stocks.trades`.
- [Forex](https://tickerlayer.com/docs/products/forex): Major, minor and emerging-market currency pairs. REST `/forex`, WebSocket `forex.quotes`, `forex.trades`.
- [Crypto](https://tickerlayer.com/docs/products/crypto): Spot crypto pairs with normalized quote and trade fields. REST `/crypto`, WebSocket `crypto.quotes`, `crypto.trades`.
- [Indices](https://tickerlayer.com/docs/rest/indices): Index-style indicative levels for the major equity markets. REST `/indices`, WebSocket `indices.quotes`, `indices.trades`.
- [ETFs](https://tickerlayer.com/docs/rest/etfs): ETF-style reference instruments on the stocks endpoint pattern. REST `/etfs`, WebSocket `etfs.quotes`, `etfs.trades`.
- [Commodities](https://tickerlayer.com/docs/products/commodities): Metals, energy and agriculture reference prices. REST `/commodities`, WebSocket `commodities.quotes`, `commodities.trades`.
- [Bonds](https://tickerlayer.com/docs/products/bonds): Government bond yields by country and tenor, as daily observations. REST `/bond`, WebSocket `bonds.quotes`.
- [Perpetuals](https://tickerlayer.com/docs/products/perpetuals): 24/7 perpetual prices across stocks, ETFs, commodities, indices, FX, crypto and pre-IPO markets. REST `/perpetuals`, WebSocket `perpetuals.quotes`, `perpetuals.marks`, `perpetuals.trades`.
- [Futures CFDs](https://tickerlayer.com/docs/products/futures): Contract-month CFDs on energy, metals, grains, rates and US equity indices, with the front-month chain and four roll methods. REST `/futures`, WebSocket `futures.quotes`.

## Authentication

| Surface | Send the key as |
| --- | --- |
| REST | `x-api-key: <YOUR_API_KEY>` header |
| WebSocket | `wss://stream.tickerlayer.com/?apiKey=<YOUR_API_KEY>` on the upgrade URL |

A missing or invalid key returns `401`; an inactive key, or one without the permission the request needs, returns `403`. [Authentication guide](https://tickerlayer.com/docs/authentication)

## Base URL & conventions

**Base URL**

```
https://api.tickerlayer.com
```

- **Format:** JSON, with `Content-Type: application/json`.
- **Timestamps:** Unix milliseconds (`number`).
- **Methods:** `GET` for every data endpoint.
- **Symbols:** Uppercase codes from the enabled registries; path symbols are trimmed and uppercased before lookup.

## Symbol format

To see everything we cover, across every asset class and with any key, use the [full catalog](https://tickerlayer.com/docs/rest/symbols#symbols-catalog) (`GET /symbols/catalog`). Each asset class also lists the symbols your key can read:

| Route | Returns | Example |
| --- | --- | --- |
| `GET /stocks/symbols` | Equities as `CC:SYMBOL`, filter with `?market=CC` | `US:KO` |
| `GET /forex/symbols` | FX pairs | `EURUSD` |
| `GET /crypto/symbols` | Spot crypto pairs | `BTCUSD` |
| `GET /indices/symbols` | Index codes | `US500` |
| `GET /etfs/symbols` | ETF codes | `US500ETF` |
| `GET /commodities/symbols` | Commodity references | `XAUUSD` |
| `GET /perpetuals/symbols` | Perpetual contracts | `XAUUSDT` |
| `GET /futures/products` | Futures CFD products with their chain and roll symbols | `WTIUSD.C1` |
| Bonds | No list route: the [Bonds page](https://tickerlayer.com/docs/products/bonds#symbol-coverage) lists every `CC:TENOR` | `US:10Y` |

More in the [Symbols reference](https://tickerlayer.com/docs/rest/symbols).

## Response conventions

- **Null and optional fields:** Required fields are always present. Optional fields may be left out (for example `last_size` on some snapshots); nullable fields are present as `null` when no reliable figure exists at that moment. Individual fields may be optional depending on market conditions; see each route for response details.
- **404 vs empty:** An unknown symbol or resource returns `404` with a message; an empty list returns `200` with an empty array.
- **Rate limits:** Over a limit returns `429`. See [Rate limits](https://tickerlayer.com/docs/limits).
- **Error shape:** `{ statusCode, message, error }` on every REST error. See [Errors](https://tickerlayer.com/docs/errors).

## Docs for AI agents

Every page here also reads as Markdown, for ChatGPT, Claude, Cursor or your own agent.

- **Copy for AI:** On an endpoint it copies that endpoint; **Copy page for AI** at the top copies the whole page.
- **Open .md:** Opens the same text as a file. Any docs URL works with `.md` added, for example [`/docs/products/stocks.md`](https://tickerlayer.com/docs/products/stocks.md), and so does a request with `Accept: text/markdown`.
- **llms.txt and MCP:** [`llms.txt`](https://tickerlayer.com/llms.txt) indexes the docs, [`llms-full.txt`](https://tickerlayer.com/llms-full.txt) holds the full API reference in one file, and the [MCP server](https://tickerlayer.com/docs/mcp) gives agents the data itself.

## Next steps

- [Quickstart](https://tickerlayer.com/docs/quickstart): A key, a first REST call and a live stream in a few minutes.
- [WebSocket stream](https://tickerlayer.com/docs/websocket): Connect, subscribe to channels and handle live frames.
- [Rate limits](https://tickerlayer.com/docs/limits): Quotas, per-second limits and 429 responses.
- [Symbols](https://tickerlayer.com/docs/rest/symbols): List the symbols your key can read, per asset class.
