Browse API groups
Market & Richlist API
/api/v1/price/qrlLatest QRL market price
Returns the most recent cached QRL price for the requested fiat / crypto. Cache TTL is ~10 minutes; a background task refreshes from CoinGecko every 5 minutes. price is null on cold start — callers should render a placeholder rather than treat null as an error.
Query parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| vs | string | no | usd | Currency code: usd, eur, or btc. |
Response 200 · QrlPriceResponse
currencystringrequiredLower-case currency code, e.g. 'usd'pricenumber | nullLatest price in the requested currency. None when cache is cold.change_24h_pctnumber | null24h % change. None if upstream omitted it.sourcestring | nullUpstream provider, currently 'coingecko'.fetched_atstring | nullISO-8601 UTC timestamp when our poller stored this snapshot.source_updated_atstring | nullISO-8601 UTC timestamp the upstream reports for the price tick.Request examples
curl -s "https://quantascan.io/api/v1/price/qrl" \
-H "Authorization: Bearer qs_YOUR_API_KEY"Example response
{
"currency": "usd",
"price": 0.809966,
"change_24h_pct": -5.005465950998716,
"source": "coingecko",
"fetched_at": "2026-07-31T15:26:37+00:00",
"source_updated_at": "2026-07-31T15:25:20+00:00"
}/api/v1/price/qrl/historyQRL price history (downsampled OHLC)
Time-bucketed QRL price over the last N days. Data comes from etl_silver.market_prices (mig 050) — written every 5 minutes by the same poller that fills the live cache. Empty items on cold start (no data persisted yet) or pre-mig-050 deploys.
Query parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| vs | string | no | usd | Currency code: usd, eur, or btc. |
| interval | string | no | 1h | Bucket size: 5m | 15m | 1h | 4h | 1d. |
| window | string | no | 30d | Look-back window for the QRL price history (D4 duration). |
Response 200 · QrlPriceHistoryResponse
assetstringrequiredAsset symbol; 'qrl' for the legacy chain.currencystringrequiredQuote currency: usd, eur, or btc.intervalstringrequiredBucket size: 5m, 15m, 1h, 4h, or 1d.daysintegerrequiredLookback window in days.▸itemsQrlPriceHistoryItem[]
itemsQrlPriceHistoryItem[]bucketstringrequiredISO-8601 start of the time bucket (UTC).opennumberrequiredFirst price in the bucket.highnumberrequiredMax price in the bucket.lownumberrequiredMin price in the bucket.closenumberrequiredLast price in the bucket.avgnumberrequiredMean price in the bucket.samplesintegerrequiredNumber of raw datapoints in the bucket.Request examples
curl -s "https://quantascan.io/api/v1/price/qrl/history" \
-H "Authorization: Bearer qs_YOUR_API_KEY"Example response
{
"asset": "qrl",
"currency": "usd",
"interval": "1h",
"days": 30,
"items": [
{
"bucket": "2026-07-01T15:00:00",
"open": 0.863952,
"high": 0.866885,
"low": 0.863952,
"close": 0.866154,
"avg": 0.8654963999999999,
"samples": 5
},
{
"bucket": "2026-07-01T16:00:00",
"open": 0.866123,
"high": 0.883402,
"low": 0.866123,
"close": 0.867703,
"avg": 0.8772853636363638,
"samples": 11
},
"… (638 more)"
]
}/api/v1/richlistGet Richlist
Cross-chain richlist — both chains interleaved, ranked by whole-coin balance.
Pagination is offset-based (stable Gold projection). Each row carries its own
chain so the client picks the right decimals / address link / unit.
Query parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| page | integermin 1 | no | 1 | |
| page_size | integermin 1 · max 100 | no | 25 | |
| chain | string | null | no | — | Optional chain filter: qrl, qrl2, or omitted = both (mixed). |
| with_labels | boolean | no | false | Include `label` + `label_category` per row. |
| with_delta_30d | boolean | no | false | Include `received_30d` + `sent_30d` (30-day net flow). Meaningful for qrl2; the qrl legacy archive has no recent window. |
| positive_only | boolean | no | true | Holders only (balance > 0). Default true — richlist semantics. |
Response 200 · PaginatedOffset_RichlistRow_
▸itemsRichlistRow[]required
itemsRichlistRow[]requiredchainstringrequiredqrl or qrl2 — drives per-row decimals + linksnetworkstringrequiredaddressstringrequiredbalancestring | nullRaw base units: shor (qrl) / planck (qrl2).balance_shorstring | nullBalance normalised to shor (common unit) for cross-chain ranking + % supply.total_receivedstring | nulltotal_sentstring | nulltotal_fees_paidstring | nulltx_countinteger | nullfirst_seenstring | nulllast_seenstring | nulllabelstring | nulllabel_categorystring | nullreceived_30dstring | nullsent_30dstring | nullpageintegerrequired1-indexed page numberpage_sizeintegerrequiredNumber of items per pagetotalintegerrequiredTotal number of items across all pagestotal_pagesintegerrequiredTotal number of pages at this page_sizeRequest examples
curl -s "https://quantascan.io/api/v1/richlist" \
-H "Authorization: Bearer qs_YOUR_API_KEY"Example response
{
"items": [
{
"chain": "qrl",
"network": "mainnet",
"address": "Q000500997c93dec6039f0fb6008bbf034bc4f9252f6cfd41a7e01c8cf934036deaa4a832c4f240",
"balance": "8449999997765200",
"balance_shor": "8449999997765200",
"total_received": "8449999997765200",
"total_sent": "0",
"total_fees_paid": "0",
"tx_count": 1,
"first_seen": "2021-04-17T01:32:26",
"last_seen": "2021-04-17T01:32:26",
"label": null,
"label_category": null,
"received_30d": null,
"sent_30d": null
},
{
"chain": "qrl",
"network": "mainnet",
"address": "Q01040062908a55128609363f80102e3c07821eb06d579d0151e575428e9389f4532593a2291247",
"balance": "7724615474522300",
"balance_shor": "7724615474522300",
"total_received": "35653870763796000",
"total_sent": "27928779949273700",
"total_fees_paid": "475340000000",
"tx_count": 101168,
"first_seen": "2018-11-05T18:40:01",
"last_seen": "2022-09-10T22:10:27",
"label": null,
"label_category": null,
"received_30d": null,
"sent_30d": null
},
"… (23 more)"
],
"page": 1,
"page_size": 25,
"total": 10783,
"total_pages": 432
}All endpoints verified against a live indexer. Need the raw spec? See openapi.json or the API overview.