Skip to content
QuantascanAlpha
Browse API groups

Tokens & Token Transfers API

QRC-20/721/1155 token metadata, holders, distribution and decoded transfer events (QRL 2.0 EVM).
GET/api/v1/{chain}/tokens/QRL 2.0QRL (PoW)

List Tokens

Paginated list of tokens for a given chain (stable Gold-projection).

qrl2 supports the full sort/filter surface. qrl only supports ?sort=-newest / ?sort=-supply and ignores type, metadata_status (qrl native tokens have no per-holder / per-event index).

Wave 4 of the API consistency refactor: ?sort_by= + ?sort_dir=?sort= with - prefix for desc (D5). ?age_lte_days=?max_age= duration (D4).

Query parameters

NameTypeRequiredDefaultDescription
pageintegermin 1no1
page_sizeintegermin 1 · max 100no25
typestring | nullnoqrc20|qrc721|qrc1155 (qrl2 only)
metadata_statusstring | nullnook|partial|failed (qrl2 only)
qstring | nullnoSubstring match on symbol/name
max_agestring | nullnoOptional max-age filter (D4 duration). When set, returns only tokens whose first_seen_at falls within the window. Examples: 30d, 90d, 1y.
sortstring | nullnoSort spec: '<field>' (asc) or '-<field>' (desc). qrl2 allowed: transfers, transfers_24h, holders, supply, newest. qrl allowed: newest, supply. Default qrl2 = -transfers, qrl = -newest.

Response 200 · TokensPaginated

itemsTokenDetail[]
idstring | null
symbolstring | null
namestring | null
decimalsinteger | null
first_seen_atstring | null
ownerstring | null
heightinteger | null
block_hashstring | null
total_supplystring | null
initial_balancesstring | null
total_supply_rawstring | null
total_supply_displaystring | null
circulating_rawstring | null
circulating_displaystring | null
holdersinteger | null
transfer_countinteger | null
is_qrc20integer | null
is_qrc721integer | null
is_qrc1155integer | null
metadata_statusstring | null
refresh_countinteger | null
metadata_refreshed_atstring | null
deployerstring | null
deployment_blockinteger | null
deployment_timestampstring | null
totalinteger | null
pageinteger | null
page_sizeinteger | null
total_pagesinteger | null
limitinteger | null
offsetinteger | null
chainstring | null
networkstring | null

Request examples

curl -s "https://quantascan.io/api/v1/qrl2/tokens/" \
  -H "Authorization: Bearer qs_YOUR_API_KEY"
Example response
{
  "items": [
    {
      "id": "Qa2f23388d1e3986416a36d2ef113850d6900b69c",
      "symbol": "stQRL",
      "name": "Staked QRL",
      "decimals": 18,
      "total_supply_raw": "80192000000000000000000",
      "total_supply_display": "80192",
      "circulating_raw": "80192000000000000000000",
      "circulating_display": "80192",
      "holders": 11,
      "transfer_count": 6,
      "transfers_24h": 0,
      "mints_24h": 0,
      "lifetime_mints": 0,
      "total_assets": 0,
      "is_qrc20": 1,
      "is_qrc721": 0,
      "is_qrc1155": 0,
      "metadata_status": "ok",
      "refresh_count": 4,
      "first_seen_at": "2026-07-27T10:13:31.840000",
      "metadata_refreshed_at": "2026-07-27T10:13:31.840000",
      "deployer": "Q2e13b52fd3cda0a57f9037856b7df971074e2489",
      "deployment_block": 19500,
      "deployment_timestamp": "2026-04-14T13:28:36",
      "collision_count": 4,
      "is_verified": 0,
      "match_grade": "unverified"
    },
    {
      "id": "Q4cd5f66b5e011c4ac34737285aaf9bd825702649",
      "symbol": "TOK",
      "name": "TOKEN123",
      "decimals": 18,
      "total_supply_raw": "100000000000000000000",
      "total_supply_display": "100",
      "circulating_raw": "100000000000000000000",
      "circulating_display": "100",
      "holders": 2,
      "transfer_count": 1,
      "transfers_24h": 0,
      "mints_24h": 0,
      "lifetime_mints": 0,
      "total_assets": 0,
      "is_qrc20": 1,
      "is_qrc721": 0,
      "is_qrc1155": 0,
      "metadata_status": "ok",
      "refresh_count": 3,
      "first_seen_at": "2026-07-06T23:04:02.481000",
      "metadata_refreshed_at": "2026-07-06T23:04:02.481000",
      "deployer": "Qe0f172b4416d83544d91b24c3c9bdc69530a8596",
      "deployment_block": 44887,
      "deployment_timestamp": "2026-05-02T04:35:36",
      "collision_count": 4,
      "is_verified": 0,
      "match_grade": "unverified"
    },
    "… (21 more)"
  ],
  "total": 23,
  "page": 1,
  "page_size": 25,
  "total_pages": 1,
  "limit": 25,
  "offset": 0,
  "chain": "qrl2",
  "network": "testnet"
}
GET/api/v1/{chain}/tokens/{token_id}QRL 2.0QRL (PoW)

