# VALR Exchange API
> Live spot market data from VALR, South Africa's leading crypto exchange, served straight from its public order books — no key on the data, nothing cached, nothing stored. Look up any market for its last price, best bid/ask and spread, 24h high/low, 24h change and base/quote volume; rank every market for a quote currency (South African rand ZAR, USDC, USDT or BTC) by 24h turnover; list the tradable pairs with their base and quote; or pull live order-book depth with the running spread. Markets are addressed BASE_QUOTE (BTC_ZAR). This is the VALR venue specifically — a distinct South-African-rand price feed, ideal for ZAR price discovery and Africa-market arbitrage, separate from the USD/USDT-quoted exchange APIs in the catalogue.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/valr-api/..."
```

## Pricing
- **Free** (Free) — 21,500 calls/Mo, 3 req/s
- **Starter** ($9/Mo) — 285,000 calls/Mo, 10 req/s
- **Growth** ($25/Mo) — 1,290,000 calls/Mo, 25 req/s
- **Scale** ($60/Mo) — 4,600,000 calls/Mo, 50 req/s

## Endpoints

### Ticker

#### `GET /v1/ticker` — Ticker for one market

**Parameters:**
- `market` (query, optional, string) — Market as BTC_ZAR Example: `BTC_ZAR`
- `base` (query, optional, string) — Base asset (with quote=) Example: `ETH`
- `quote` (query, optional, string) — Quote asset Example: `ZAR`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/valr-api/v1/ticker?market=BTC_ZAR&base=ETH&quote=ZAR"
```

**Response:**
```json
{
    "data": {
        "ask": 1042384,
        "bid": 1041749,
        "base": "BTC",
        "last": 1041579,
        "quote": "ZAR",
        "market": "BTCZAR",
        "source": "VALR",
        "spread": 635,
        "low_24h": 1011305,
        "high_24h": 1047059,
        "change_24h": 16274,
        "prev_close": 1025305,
        "change_24h_pct": 1.58,
        "base_volume_24h": 12.57860437,
        "quote_volume_24h": 12937333.66
    },
    "meta": {
        "timestamp": "2026-06-11T07:48:30.747Z",
        "request_id": "dc3b6d20-7d44-465e-a64c-64f1ffaff8a3"
    },
    "status": "ok",
    "message": "Ticker retrieved successfully",
    "success": true
}
```

### Tickers

#### `GET /v1/tickers` — All markets for a quote ranked by 24h turnover

