> From TickerLayer docs, Symbols: https://tickerlayer.com/docs/rest/symbols#symbols-catalog
> REST base URL https://api.tickerlayer.com, API key in the `x-api-key` header. WebSocket wss://stream.tickerlayer.com?apiKey=YOUR_API_KEY. Full API reference: https://tickerlayer.com/llms-full.txt

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