Get Token

Single-token detail.

The id-format depends on chain (determined by URL prefix):

  • /api/v1/qrl2/tokens/{id} → qrl2; id is the contract address (Q + 40 hex)
  • /api/v1/qrl/tokens/{id} → qrl; id is the creation tx-hash

Path parameters

NameTypeRequiredDefaultDescription
token_idstringyes

Response 200 · TokenDetail

idstring | null
symbolstring | null
namestring | null
decimalsinteger | null
first_seen_atstring | null
ownerstring | null
heightinteger | null
block_hashstring | null
total_supplystring | null
initial_balancesstring | null
total_supply_rawstring | null
total_supply_displaystring | null
circulating_rawstring | null
circulating_displaystring | null
holdersinteger | null
transfer_countinteger | null
is_qrc20integer | null
is_qrc721integer | null
is_qrc1155integer | null
metadata_statusstring | null
refresh_countinteger | null
metadata_refreshed_atstring | null
deployerstring | null
deployment_blockinteger | null
deployment_timestampstring | null

Request examples

curl -s "https://quantascan.io/api/v1/qrl2/tokens/<token_id>" \
  -H "Authorization: Bearer qs_YOUR_API_KEY"
Example response
{
  "id": "Qa2f23388d1e3986416a36d2ef113850d6900b69c",
  "symbol": "stQRL",
  "name": "Staked QRL",
  "decimals": 18,
  "total_supply_raw": "80192000000000000000000",
  "total_supply_display": "80192",
  "circulating_raw": "80192000000000000000000",
  "circulating_display": "80192",
  "holders": 11,
  "transfer_count": 6,
  "is_qrc20": 1,
  "is_qrc721": 0,
  "is_qrc1155": 0,
  "metadata_status": "ok",
  "refresh_count": 4,
  "first_seen_at": "2026-07-27T10:13:31.840000",
  "metadata_refreshed_at": "2026-07-27T10:13:31.840000",
  "deployer": "Q2e13b52fd3cda0a57f9037856b7df971074e2489",
  "deployment_block": 19500,
  "deployment_timestamp": "2026-04-14T13:28:36"
}
GET/api/v1/{chain}/tokens/stats/summaryQRL 2.0QRL (PoW)

Get Token Stats

Headline metrics for the tokens-landing page.

Response 200 · TokenStatsSummary

chainstringrequired
networkstringrequired
tokens_totalinteger
tokens_with_metadatainteger | null
transfers_24hinteger | null

Request examples

curl -s "https://quantascan.io/api/v1/qrl2/tokens/stats/summary" \
  -H "Authorization: Bearer qs_YOUR_API_KEY"
Example response
{
  "chain": "qrl2",
  "network": "testnet",
  "tokens_total": 136,
  "tokens_with_metadata": 23,
  "transfers_24h": 1
}
GET/api/v1/qrl2/token-transfersQRL 2.0

