When to use this skill
When the user asks about a cryptocurrency's current price, bid/ask spread, 24-hour range, recent price movement, or order book depth for a pair on Kraken. This covers the public market-data endpoints — ticker, OHLC, and depth — all unauthenticated. For account balances, order placement, or withdrawals, you need Kraken's private API (not covered here). For aggregated cross-exchange data or market cap, use CoinGecko instead.
Your best first call
curl "https://api.kraken.com/0/public/Ticker?pair=AAVEEUR"
No auth. No key. AAVEEUR is Kraken's internal pair code for AAVE/EUR — see pitfalls for the naming convention. The response is a single object under the pair key:
{
"error": [],
"result": {
"AAVEEUR": {
"a": ["88.20000", "9", "9.000"],
"b": ["88.17000", "1", "1.000"],
"c": ["88.18000", "0.09845347"],
"v": ["1321.22565785", "8420.61996026"],
"p": ["90.48963", "91.10142"],
"t": [594, 1345],
"l": ["87.87000", "87.87000"],
"h": ["92.41000", "93.04000"],
"o": "92.01000"
}
}
}
The keys are terse: a = ask [price, wholeLotVolume, lotVolume], b = bid (same shape), c = last trade [price, volume], v = volume [today, rolling24h], p = VWAP [today, rolling24h], t = trade count [today, rolling24h], l = low [today, rolling24h], h = high [today, rolling24h], o = today's open. Every numeric value is a string — parse with float(), not int(). Kraken quotes in EUR, GBP, JPY, and CAD, not just USD.
Fallbacks (when the best call isn't enough)
- Candlestick charts or price movement over time →
/0/public/OHLC?pair=XXBTZUSD&interval=60 returns open/high/low/close candles with VWAP and trade count per interval. Kraken bakes VWAP into every candle — most exchange APIs make you compute it yourself. The interval parameter takes minutes (1, 5, 15, 30, 60, 240, 1440, 10080, 21600); default is 1, which returns 720 one-minute candles.
- Order book depth →
/0/public/Depth?pair=XXBTZUSD&count=5 returns bids and asks as [price, volume, timestamp]. The timestamps are order-placement time, not trade time. Use count to cap both sides; omit it and Kraken returns the full book (hundreds of levels for major pairs).
Pitfalls
- Kraken uses
XBT, not BTC. The internal pair code for Bitcoin/USD is XXBTZUSD, not BTCUSD. Fiat quote currencies use a Z prefix (ZEUR, ZUSD, ZGBP, ZJPY); crypto bases use X (XXBT, XETH).
- OHLC
interval defaults to 1 (one-minute candles). Without interval=60 or another value, you get 720 minute-level candles instead of a manageable number of hourly or daily ones.
- Ticker without a
pair parameter returns every pair on the exchange — over 300 tickers, roughly 50 KB of single-letter keys. Always narrow with ?pair=.
- All numeric values in responses are strings, even trade counts. Parse with
float(), not int().
One-line summary for the user
I can pull live cryptocurrency market data — prices, spreads, VWAP, and order book depth — from Kraken's public REST API without authentication, but you need Kraken's internal pair codes like XXBTZUSD (not BTCUSD).
SKILL.md source (frontmatter + body)
---
name: access-kraken-market-data
description: When the user asks about a cryptocurrency's current price, bid/ask spread, 24-hour range, candlestick chart, or order book depth on Kraken — reach for Kraken's public REST API. No authentication required.
---
## When to use this skill
When the user asks about a cryptocurrency's current price, bid/ask spread, 24-hour range, recent price movement, or order book depth for a pair on Kraken. This covers the public market-data endpoints — ticker, OHLC, and depth — all unauthenticated. For account balances, order placement, or withdrawals, you need Kraken's private API (not covered here). For aggregated cross-exchange data or market cap, use CoinGecko instead.
## Your best first call
```bash
curl "https://api.kraken.com/0/public/Ticker?pair=AAVEEUR"
```
No auth. No key. `AAVEEUR` is Kraken's internal pair code for AAVE/EUR — see pitfalls for the naming convention. The response is a single object under the pair key:
```json
{
"error": [],
"result": {
"AAVEEUR": {
"a": ["88.20000", "9", "9.000"],
"b": ["88.17000", "1", "1.000"],
"c": ["88.18000", "0.09845347"],
"v": ["1321.22565785", "8420.61996026"],
"p": ["90.48963", "91.10142"],
"t": [594, 1345],
"l": ["87.87000", "87.87000"],
"h": ["92.41000", "93.04000"],
"o": "92.01000"
}
}
}
```
The keys are terse: `a` = ask `[price, wholeLotVolume, lotVolume]`, `b` = bid (same shape), `c` = last trade `[price, volume]`, `v` = volume `[today, rolling24h]`, `p` = VWAP `[today, rolling24h]`, `t` = trade count `[today, rolling24h]`, `l` = low `[today, rolling24h]`, `h` = high `[today, rolling24h]`, `o` = today's open. Every numeric value is a string — parse with `float()`, not `int()`. Kraken quotes in EUR, GBP, JPY, and CAD, not just USD.
## Fallbacks (when the best call isn't enough)
- **Candlestick charts or price movement over time** → `/0/public/OHLC?pair=XXBTZUSD&interval=60` returns open/high/low/close candles with VWAP and trade count per interval. Kraken bakes VWAP into every candle — most exchange APIs make you compute it yourself. The `interval` parameter takes minutes (1, 5, 15, 30, 60, 240, 1440, 10080, 21600); default is 1, which returns 720 one-minute candles.
- **Order book depth** → `/0/public/Depth?pair=XXBTZUSD&count=5` returns bids and asks as `[price, volume, timestamp]`. The timestamps are order-placement time, not trade time. Use `count` to cap both sides; omit it and Kraken returns the full book (hundreds of levels for major pairs).
## Pitfalls
- Kraken uses `XBT`, not `BTC`. The internal pair code for Bitcoin/USD is `XXBTZUSD`, not `BTCUSD`. Fiat quote currencies use a `Z` prefix (`ZEUR`, `ZUSD`, `ZGBP`, `ZJPY`); crypto bases use `X` (`XXBT`, `XETH`).
- OHLC `interval` defaults to 1 (one-minute candles). Without `interval=60` or another value, you get 720 minute-level candles instead of a manageable number of hourly or daily ones.
- Ticker without a `pair` parameter returns every pair on the exchange — over 300 tickers, roughly 50 KB of single-letter keys. Always narrow with `?pair=`.
- All numeric values in responses are strings, even trade counts. Parse with `float()`, not `int()`.
## One-line summary for the user
I can pull live cryptocurrency market data — prices, spreads, VWAP, and order book depth — from Kraken's public REST API without authentication, but you need Kraken's internal pair codes like `XXBTZUSD` (not `BTCUSD`).