{"openapi":"3.1.0","info":{"title":"VALR Exchange API","version":"1.0.0","description":"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.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/valr-api","description":"oanor gateway"}],"tags":[{"name":"Ticker"},{"name":"Tickers"},{"name":"Markets"},{"name":"Book"},{"name":"Meta"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/ticker":{"get":{"operationId":"get_v1_ticker","tags":["Ticker"],"summary":"Ticker for one market","description":"","parameters":[{"name":"market","in":"query","required":false,"description":"Market as BTC_ZAR","schema":{"type":"string"},"example":"BTC_ZAR"},{"name":"base","in":"query","required":false,"description":"Base asset (with quote=)","schema":{"type":"string"},"example":"ETH"},{"name":"quote","in":"query","required":false,"description":"Quote asset","schema":{"type":"string"},"example":"ZAR"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"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}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/tickers":{"get":{"operationId":"get_v1_tickers","tags":["Tickers"],"summary":"All markets for a quote ranked by 24h turnover","description":"","parameters":[{"name":"quote","in":"query","required":false,"description":"Quote asset","schema":{"type":"string"},"example":"ZAR"},{"name":"limit","in":"query","required":false,"description":"Max results (1-400)","schema":{"type":"string"},"example":"50"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"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_24h":16.6999,"change_24h":0.0028,"prev_close":16.6207,"change_24h_pct":0.01,"base_volume_24h":493457.2669,"quote_volume_24h":8212703.68},{"ask":18.52,"bid":18.5,"base":"XRP","last":18.51,"quote":"ZAR","market":"XRPZAR","spread":0.02,"low_24h":18.12,"high_24h":18.85,"change_24h":-0.06,"prev_close":18.57,"change_24h_pct":-0.32,"base_volume_24h":401967.1649,"quote_volume_24h":7449825.27},{"ask":27484,"bid":27470,"base":"ETH","last":27466,"quote":"ZAR","market":"ETHZAR","spread":14,"low_24h":26710,"high_24h":27674,"change_24h":207,"prev_close":27259,"change_24h_pct":0.75,"base_volume_24h":106.27546946,"quote_volume_24h":2898640.68},{"ask":1080,"bid":1078,"base":"SOL","last":1078,"quote":"ZAR","market":"SOLZAR","spread":2,"low_24h":1040,"high_24h":1093,"change_24h":6,"prev_close":1072,"change_24h_pct":0.55,"base_volume_24h":1232.2982587,"quote_volume_24h":1318032.64},{"ask":9929,"bid":9902,"base":"BNB","last":9919,"quote":"ZAR","market":"BNBZAR","spread":27,"low_24h":9658,"high_24h":9960,"change_24h":160,"prev_close":9759,"change_24h_pct":1.63,"base_volume_24h":81.73219621,"quote_volume_24h":803952.9},{"ask":707.6,"bid":705.2,"base":"LTC","last":708.3,"quote":"ZAR","market":"LTCZAR","spread":2.4,"low_24h":686.5,"high_24h":714.4,"change_24h":2,"prev_close":706.3,"change_24h_pct":0.28,"base_volume_24h":264.633,"quote_volume_24h":186728.06},{"ask":5.3596,"bid":5.3446,"base":"TRX","last":5.3461,"quote":"ZAR","market":"TRXZAR","spread":0.015,"low_24h":5.3397,"high_24h":5.3952,"change_24h":-0.0129,"prev_close":5.359,"change_24h_pct":-0.24,"base_volume_24h":34395,"quote_volume_24h":184438.07},{"ask":68245,"bid":67970,"base":"XAUT","last":68844,"quote":"ZAR","market":"XAUTZAR","spread":275,"low_24h":66983,"high_24h":69556,"change_24h":-718,"prev_close":69562,"change_24h_pct":-1.03,"base_volume_24h":2.6964,"quote_volume_24h":184342.38},{"ask":3.17,"bid":3.163,"base":"XLM","last":3.156,"quote":"ZAR","market":"XLMZAR","spread":0.007,"low_24h":3.028,"high_24h":3.202,"change_24h":0.046,"prev_close":3.11,"change_24h_pct":1.47,"base_volume_24h":44518.8,"quote_volume_24h":138056.02},{"ask":109.4,"bid":109.1,"base":"AVAX","last":109.2,"quote":"ZAR","market":"AVAXZAR","spread":0.3,"low_24h":105.1,"high_24h":110.2,"change_24h":0.3,"prev_close":108.9,"change_24h_pct":0.27,"base_volume_24h":1061.30145297,"quote_volume_24h":115353.62},{"ask":129.2,"bid":128.73,"base":"LINK","last":129.15,"quote":"ZAR","market":"LINKZAR","spread":0.47,"low_24h":124.6,"high_24h":130.92,"change_24h":-0.05,"prev_close":129.2,"change_24h_pct":-0.03,"base_volume_24h":423.26,"quote_volume_24h":54327.31},{"ask":7.83e-5,"bid":7.79e-5,"base":"SHIB","last":7.84e-5,"quote":"ZAR","market":"SHIBZAR","spread":4.0e-7,"low_24h":7.7e-5,"high_24h":7.91e-5,"change_24h":1.0e-6,"prev_close":7.74e-5,"change_24h_pct":1.29,"base_volume_24h":651130100,"quote_volume_24h":50491.57},{"ask":1.4095,"bid":1.406,"base":"DOGE","last":1.4083,"quote":"ZAR","market":"DOGEZAR","spread":0.0035,"low_24h":1.3646,"high_24h":1.4162,"change_24h":0.0169,"prev_close":1.3914,"change_24h_pct":1.21,"base_volume_24h":15932.3,"quote_volume_24h":22028.77},{"ask":16.644,"bid":16.601,"base":"RLUSD","last":16.584,"quote":"ZAR","market":"RLUSDZAR","spread":0.043,"low_24h":0,"high_24h":16.584,"change_24h":0,"prev_close":16.584,"change_24h_pct":0,"base_volume_24h":0,"quote_volume_24h":0}]},"meta":{"timestamp":"2026-06-11T07:48:30.841Z","request_id":"489e06da-fb79-4d29-a052-30c8db1a27dc"},"status":"ok","message":"Tickers retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/markets":{"get":{"operationId":"get_v1_markets","tags":["Markets"],"summary":"Tradable pairs with base/quote","description":"","parameters":[{"name":"quote","in":"query","required":false,"description":"Filter by quote asset","schema":{"type":"string"},"example":"ZAR"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"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":"ETH","type":"FUTURE","quote":"ZAR","active":false,"market":"ETHZARPERP"},{"base":"EURC","type":"SPOT","quote":"ZAR","active":false,"market":"EURCZAR"},{"base":"FDUSD","type":"SPOT","quote":"ZAR","active":false,"market":"FDUSDZAR"},{"base":"LINK","type":"SPOT","quote":"ZAR","active":true,"market":"LINKZAR"},{"base":"LTC","type":"SPOT","quote":"ZAR","active":true,"market":"LTCZAR"},{"base":"PYUSD","type":"SPOT","quote":"ZAR","active":false,"market":"PYUSDZAR"},{"base":"RLUSD","type":"SPOT","quote":"ZAR","active":true,"market":"RLUSDZAR"},{"base":"SHIB","type":"SPOT","quote":"ZAR","active":true,"market":"SHIBZAR"},{"base":"SOL","type":"SPOT","quote":"ZAR","active":true,"market":"SOLZAR"},{"base":"TRX","type":"SPOT","quote":"ZAR","active":true,"market":"TRXZAR"},{"base":"USDC","type":"SPOT","quote":"ZAR","active":true,"market":"USDCZAR"},{"base":"USDT","type":"SPOT","quote":"ZAR","active":true,"market":"USDTZAR"},{"base":"USDT","type":"FUTURE","quote":"ZAR","active":false,"market":"USDTZARPERP"},{"base":"XAUT","type":"SPOT","quote":"ZAR","active":true,"market":"XAUTZAR"},{"base":"XLM","type":"SPOT","quote":"ZAR","active":true,"market":"XLMZAR"},{"base":"XRP","type":"SPOT","quote":"ZAR","active":true,"market":"XRPZAR"}]},"meta":{"timestamp":"2026-06-11T07:48:30.925Z","request_id":"a267245d-72ad-4c98-9cff-7522f259be13"},"status":"ok","message":"Markets retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/book":{"get":{"operationId":"get_v1_book","tags":["Book"],"summary":"Live order-book depth with running spread","description":"","parameters":[{"name":"market","in":"query","required":false,"description":"Market as BTC_ZAR","schema":{"type":"string"},"example":"BTC_ZAR"},{"name":"limit","in":"query","required":false,"description":"Depth per side (1-100)","schema":{"type":"string"},"example":"20"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"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},{"price":1047500,"amount":0.39061003},{"price":1050000,"amount":0.0009822},{"price":1052193,"amount":0.0001},{"price":1053526,"amount":0.0001},{"price":1054099,"amount":0.00131965}],"bids":[{"price":1041901,"amount":0.01750175},{"price":1041900,"amount":0.39209532},{"price":1041898,"amount":0.12729557},{"price":1041577,"amount":0.0912},{"price":1041377,"amount":0.4583},{"price":1041037,"amount":0.02575},{"price":1041013,"amount":0.05},{"price":1040859,"amount":0.1248},{"price":1040533,"amount":0.76816715},{"price":1040521,"amount":0.45272124},{"price":1040518,"amount":0.24008245},{"price":1040359,"amount":0.1728},{"price":1039841,"amount":0.144},{"price":1039569,"amount":0.24004269},{"price":1038908,"amount":0.24},{"price":1037989,"amount":0.096},{"price":1037988,"amount":0.48008538},{"price":1034680,"amount":1.44025615},{"price":1033663,"amount":0.02999382},{"price":1033582,"amount":0.0002}],"market":"BTCZAR","source":"VALR","spread":577,"best_ask":1042478,"best_bid":1041901,"spread_pct":0.0554},"meta":{"timestamp":"2026-06-11T07:48:31.013Z","request_id":"36ffb433-f851-4c19-bef0-39a4fbe972c8"},"status":"ok","message":"Order book retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Meta"],"summary":"Service metadata","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"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":{"timestamp":"2026-06-11T07:48:31.102Z","request_id":"860e5d68-4ee9-48cc-87f2-a77da4164e9e"},"status":"ok","message":"Meta","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":21500,"rps_limit":3,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":895,"monthly_call_quota":285000,"rps_limit":10,"hard_limit":true},{"slug":"growth","name":"Growth","price_cents_month":2545,"monthly_call_quota":1290000,"rps_limit":25,"hard_limit":true},{"slug":"scale","name":"Scale","price_cents_month":5970,"monthly_call_quota":4600000,"rps_limit":50,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/valr-api"}