List Transfers

Cursor-paginated decoded transfers across all QRC token standards.

Wave 8 of the API consistency refactor: token-transfers is a live feed (every new block can emit new Transfer events), so offset paging is broken — page 2 would skip events that arrived between page-clicks. Cursor anchors to (block_height, log_index) so subsequent pages are stable as the head advances.

The unified view collapses QRC-20/721/1155 into one shape, but the token_standard column lets callers filter. involved is the common "show me this wallet's transfer history" filter (in OR out). The repo degrades to an empty page on a missing view, so this never 500s on a partial deploy.

Query parameters

NameTypeRequiredDefaultDescription
cursorstring | nullnoOpaque pagination token from a previous response's `next_cursor`. Omit to start at the chain head (newest). Do not decode/construct.
limitintegermin 1 · max 100no25Items per page (1-100).
token_contractstring | nullnoFilter to one token
fromstring | nullno
tostring | nullno
involvedstring | nullnoEither from_addr OR to_addr equals this address
token_standardstring | nullnoqrc20 | qrc721 | qrc1155 | qrc1155_batch — also accepts a CSV (e.g. 'qrc721,qrc1155,qrc1155_batch' for the /top-nft hub).
since_blockinteger | nullnoOnly transfers with block_height >= this

Response 200 · TransfersPaginated

itemsTransferEvent[]
block_heightintegerrequired
tx_hashstringrequired
log_indexintegerrequired
token_standardstringrequired
token_contractstringrequired
from_addrstring | null
to_addrstring | null
amountstring | null
limitinteger | null
next_cursorstring | nullOpaque pagination token for the next page; null when this is the last page. Pass back unchanged in ?cursor=.
has_moreboolean | nullTrue when at least one more page is available.
networkstring | null
filters_appliedobject | null

Request examples

curl -s "https://quantascan.io/api/v1/qrl2/token-transfers" \
  -H "Authorization: Bearer qs_YOUR_API_KEY"
Example response
{
  "items": [
    {
      "block_height": 173934,
      "tx_hash": "0x7757ba180d74a02a33350b143bca0c8ee5a55c912ce8e359cfc24646baf85e2c",
      "log_index": 0,
      "token_standard": "qrc20",
      "token_contract": "Q8fb8928dd86629fc6ea9ca41975dbb28a511d2d0",
      "from_addr": "Q0000000000000000000000000000000000000000",
      "to_addr": "Qedc109a7e31a982023b91f8e2fb46c34ca524f7d",
      "amount": "1000000000000000000000",
      "tx_index": 0,
      "log_pos": 0,
      "token_id": null,
      "timestamp": "2026-07-30T19:22:36",
      "token_symbol": "SPK",
      "token_name": "SpikeToken",
      "token_decimals": 18
    },
    {
      "block_height": 97680,
      "tx_hash": "0x8a98d4b0659c5a6e0f15139ac5f5b68d06bbd020c696ef82c9de4a0a3c1772ab",
      "log_index": 2,
      "token_standard": "qrc20",
      "token_contract": "Qfe5db0e6e0ba4fa01879d86351a700aa62e5e35d",
      "from_addr": "Q0000000000000000000000000000000000000000",
      "to_addr": "Q6153d37fa4da7193e6219dcbd2bbe62fa12905b1",
      "amount": "100000",
      "tx_index": 0,
      "log_pos": 0,
      "token_id": null,
      "timestamp": "2026-06-07T20:28:36",
      "token_symbol": "USDC",
      "token_name": "USDC",
      "token_decimals": 3
    },
    "… (23 more)"
  ],
  "limit": 25,
  "next_cursor": "eyJhZnRlcl9ibG9jayI6MjEzNDQsImFmdGVyX2xvZyI6MSwiYWZ0ZXJfbG9nX3BvcyI6MH0",
  "has_more": true,
  "network": "testnet",
  "filters_applied": {
    "token_standard": "qrc20"
  }
}
GET/api/v1/qrl2/token-transfers/summaryQRL 2.0

