> From TickerLayer docs, ETFs: https://tickerlayer.com/docs/rest/etfs#etfs-quote
> 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

## Latest quote

**Endpoint:** `GET /etfs/quote/:symbol`

Consolidated bid/ask and timestamp from the REST quote path.

### Path parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `symbol` | string | Yes | Enabled ETF-style symbol (e.g. US500ETF, US100ETF, HK:2800). Most are product codes; a few Asian listings carry a market prefix. Trimmed and uppercased before lookup. Full list: GET /etfs/symbols. |

### Query parameters

| Parameter | Type | Description |
| --- | --- | --- |
| `spread` | string | `full` answers outside the US regular session with the newest book even when it is wider than 0.5% of the mid ([full spread](https://tickerlayer.com/docs/rest/etfs#etfs-full-spread)). Leave it out for the default quote. Values: `normalized`, `full`. Default: `normalized`. |

### Request

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

```python
import requests

res = requests.get(
    "https://api.tickerlayer.com/etfs/quote/US500ETF",
    headers={"x-api-key": "<YOUR_API_KEY>"},
)
print(res.json())
```

```javascript
const res = await fetch("https://api.tickerlayer.com/etfs/quote/US500ETF", {
  headers: { "x-api-key": "<YOUR_API_KEY>" },
});
const data = await res.json();
console.log(data);
```

```go
req, _ := http.NewRequest("GET", "https://api.tickerlayer.com/etfs/quote/US500ETF", nil)
req.Header.Set("x-api-key", "<YOUR_API_KEY>")
```

### Response

```json
{
  "symbol": "US500ETF",
  "bid": 718.65997,
  "ask": 718.65997,
  "bid_size": 90,
  "ask_size": 40,
  "timestamp": 1777555800000
}
```

### Notes

`404 unknown symbol` if the code is not enabled. `404 no quote available` when no consolidated quote can be resolved. Outside the US regular session (09:30 to 16:00 ET) a quote is published only while its spread stays within 0.5% of the mid; wider pre-market and after-hours books are held back and the last quote within that limit remains the served value. Add `?spread=full` for the newest book, wide ones included. Build candles from [trades](https://tickerlayer.com/docs/rest/etfs#etfs-last-trade) rather than from quotes.
