> TickerLayer documentation for AI agents and LLMs, the Markdown version of https://tickerlayer.com/docs/rest/symbols
> 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

# Symbols

See every symbol we cover in one list, then the symbols your key can read, per asset class.

Two kinds of list. `GET /symbols/catalog` shows everything we cover: every symbol across every asset class, the same for every key. The per asset class routes below show what your key can read, so they follow your plan. The same codes appear in the public [Symbols directory](https://tickerlayer.com/symbols).

## Full symbol catalog (every asset class)

**Endpoint:** `GET /symbols/catalog`

Every symbol we serve, with its asset class and market, filterable and paged. Any key can read it, including Free; it shows what we cover, not what your plan includes.

### Query parameters

| Parameter | Type | Description |
| --- | --- | --- |
| `asset_class` | string | Only this asset class. Values: `stocks`, `forex`, `crypto`, `indices`, `etfs`, `commodities`, `perpetuals`, `bonds`. |
| `market` | string | Only codes written as `CC:SYMBOL` with this prefix, for example `US`, `IN` or `DE`. Every stock and bond yield has one; forex, crypto, indices, commodities and perpetuals have `market: null`. |
| `q` | string | Case-insensitive text found in the symbol or the name, up to 64 characters. |
| `limit` | integer | Rows per page, 1 to 1000. Default: `100`. |
| `offset` | integer | Rows to skip. Pass next_offset to read the next page. Default: `0`. |

### Request

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

### Response

```json
{
  "results": [
    {
      "symbol": "US:KO",
      "name": "The Coca-Cola Company",
      "asset_class": "stocks",
      "market": "US"
    },
    {
      "symbol": "EURUSD",
      "name": "Euro / United States Dollar",
      "asset_class": "forex",
      "market": null
    },
    {
      "symbol": "BTCUSD",
      "name": "Bitcoin / USD",
      "asset_class": "crypto",
      "market": null
    }
  ],
  "results_count": 100,
  "total_count": 17076,
  "next_offset": 100
}
```

### Notes

The example is abridged to one row from each of three asset classes. A real page holds up to `limit` rows, sorted by asset class and then by symbol, so the first pages are stocks; filter with `asset_class`, `market` or `q` to go straight to what you need. `market` is the country of the exchange for stocks and bond yields (`US`, `DE`, `JP`); forex, crypto, indices, commodities and perpetuals are not tied to one country, so theirs is `null`. `total_count` counts every match before paging: `?asset_class=stocks&market=DE&limit=1` tells you how many German stocks we cover. Pass `next_offset` as `offset` for the next page, until it is `null`. A symbol two asset classes serve, such as `XAUUSD`, is listed under both. Reading a price still needs a plan that includes it: a symbol listed here that your key does not include answers `403`. Each call counts as one request.

| Routes | Response |
| --- | --- |
| Stocks, forex, indices, ETFs, commodities | A `symbols` array, with no top-level `count`. |
| Crypto | Items under `data`, each with `type: "crypto"`, and a top-level `count`. |
| Perpetuals | A `symbols` array with a top-level `count`. |
| Overnight | `results` with `results_count` and `session_open`. |
| Futures CFDs | `products` with a top-level `count` from [GET /futures/products](https://tickerlayer.com/docs/products/futures#futures-products-route); the dated months come from [GET /futures/contracts](https://tickerlayer.com/docs/products/futures#futures-contracts). |
| Bonds | No list route: the fixed tenors are listed [below](https://tickerlayer.com/docs/rest/symbols#bonds-symbols). |

## Stocks symbol list (global)

**Endpoint:** `GET /stocks/symbols`

The stocks your key can read, as market-qualified CC:SYMBOL codes, sorted by market, then by base symbol.

### Query parameters

| Parameter | Type | Description |
| --- | --- | --- |
| `market` | string | A two-letter market code, for example US or DE. Leave it out to list every market your key includes. |

### Request

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

### Response

```json
{
  "symbols": [
    {
      "symbol": "US:JPM",
      "base_symbol": "JPM",
      "market": "US",
      "name": "JPMorgan Chase & Co."
    },
    {
      "symbol": "US:KO",
      "base_symbol": "KO",
      "market": "US",
      "name": "The Coca-Cola Company"
    }
  ]
}
```

### Notes

A market your key does not include returns an empty list. To see the stocks we cover in any market, use the [full catalog](https://tickerlayer.com/docs/rest/symbols#symbols-catalog), for example `GET /symbols/catalog?asset_class=stocks&market=IN`.

## Forex symbol list

**Endpoint:** `GET /forex/symbols`

Returns enabled FX pairs and crosses, sorted by symbol ascending.

### Request

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

### Response

```json
{
  "symbols": [
    { "symbol": "EURUSD", "name": "Euro / United States Dollar" },
    { "symbol": "GBPUSD", "name": "British Pound / United States Dollar" }
  ]
}
```

## Crypto symbol list

**Endpoint:** `GET /crypto/symbols`

Returns enabled crypto spot symbols with display names and a "crypto" type discriminator.

### Request

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

### Response

```json
{
  "data": [
    { "symbol": "BTCUSD", "name": "Bitcoin / USD", "type": "crypto" },
    { "symbol": "ETHUSD", "name": "Ethereum / USD", "type": "crypto" }
  ],
  "count": 2
}
```

### Notes

Prefer `GET /crypto/symbols`, like the other asset classes. The legacy `GET /symbols` route merges crypto, forex, commodities, ETFs and indices; it does **not** include stocks, which stay on `GET /stocks/symbols`.

## Indices symbol list

**Endpoint:** `GET /indices/symbols`

Returns curated index symbols available on the REST API (generic regional codes), sorted by symbol ascending.

### Request

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

### Response

```json
{
  "symbols": [
    { "symbol": "DE40", "name": "Germany 40" },
    { "symbol": "EU50", "name": "Europe 50" },
    { "symbol": "JP225", "name": "Japan 225" },
    { "symbol": "US500", "name": "US 500" }
  ]
}
```

### Notes

Public codes are source-neutral (for example `US500`, `JP225`, `HK50`). See also the [Indices REST reference](https://tickerlayer.com/docs/rest/indices).

## ETFs symbol list

**Endpoint:** `GET /etfs/symbols`

Returns ETF-style symbols available on the REST API (curated codes plus enabled long-tail / regional rows for your key), sorted by symbol ascending.

### Request

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

### Response

```json
{
  "symbols": [
    { "symbol": "US100ETF", "name": "US growth 100" },
    { "symbol": "US500ETF", "name": "US 500" }
  ]
}
```

### Notes

Display names are product-generic (no issuer or licensed benchmark branding). See also the [ETFs REST reference](https://tickerlayer.com/docs/rest/etfs).

## Commodity symbol list

**Endpoint:** `GET /commodities/symbols`

Returns enabled commodity reference symbols (metals, energy, agriculture), sorted by symbol ascending. Aliases may be accepted on quote routes but are not repeated in this list.

### Request

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

### Response

```json
{
  "symbols": [
    { "symbol": "BRENTUSD", "name": "Brent crude oil" },
    { "symbol": "XAUUSD", "name": "Gold" },
    { "symbol": "WTIUSD", "name": "WTI crude oil" }
  ]
}
```

## Perpetuals symbol list

**Endpoint:** `GET /perpetuals/symbols`

Every perpetual contract with its name, underlying class and how many sources list it. Open to any valid key, with or without Perpetuals on the account.

### Query parameters

| Parameter | Type | Description |
| --- | --- | --- |
| `underlying` | string | Filter by the class of the underlying; an unknown value is ignored. Values: `equity`, `etf`, `commodity`, `index`, `forex`, `pre_ipo`, `crypto`. |

### Request

```bash
curl -sS "https://api.tickerlayer.com/perpetuals/symbols?underlying=commodity" \
  -H "x-api-key: <YOUR_API_KEY>"
```

### Response

```json
{
  "symbols": [
    {
      "symbol": "XAUUSDT",
      "name": "Gold",
      "instrument_type": "perpetual",
      "underlying_asset_class": "commodity",
      "base": "XAU",
      "source_count": 6
    }
  ],
  "count": 8
}
```

### Notes

Source-level accounts can add `?sources=true` for the per-source universe; see [Perpetuals](https://tickerlayer.com/docs/products/perpetuals#perpetuals-symbols-sources).

## Overnight symbol list

**Endpoint:** `GET /overnight/symbols`

The US stocks and ETFs covered by the overnight session add-on, and whether the session is open right now.

### Request

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

### Response

```json
{
  "session_open": false,
  "results_count": 2,
  "results": [
    { "symbol": "US:KO", "kind": "stock" },
    { "symbol": "US500ETF", "kind": "etf" }
  ]
}
```

### Notes

Needs the overnight add-on: without it the route answers `403 overnight access not enabled for your account`. See [Overnight session](https://tickerlayer.com/docs/products/stocks#overnight).

## Bond symbols

Bonds have no list route: the set is fixed. Symbols are `CC:TENOR`, for example `US:10Y`, served by [/bond](https://tickerlayer.com/docs/products/bonds) and `bonds.quotes`.

| Country | Tenors |
| --- | --- |
| `US` | `1M` `3M` `6M` `1Y` `2Y` `3Y` `5Y` `7Y` `10Y` `20Y` `30Y` |
| `DE` `ES` `FR` `IT` `UK` | `1Y` `2Y` `3Y` `5Y` `10Y` `30Y` |