**Parameters:**
- `quote` (query, optional, string) — Quote asset Example: `ZAR`
- `limit` (query, optional, string) — Max results (1-400) Example: `50`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/valr-api/v1/tickers?quote=ZAR&limit=50"
```

**Response:**
```json
{
    "data": {
        "count": 16,
        "quote": "ZAR",
        "source": "VALR",
        "tickers": [
            {
                "ask": 16.6013,
                "bid": 16.6012,
                "base": "USDT",
                "last": 16.6012,
                "quote": "ZAR",
                "market": "USDTZAR",
                "spread": 0.0001,
                "low_24h": 16.5623,
                "high_24h": 16.695,
                "change_24h": -0.0013,
                "prev_close": 16.6025,
                "change_24h_pct": 0,
                "base_volume_24h": 23546440.7845,
                "quote_volume_24h": 391540703.53
            },
            {
                "ask": 1042384,
                "bid": 1041749,
                "base": "BTC",
                "last": 1041579,
                "quote": "ZAR",
                "market": "BTCZAR",
                "spread": 635,
                "low_24h": 1011305,
                "high_24h": 1047059,
                "change_24h": 16274,
                "prev_close": 1025305,
                "change_24h_pct": 1.58,
                "base_volume_24h": 12.57860437,
                "quote_volume_24h": 12937333.66
            },
            {
                "ask": 16.6236,
                "bid": 16.6235,
                "base": "USDC",
                "last": 16.6235,
                "quote": "ZAR",
                "market": "USDCZAR",
                "spread": 0.0001,
                "low_24h": 16.5801,
                "high_
…(truncated, see openapi.json for full schema)
```

### Markets

#### `GET /v1/markets` — Tradable pairs with base/quote

**Parameters:**
- `quote` (query, optional, string) — Filter by quote asset Example: `ZAR`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/valr-api/v1/markets?quote=ZAR"
```

**Response:**
```json
{
    "data": {
        "count": 23,
        "quote": "ZAR",
        "source": "VALR",
        "markets": [
            {
                "base": "AVAX",
                "type": "SPOT",
                "quote": "ZAR",
                "active": true,
                "market": "AVAXZAR"
            },
            {
                "base": "BNB",
                "type": "SPOT",
                "quote": "ZAR",
                "active": true,
                "market": "BNBZAR"
            },
            {
                "base": "BTC",
                "type": "SPOT",
                "quote": "ZAR",
                "active": true,
                "market": "BTCZAR"
            },
            {
                "base": "BTC",
                "type": "FUTURE",
                "quote": "ZAR",
                "active": false,
                "market": "BTCZARPERP"
            },
            {
                "base": "DOGE",
                "type": "SPOT",
                "quote": "ZAR",
                "active": true,
                "market": "DOGEZAR"
            },
            {
                "base": "ETHW",
                "type": "SPOT",
                "quote": "ZAR",
                "active": false,
                "market": "ETHWZAR"
            },
            {
                "base": "ETH",
                "type": "SPOT",
                "quote": "ZAR",
                "active": true,
                "market": "ETHZAR"
            },
            {
                "base": "ET
…(truncated, see openapi.json for full schema)
```

### Book

#### `GET /v1/book` — Live order-book depth with running spread

**Parameters:**
- `market` (query, optional, string) — Market as BTC_ZAR Example: `BTC_ZAR`
- `limit` (query, optional, string) — Depth per side (1-100) Example: `20`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/valr-api/v1/book?market=BTC_ZAR&limit=20"
```

**Response:**
```json
{
    "data": {
        "asks": [
            {
                "price": 1042478,
                "amount": 0.036
            },
            {
                "price": 1042479,
                "amount": 0.18239517
            },
            {
                "price": 1042480,
                "amount": 0.7682639
            },
            {
                "price": 1042549,
                "amount": 0.0175
            },
            {
                "price": 1042859,
                "amount": 0.12717826
            },
            {
                "price": 1042860,
                "amount": 0.24006706
            },
            {
                "price": 1043526,
                "amount": 0.15
            },
            {
                "price": 1043575,
                "amount": 0.13
            },
            {
                "price": 1043979,
                "amount": 0.24006707
            },
            {
                "price": 1044094,
                "amount": 0.2688
            },
            {
                "price": 1045000,
                "amount": 0.59854054
            },
            {
                "price": 1045180,
                "amount": 0.122
            },
            {
                "price": 1045181,
                "amount": 0.5611
            },
            {
                "price": 1045703,
                "amount": 0.48011588
            },
            {
                "price": 1045903,
                "amount": 0.09602318
            },
 
…(truncated, see openapi.json for full schema)
```

### Meta

#### `GET /v1/meta` — Service metadata

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/valr-api/v1/meta"
```

**Response:**
```json
{
    "data": {
        "note": "Pass markets as BTC_ZAR or BTCZAR. Symbols are concatenated; base/quote come from /pairs. The default quote is the South African rand (ZAR). quote_volume_24h is in the quote currency; the 24h change is changeFromPrevious / previousClosePrice.",
        "source": "VALR public API (api.valr.com/v1/public, live)",
        "service": "valr-api",
        "endpoints": {
            "GET /v1/book": "Live order-book depth — best bid/ask and spread (market=BTC_ZAR, limit=20).",
            "GET /v1/meta": "This document.",
            "GET /v1/ticker": "Ticker for one market (market=BTC_ZAR or base=BTC&quote=ZAR).",
            "GET /v1/markets": "Tradable pairs with base/quote (quote=ZAR optional).",
            "GET /v1/tickers": "All markets for a quote ranked by 24h turnover (quote=ZAR, limit=50)."
        },
        "description": "Live spot market data from VALR, South Africa's leading crypto exchange. The ticker endpoint returns a market's last price, best bid/ask, 24h high/low, 24h change and base/quote volume; the tickers endpoint ranks every market for a quote currency (ZAR, USDC, USDT or BTC) by 24h turnover; the markets endpoint lists tradable pairs with base/quote; the book endpoint returns live order-book depth. Live, no key, nothing stored. A distinct South-African-rand venue for ZAR price discovery, separate from the USD/USDT-quoted exchange feeds.",
        "market_count": 406,
        "upstream_status": "ok"
    },
    "meta": {
   
…(truncated, see openapi.json for full schema)
```


---
Marketplace page: https://www.oanor.com/api/valr-api
OpenAPI spec: https://www.oanor.com/api/valr-api/openapi.json
