/builders
The builder-code leaderboard: fee revenue, routed volume, unique traders, fills, market_share_pct.
GET https://data.vike.io/v1/hyperliquid/buildersThe builder-code leaderboard: fee revenue, routed volume, unique traders, fills, market_share_pct.
# the builder-code leaderboard, ranked by the builder's own fee revenue
curl -s "https://data.vike.io/v1/hyperliquid/builders?limit=3" \
-H "X-API-KEY: $VIKE_API_KEY"
# next page of the call just above: NEXT is its nextCursor, passed back verbatim
curl -s "https://data.vike.io/v1/hyperliquid/builders?limit=3&cursor=$NEXT" \
-H "X-API-KEY: $VIKE_API_KEY"
# rank by routed volume instead: a different ordering, because take rates differ
curl -s "https://data.vike.io/v1/hyperliquid/builders?sort=volume&limit=10" \
-H "X-API-KEY: $VIKE_API_KEY"
# which front-ends reach the most distinct traders this week
curl -s "https://data.vike.io/v1/hyperliquid/builders?window=7d&sort=users&limit=10" \
-H "X-API-KEY: $VIKE_API_KEY"
# check a market-share figure against its inputs: share_volume_usd over the top-level venue_volume_usd
curl -s "https://data.vike.io/v1/hyperliquid/builders?window=30d&limit=10" \
-H "X-API-KEY: $VIKE_API_KEY" \
| jq '.venue_volume_usd as $v | .builders[] | {builder, audited_pct: (.share_volume_usd / $v * 100), reported_pct: .market_share_pct}'
# tell a quiet builder from an unfilled window on a long query: read active_days beside the window
curl -s "https://data.vike.io/v1/hyperliquid/builders?window=all&limit=50" \
-H "X-API-KEY: $VIKE_API_KEY" \
| jq '{window: .window, builders: [.builders[] | {builder, active_days, first_seen_lifetime}]}'windowqueryoptional1d | 7d | 30d | all. Default 30dsortqueryoptionalfee | volume | users | fills. Default feeorderqueryoptionalasc | desc. Default desclimitqueryoptionalcursorqueryoptional{
"window": {
"window": "30d",
"start": "2026-08-04T08:06:47.379000+00:00",
"end": "2026-09-03T08:06:47.379000+00:00"
},
"sort": "fee",
"order": "desc",
"venue_volume_usd": 502186586606.7108,
"market_share_window_start": "2026-08-04T08:06:47.379000+00:00",
"builders": [
{
"builder": "0xe95a5e31904e005066614247d309e00d8ad753aa",
"rank": 1,
"fee_usd": 1499518.2846610104,
"volume_usd": 1618501175.9291677,
"share_volume_usd": 1618501175.9291677,
"fills": 529981,
"users": 9437,
"revenue_per_user": 158.89777309113177,
"fee_rate_bps": 9.264857554398438,
"fee_usd_node": 1499518.2846610104,
"trader_fee_usd": 1911054.1162650166,
"builder_routed_deployer_fee_usd": 21187.156330000034,
"closed_pnl_usd": 4617426.625648984,
"active_days": 31,
"crossed_fills": 495218,
"taker_pct": 93.44070825180525,
"first_seen": "2026-08-04T08:07:13.004000+00:00",
"last_seen": "2026-09-03T08:06:41.614000+00:00",
"market_share_pct": 0.32229080168497265,
"first_seen_lifetime": "2025-08-19T22:14:56+00:00"
},
{
"builder": "0xb84168cf3be63c6b8dad05ff5d755e97432ff80b",
"rank": 2,
"fee_usd": 1292163.5658959982,
"volume_usd": 2459678115.583188,
"share_volume_usd": 2459678115.583188,
"fills": 1276026,
"users": 28783,
"revenue_per_user": 44.8932899939547,
"fee_rate_bps": 5.253384813685782,
"fee_usd_node": 1292163.5658959982,
"trader_fee_usd": 2179019.0573659376,
"builder_routed_deployer_fee_usd": 32029.19622199984,
"closed_pnl_usd": 5411672.672201046,
"active_days": 31,
"crossed_fills": 1264329,
"taker_pct": 99.08332588834396,
"first_seen": "2026-08-04T08:06:50.331000+00:00",
"last_seen": "2026-09-03T08:06:34.662000+00:00",
"market_share_pct": 0.4897936705564566,
"first_seen_lifetime": "2025-06-12T01:30:06+00:00"
},
{
"builder": "0x5af1b5f44207784dcb850bbb4143c5dcd1885f71",
"rank": 3,
"fee_usd": 1061419.7763880126,
"volume_usd": 1460325459.6318128,
"share_volume_usd": 1460325459.6318128,
"fills": 440461,
"users": 9616,
"revenue_per_user": 110.38059238644057,
"fee_rate_bps": 7.268378219302051,
"fee_usd_node": 1061419.7763880126,
"trader_fee_usd": 1565598.9851990165,
"builder_routed_deployer_fee_usd": 29707.97636299997,
"closed_pnl_usd": 4744467.146989997,
"active_days": 31,
"crossed_fills": 429636,
"taker_pct": 97.5423476766388,
"first_seen": "2026-08-04T08:06:49.661000+00:00",
"last_seen": "2026-09-03T08:06:47.072000+00:00",
"market_share_pct": 0.29079340201005244,
"first_seen_lifetime": "2026-04-09T17:31:47.951000+00:00"
}
],
"nextCursor": "eyJiIjoiMHg1YWYxYjVmNDQyMDc3ODRkY2I4NTBiYmI0MTQzYzVkY2QxODg1ZjcxIiwiaGkiOiIyMDI2LTA5LTAzVDA4OjA2OjQ3LjM3OTAwMCswMDowMCIsImxvIjoiMjAyNi0wOC0wNFQwODowNjo0Ny4zNzkwMDArMDA6MDAiLCJyIjozLCJ2IjoxMDYxNDE5Ljc3NjM4ODAxMjZ9"
}sort=fee ranks the builder's own cut, not the trader's total cost, and the two orderings differ
materially — take rates range from roughly 0.2 bps to 3.4 bps across the top of the board.
market_share_pct is measured over an overlap window that can start later than yours
market_share_pct is taken over the overlap of your window and the venue's own fill history. Its
denominator is all Hyperliquid fill notional, whose history is shorter than the builder-fill
history — the latter reaches months further back via Hyperliquid's published CSVs. That gap is
permanent, not a backlog, so the share is taken from market_share_window_start to window.end.
To audit it, divide the per-row share_volume_usd (the clamped numerator) by the top-level
venue_volume_usd. Do not use volume_usd — that is the row's full unclamped notional for the
requested window, so on window=all it can exceed the numerator by more than 2x.
active_days tells a quiet builder from an unfilled window
active_days is on every row because the historical backfill of builder fills is still
running: a long window can currently cover fewer days than it names, and active_days beside the
resolved window.start/window.end is how you tell a quiet builder from an unfilled window.
first_seen_lifetime is not window-scoped (first_seen is) — it is the builder's genuine
first fill. Every *_pct field here is percentage points, 0–100.
The three fee columns are not interchangeable — see Builders.