Transfers Summary

Hero metrics for the token-transfers / nft-transfers feed.

24h + 7d transfer counts (the 7d anchors a daily-average comparison), all-time total, distinct active contracts, the Mint/Burn/Transfer split, and the single most-active contract. token_standard selects the feed (default qrc20; pass the NFT CSV for the /nft-transfers hero). Zero-filled on a missing view.

Query parameters

NameTypeRequiredDefaultDescription
token_standardstring | nullnoqrc20 (default) | qrc721 | qrc1155 | qrc1155_batch — also accepts a CSV (e.g. 'qrc721,qrc1155,qrc1155_batch' for the /nft-transfers hero).

Response 200 · TransfersFeedSummary

networkstringrequired
totalinteger
transfers_24hinteger
transfers_7dinteger
active_tokensinteger
mint_countinteger
burn_countinteger
transfer_countinteger
top_tokenTransfersTopToken | null
token_contractstringrequired
transfersintegerrequired
symbolstring | null
namestring | null

Request examples

curl -s "https://quantascan.io/api/v1/qrl2/token-transfers/summary" \
  -H "Authorization: Bearer qs_YOUR_API_KEY"
Example response
{
  "network": "testnet",
  "total": 46,
  "transfers_24h": 1,
  "transfers_7d": 1,
  "active_tokens": 22,
  "mint_count": 33,
  "burn_count": 2,
  "transfer_count": 11,
  "top_token": {
    "token_contract": "Qa2f23388d1e3986416a36d2ef113850d6900b69c",
    "transfers": 11,
    "symbol": "stQRL",
    "name": "Staked QRL"
  }
}
GET/api/v1/qrl2/tokens/{token_contract}/balance/{address}QRL 2.0

Get Token Balance

Balance of a single (token, holder) pair, decimals-corrected for display.

Path parameters

NameTypeRequiredDefaultDescription
token_contractstringyes
addressstringyes

Response 200 · TokenHolderBalance

Variable shape — see the example response below.

Request examples

curl -s "https://quantascan.io/api/v1/qrl2/tokens/<token_contract>/balance/<address>" \
  -H "Authorization: Bearer qs_YOUR_API_KEY"
Example response
{
  "token_contract": "Qa2f23388d1e3986416a36d2ef113850d6900b69c",
  "holder": "Q2e13b52fd3cda0a57f9037856b7df971074e2489",
  "balance_raw": "40000000000000000000000",
  "balance_display": "40000",
  "total_received_raw": "40000000000000000000000",
  "total_received_display": "40000",
  "total_sent_raw": "0",
  "token_name": "Staked QRL",
  "token_symbol": "stQRL",
  "token_decimals": 18,
  "transfer_count": 1,
  "last_activity": "2026-04-14T14:08:36",
  "first_activity": "2026-04-14T14:08:36"
}
GET/api/v1/qrl2/tokens/{token_contract}/distributionQRL 2.0

Get Token Distribution

Token holder distribution / concentration stats.

Returns top-10 / top-50 / top-100 cumulative share + HHI (Herfindahl-Hirschman Index) over the top-100. Powers a "concentration" widget on the token-detail page.

Path parameters

NameTypeRequiredDefaultDescription
token_contractstringyes

Response 200 · TokenDistribution

token_contractstringrequired
networkstringrequired
total_supplystring
holders_countinteger
top_10_sharenumber
top_50_sharenumber
top_100_sharenumber
hhinumber
concentration_notestring

Request examples

curl -s "https://quantascan.io/api/v1/qrl2/tokens/<token_contract>/distribution" \
  -H "Authorization: Bearer qs_YOUR_API_KEY"
Example response
{
  "token_contract": "Qa2f23388d1e3986416a36d2ef113850d6900b69c",
  "network": "testnet",
  "total_supply": "80192000000000000000000",
  "holders_count": 11,
  "top_10_share": 0.999376,
  "top_50_share": 1,
  "top_100_share": 1,
  "hhi": 0.280049,
  "concentration_note": "high (>0.25)"
}
GET/api/v1/qrl2/tokens/{token_contract}/holdersQRL 2.0

Get Token Holders

Top holders by balance for a QRL2 QRC-20 token. Zero-address (burn sink) is excluded via the underlying qrl2_token_top_holders view filter.

Path parameters

NameTypeRequiredDefaultDescription
token_contractstringyes

Query parameters

NameTypeRequiredDefaultDescription
pageintegermin 1no1
page_sizeintegermin 1 · max 100no20

Response 200 · TokenHoldersList

itemsobject[]
totalinteger | null
limitinteger | null
offsetinteger | null
token_contractstring | null

Request examples

curl -s "https://quantascan.io/api/v1/qrl2/tokens/<token_contract>/holders" \
  -H "Authorization: Bearer qs_YOUR_API_KEY"
Example response
{
  "items": [
    {
      "holder": "Q2e13b52fd3cda0a57f9037856b7df971074e2489",
      "balance": "40000000000000000000000",
      "total_received": "40000000000000000000000",
      "total_sent": "0",
      "transfer_count": 1,
      "last_activity": "2026-04-14T14:08:36",
      "rank_in_token": 1
    },
    {
      "holder": "Q3d8148c344102caf4163aee62540d984b845cb43",
      "balance": "5024000000000000000000",
      "total_received": "5024000000000000000000",
      "total_sent": "0",
      "transfer_count": 1,
      "last_activity": "2026-04-15T20:13:36",
      "rank_in_token": 2
    },
    "… (9 more)"
  ],
  "total": 11,
  "limit": 20,
  "offset": 0,
  "token_contract": "Qa2f23388d1e3986416a36d2ef113850d6900b69c"
}
GET/api/v1/qrl2/tokens/{token_contract}/transfersQRL 2.0

Get Token Transfers

Decoded transfer events for a QRL2 token. Returns QRC-20/721/1155 transfers via the unified qrl2_qrc_transfers_all view.

Path parameters

NameTypeRequiredDefaultDescription
token_contractstringyes

Query parameters

NameTypeRequiredDefaultDescription
pageintegermin 1no1
page_sizeintegermin 1 · max 100no20

Response 200 · TokenTransfersList

itemsobject[]
totalinteger | null
limitinteger | null
offsetinteger | null
token_contractstring | null

Request examples

curl -s "https://quantascan.io/api/v1/qrl2/tokens/<token_contract>/transfers" \
  -H "Authorization: Bearer qs_YOUR_API_KEY"
Example response
{
  "items": [
    {
      "block_height": 74187,
      "tx_hash": "0x588e1ee3b0a86ede7a7130021e1c7bb2e32c75499257b95691d94262d37211c0",
      "tx_index": 0,
      "log_index": 0,
      "token_standard": "qrc20",
      "from_addr": "Q79b662ce3d663643df4454a8ba3f532c0de6887f",
      "to_addr": "Q6153d37fa4da7193e6219dcbd2bbe62fa12905b1",
      "amount": "50000000000000000000",
      "token_id": null,
      "timestamp": "2026-05-22T12:55:36"
    },
    {
      "block_height": 21404,
      "tx_hash": "0x0468eca6df78a147d539b52fa3b71e645b88de90c3430552cf36a9009cd5226e",
      "tx_index": 0,
      "log_index": 1,
      "token_standard": "qrc20",
      "from_addr": "Q0000000000000000000000000000000000000000",
      "to_addr": "Q79b662ce3d663643df4454a8ba3f532c0de6887f",
      "amount": "100000000000000000000",
      "token_id": null,
      "timestamp": "2026-04-15T21:12:36"
    },
    "… (9 more)"
  ],
  "total": 11,
  "limit": 20,
  "offset": 0,
  "token_contract": "Qa2f23388d1e3986416a36d2ef113850d6900b69c"
}

All endpoints verified against a live indexer. Need the raw spec? See openapi.json or the API overview.