Schemas Get a free key
LIVE --:--:-- UTC Hyperliquid positions snapshot on a 5-min UTC grid — last boundary --:-- next in -:--
Build · Schemas

Schema reference

Every dataset below has its fields, real rows drawn from responses the API actually returned, and loading code. The conventions they share come first. The full per-route reference lives at vike.io/docs.

Conventions

Timestamps

Every time is UTC. The spelling depends on the route — this is exactly what each one emits.

WhereFieldFormat
Hyperliquid rows — positions, fills, cohort metrics, liquidationsts, snapshot_ts, liq_tsISO-8601 string with offset, 2026-10-12T09:00:00+00:00
Hyperliquid /ohlcvts (bar open)epoch milliseconds
Hyperliquid /symbols/hourlytsepoch seconds
Polymarket — API and archivets, local_ts, as_of_ts, first_ms, last_msepoch milliseconds. ts is the venue's event time, local_ts the recorder's receive time.
Query boundsstart / end (Hyperliquid), from_ms / to_ms (Polymarket /events)ISO-8601 or epoch ms on Hyperliquid /ohlcv; epoch ms on /events. Start inclusive, end exclusive.

Identifiers

FieldMeans
token_idPolymarket — one outcome token (a decimal string; keep it a string)
condition_idPolymarket — the market, 0x-prefixed. Joins the API to the archive.
wallet · addressHyperliquid and EVM wallets, 0x-prefixed hex
symbolHyperliquid instrument, e.g. BTC, a HIP-3 market xyz:TSLA, a spot pair @107. Until 2026-11-19 responses also carry its old name (asset or coin)
cohortHyperliquid cohort rung on the chosen axis; paths take its slug

Paging envelopes

NamespaceHow it pagesPass back
/v1/hyperliquid list routesKeyset. The response carries nextCursor (a string, or null). The cursor is opaque and bound to the query that issued it.cursor=<nextCursor>, verbatim
/v1/hyperliquid/ohlcvNo cursor — one page per request; move start / end.—
/v1/polymarket/eventsAn enveloped Polymarket route: {"events": [...], "has_more": …, "next_cursor": …}, at most 24 hours per call.cursor=<next_cursor> while has_more is true
/v1/polymarket/settlements/bulkThe other enveloped route: {"settlements": [...], "has_more": …, "next_cursor": …}, oldest resolution first.cursor=<next_cursor> while has_more is true
Other /v1/polymarket routesA bare JSON array — except /archive/datasets, which returns {"datasets": [...], "limit": …, "offset": …, "total": …}, and /wallets/{address} and /archive/url, which each return one object.offset on /archive/datasets
/v1/onchainDoes not page: limit only, one page.—

A non-null nextCursor is emitted whenever a page comes back full, so the last page of an evenly divisible result hands you a cursor whose next fetch is empty: stop on null or an empty page. More on the API page.

Data-quality notes

  • Two identical requests return identical bytes. Aggregates are snapped to a fixed precision before they leave the server, so a re-run of a query cannot drift in its last digits.
  • A failure is never an empty 200. A query that could not run returns an error status, so an empty list means "no rows", not "the store was down".
  • Cohort labels declare their basis. Graded Hyperliquid responses say whether a label is point_in_time (as it was that hour) or current (today's) — label_basis on the envelope or pnl_cohort_basis on the row.
  • Polymarket archive gaps are detectable. Archive events carry seq, so a missing event shows up as a jump rather than silence; manifest.json lists every partition with its byte size and, where recorded, its row count.
  • Feed delay is measurable per event. Polymarket rows carry both the venue's ts and the recorder's local_ts.
  • An unknown Polymarket id is an empty array, not a 404. /markets/{condition_id} and /settlements/{condition_id} return [] for an id they do not know.
Hyperliquid · API + Parquet archive · 5-min

Position snapshots

Open Hyperliquid positions captured every 5 minutes — the latest snapshot, or history by window.

Route
GET /v1/hyperliquid/positions
Cadence
Snapshot every 5 minutes; archive one file per UTC day
Coverage
API: latest open positions (freshness-gated to the newest 15 minutes of snapshots) or historical 5-minute snapshots: pass start (and optionally end), and bound the read by symbol or wallet. Every row says which pnl-cohort label it carries (pnl_cohort_basis). Keyset pagination: nextCursor back as cursor, limit up to 5,000. Archive: positions.parquet per UTC day from 2026-05-08 (CC BY 4.0), every open position at every snapshot of the day, plus one file of the current open positions replaced every 5 minutes (date=latest). Each file comes as a temporary link from /archive/url; /archive/datasets lists the days and the file's own columns.
Rows
Free APIArchiveStreamMCP ↓ positions-sample.parquet · no key

Fields

FieldTypeDescription
walletstringAccount address, 0x-prefixed
symbolstringSymbol; HIP-3 DEX symbols carry their DEX prefix, e.g. xyz:SILVER
directionstringlong | short
size_tokennumberPosition size in coin units
size_usdnumberNotional at mark, USD
entry_pricenumberAverage entry price
mark_pricenumberMark price at the snapshot
liquidation_pricenumberLiquidation price as reported; 0.0 when none is reported
unrealized_pnlnumberMark-to-market PnL, USD
leveragenumberPosition leverage as reported
leverage_typestringcross | isolated
margin_usednumberMargin backing the position, USD
size_cohortstringAccount-value rung, e.g. whale (size ladder)
pnl_cohortstringRealized-PnL percentile rung, or unknown under 10 closed trades
pnl_abs_cohortstringRealized-PnL dollar band, e.g. -$10k-$0
liq_progressnumberHow far price has moved toward liquidation (0 = none); > 0.5 counts as at risk
dex_namestringHL, or the HIP-3 DEX the position is on
snapshot_tsstringSnapshot instant, ISO-8601 UTC
pnl_cohort_basisstringpoint_in_time | current — which label the row carries
pnl_cohort_as_ofstring|nullHour the point-in-time label was computed at; null for current
opened_atstring|nullWhen the position was first seen open, ISO-8601 UTC; null when unknown

Real rows

Position snapshots · rows

GET
Open this side to see the captured response.

    

Load it

bash
curl -H "X-API-KEY: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hyperliquid/positions?symbol=BTC&limit=10"

# Full history is the Parquet archive, one file per UTC day (any day /archive/datasets
# lists; date=latest is the current open positions, replaced every 5 minutes).
# Ask for a link to the file, then download it: the link needs no key and is
# valid 7 days (expires_in in the answer).
DAY=YYYY-MM-DD
URL=$(curl -s -H "X-API-KEY: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hyperliquid/archive/url?dataset=positions&date=$DAY" | jq -r '.url')
curl -f -o positions.parquet "$URL"

# Or the free sample, no key:
curl -O https://data.vike.io/archive/hl-samples/positions-sample.parquet

A link is valid 7 days for any number of requests, so a Parquet reader may read byte ranges straight from it; for repeated queries, download the file once and read it locally. Asking for a link is one ordinary request; the download needs no key, is not counted, and has no quota. Archive guide →

Full reference for /v1/hyperliquid/positions → · back to the catalog

Hyperliquid · API + Parquet archive · per wallet

Fills

Per-wallet fills with side, price, notional, fee, maker flag and closed PnL.

Route
GET /v1/hyperliquid/wallets/{address}/fills
Cadence
Continuous; archive one file per UTC day
Coverage
API: a wallet's fills, newest first, keyset-paged on (fill_ts, trade_id) — pass nextCursor back as cursor, limit up to 5,000; filter by symbol, side, start and end. Builder-routed fills have their own route, `/builders/{builder}/fills`. Archive: fills.parquet per UTC day from 2026-05-01 (CC BY 4.0), every fill of every wallet. Each file comes as a temporary link from /archive/url; /archive/datasets lists the days and the file's own columns.
Rows
Free APIArchiveStreamMCP ↓ fills-sample.parquet · no key

Fields

FieldTypeDescription
tsstringFill time, ISO-8601 UTC with milliseconds
symbolstringSymbol; HIP-3 DEX symbols carry their DEX prefix, spot pairs are HL's @index
sidestringbuy | sell
directionstringbuy | sell (mirrors side)
size_tokennumberSize in coin units
pricenumberFill price
size_usdnumberNotional, USD
feenumberFee paid in fee_token; negative is a rebate
fee_tokenstringCurrency the fee is paid in
is_makerbooleanMaker (true) or taker (false)
crossedbooleanThe order crossed the book
closed_pnlnumberRealized PnL closed by this fill, USD
order_idintegerVenue order id
trade_idintegerVenue trade id
dex_namestringHL, or the HIP-3 DEX

Real rows

Fills · rows

GET
Open this side to see the captured response.

    

Load it

bash
# replace each {placeholder} with your own value
curl -H "X-API-KEY: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hyperliquid/wallets/{address}/fills?limit=50"

# Full history is the Parquet archive, one file per UTC day (any day /archive/datasets
# lists).
# Ask for a link to the file, then download it: the link needs no key and is
# valid 7 days (expires_in in the answer).
DAY=YYYY-MM-DD
URL=$(curl -s -H "X-API-KEY: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hyperliquid/archive/url?dataset=fills&date=$DAY" | jq -r '.url')
curl -f -o fills.parquet "$URL"

# Or the free sample, no key:
curl -O https://data.vike.io/archive/hl-samples/fills-sample.parquet

A link is valid 7 days for any number of requests, so a Parquet reader may read byte ranges straight from it; for repeated queries, download the file once and read it locally. Asking for a link is one ordinary request; the download needs no key, is not counted, and has no quota. Archive guide →

Full reference for /v1/hyperliquid/wallets/{address}/fills → · back to the catalog

Hyperliquid · API dataset · 1m–1d + ticks

Candles

Hyperliquid OHLCV built from executed fills — time bars and N-trade tick bars.

Route
GET /v1/hyperliquid/ohlcv
Cadence
Bars close every interval; closed bars also stream
Coverage
Time bars 1m 5m 15m 30m 1h 4h 1d from fill rollups (no TTL); tick bars (Nt, e.g. 15t = 15 trades) walked from raw fills, kept without expiry back to 2025-12-31. market=perp | spot; HL core plus the HIP-3 DEXs (dex=XYZ, CASH, HYNA, KM, FLX, VNTL, PARA, MKTS). Closed bars stream on wss://data.vike.io/v1/stream; /ohlcv/export streams a window as NDJSON.
Rows
Free APIArchiveStreamMCP

Fields

FieldTypeDescription
tsintegerBar open time, epoch milliseconds UTC
opennumberFirst fill price in the bar
highnumberHighest fill price
lownumberLowest fill price
closenumberLast fill price in the bar
volumenumberVolume in coin units
volume_usdnumberVolume, USD
n_tradesintegerFills in the bar
sourcestringEnvelope: the data that answered — 1m fills rollup, 1h fills rollup, or fills for tick bars

Real rows

Candles · rows

GET
Open this side to see the captured response.

    

Load it

bash
curl -H "X-API-KEY: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hyperliquid/ohlcv?symbol=BTC&interval=1m&market=perp&limit=48"

Full reference for /v1/hyperliquid/ohlcv → · back to the catalog

Hyperliquid · API dataset · hourly

Cohort metrics

One coin's positioning across every cohort of a ladder, hourly — up to a year in one request.

Route
GET /v1/hl-cohorts/symbols/{symbol}/cohort-metrics
Cadence
Hourly buckets
Coverage
One coin, every cohort on an axis (size, tier, pnl, pnl_abs, pnl_unrealized), up to 8,760 hourly buckets per request, paged by hour. axis=size, axis=tier and axis=pnl_unrealized are always point_in_time; axis=pnl takes labelBasis=point_in_time (each hour's label as it was then — point-in-time labels from 2026-04-07) or current; every response declares which in label_basis and label_computed. /segments publishes every ladder's bounds.
Rows
Free APIArchiveStreamMCP

Fields

FieldTypeDescription
tsstringHour bucket, ISO-8601 UTC
cohortstringRung on the chosen axis, e.g. whale, 3x smart, $1m-$2.5m
position_countintegerOpen positions in the cohort
position_count_longinteger…of which long
total_position_valuenumberNotional, USD
total_position_value_longnumberLong notional, USD
total_unrealized_pnlnumberUnrealized PnL, USD
total_position_sizenumberSize in coin units
total_position_size_longnumberLong size in coin units
biasnumber(long − short) / (long + short), by notional
label_basisstringpoint_in_time | current — the basis actually used
gradingstringOn axis=pnl rows: which PnL grading labelled the wallet (realized by default)

Real rows

Cohort metrics · rows

GET
Open this side to see the captured response.

    

Load it

bash
curl -H "X-API-KEY: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hl-cohorts/symbols/BTC/cohort-metrics?axis=size&hours=1"

Full reference for /v1/hl-cohorts/symbols/{symbol}/cohort-metrics → · back to the catalog

Hyperliquid · API dataset · events + risk

Liquidations

Liquidation events, and each coin's open interest sitting close to liquidation.

Route
GET /v1/hyperliquid/liquidations
Cadence
Seconds after the liquidation fill; inferred between snapshots before 2026-08-03
Coverage
Liquidation events are exact, from the node's fills since 2026-08-03: the liquidated wallet's own fill, at its millisecond, with the venue's mark price. Older rows are inferred from position snapshots: a position that vanished between two snapshots while its last mark was within 5% of its liquidation price. Newest first (keyset-paged, limit up to 5,000; filter by symbol, wallet, direction, start, end), each with its point-in-time pnl cohort where the hourly label table covers that hour (pnl_cohort_basis says which). /liquidations/risk ranks coins by the share of notional within half its liquidation buffer; `/symbols/{symbol}/liquidation-heatmap` bins where open positions would liquidate.
Rows
Free APIArchiveStreamMCP

Fields

FieldTypeDescription
liq_tsstringLiquidation time, ISO-8601 UTC
walletstringLiquidated account
symbolstringSymbol; HIP-3 DEX symbols carry their DEX prefix, spot pairs are HL's @index
sidestringlong | short — the side that was closed
size_tokennumberSize liquidated, coin units
size_usdnumberNotional liquidated, USD
mark_pricenumberMark price at liquidation
size_cohortstringAccount-value rung
pnl_cohortstringRealized-PnL rung at the liquidation's hour, or unknown
pnl_cohort_basisstringpoint_in_time | current — which label the row carries

Real rows

Liquidations · rows

GET
Open this side to see the captured response.

    

Load it

bash
curl -H "X-API-KEY: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hyperliquid/liquidations?limit=20"

Full reference for /v1/hyperliquid/liquidations → · back to the catalog

Polymarket · API + Parquet archive · book_events · full L2

Order-book events

The full L2 tape — book snapshots, price_change deltas, trades, tick-size and status markers.

Route
GET /v1/polymarket/events
Cadence
Continuous; archive one partition per UTC day
Coverage
API: /events returns up to 24 hours per call and up to 50,000 events per page (next_cursor + has_more), from 2026-07-25; /orderbook returns the nearest book snapshot at or before any instant from then on, depth up to 25. Archive: book_events.parquet per UTC day from 2026-07-25 (CC BY 4.0), which also carries condition_id and tick_size.
Rows
Free APIArchiveStreamMCP ↓ book_events.parquet sample · no key

Fields

FieldTypeDescription
token_idstringThe outcome token (ERC-1155 id)
tsintegerEvent time, epoch milliseconds
local_tsintegerReceive time, epoch milliseconds
seqintegerFeed sequence number
event_typestringbook | price_change | trade | tick_size_change | status
is_snapshotinteger1 on a full-book row, 0 otherwise
sidestringnone | buy | sell
pricenumberThe changed level (price_change) or the print (trade)
sizenumberShares at that level, or traded
best_bidnumberTop of book as recorded on the event; 0.0 when not set
best_asknumberTop of book as recorded on the event; 0.0 when not set
bidsstringJSON [[price, size], …] carried as a string; empty when absent
asksstringJSON [[price, size], …] carried as a string; empty when absent
statusstringMarker on status rows, e.g. gap_start; empty otherwise

Real rows

Order-book events · rows

GET
Open this side to see the captured response.

    

Load it

bash
# replace each {placeholder} with your own value
curl -H "X-API-KEY: $VIKE_API_KEY" \
  "https://data.vike.io/v1/polymarket/events?token_id={token_id}&from_ms={from_ms}&to_ms={to_ms}&event_type=price_change&limit=50"

# Full history is the Parquet archive. Pick a date from manifest.json (no key needed),
# download the whole file, then read it locally:
DAY=YYYY-MM-DD
curl -H "X-API-KEY: $VIKE_API_KEY" -O \
  "https://data.vike.io/archive/venue=polymarket/date=$DAY/book_events.parquet"

# Or the free sample — one complete market, no key:
curl -O https://data.vike.io/archive/samples/book_events.parquet

Download whole files, then read them locally — do not point a Parquet reader at the remote URL. Archive downloads need a key but do not count against the hourly limit.

Full reference for /v1/polymarket/events → · back to the catalog

Polymarket · API + Parquet archive · trades · taker tape

Trades

The taker tape alone — trade prints without the book.

Route
GET /v1/polymarket/events
Cadence
Continuous; archive one partition per UTC day
Coverage
API: /events?event_type=trade, up to 24 hours per call, from 2026-07-25. Archive: trades.parquet per UTC day from 2026-07-25 (CC BY 4.0) — the same prints, with condition_id, and price/size as Float64.
Rows
Free APIArchiveStreamMCP ↓ trades.parquet sample · no key

Fields

FieldTypeDescription
token_idstringThe outcome token
tsintegerTrade time, epoch milliseconds
local_tsintegerReceive time, epoch milliseconds
seqintegerFeed sequence number; order trades on ts
event_typestringtrade
sidestringbuy | sell
pricenumberOutcome price, 0–1
sizenumberShares traded

Real rows

Trades · rows

GET
Open this side to see the captured response.

    

Load it

bash
# replace each {placeholder} with your own value
curl -H "X-API-KEY: $VIKE_API_KEY" \
  "https://data.vike.io/v1/polymarket/events?token_id={token_id}&from_ms={from_ms}&to_ms={to_ms}&event_type=trade&limit=50"

# Full history is the Parquet archive. Pick a date from manifest.json (no key needed),
# download the whole file, then read it locally:
DAY=YYYY-MM-DD
curl -H "X-API-KEY: $VIKE_API_KEY" -O \
  "https://data.vike.io/archive/venue=polymarket/date=$DAY/trades.parquet"

# Or the free sample — one complete market, no key:
curl -O https://data.vike.io/archive/samples/trades.parquet

Download whole files, then read them locally — do not point a Parquet reader at the remote URL. Archive downloads need a key but do not count against the hourly limit.

Full reference for /v1/polymarket/events → · back to the catalog

Polymarket · API dataset · with wallets

Market trades

One market's on-chain trades with the wallet behind each, newest first.

Route
GET /v1/polymarket/markets/{condition_id}/trades
Cadence
Continuous; the newest trades are a few minutes behind the chain
Coverage
API: one market's trades, newest first, keyset-paged — pass next_cursor back as cursor, limit up to 10,000 (the MCP tool: 200); from_ms and to_ms bound the window. From 2026-01-01 to a few minutes ago. A row is one order's fill, so a match is several rows (role maker | taker): never add both roles' volume. A few percent of fills are merged away. The recorded order book, which has no wallets, is the Order-book events dataset.
Rows
Free APIArchiveStreamMCP

Fields

FieldTypeDescription
tsintegerThe block's time, epoch milliseconds (whole seconds)
tx_hashstringTransaction hash, 0x-prefixed
log_indexintegerPosition of the fill in the block; orders the fills of one transaction
block_numberintegerPolygon block
proxy_walletstringThe Polymarket proxy wallet that placed the order, 0x-prefixed
namestringPolymarket display name; empty when unset
pseudonymstringPolymarket-generated pseudonym; empty when unset
sidestringBUY | SELL of the outcome token
rolestringmaker (a resting order that was hit) | taker (the order that hit it)
outcomestringThe outcome this token is, e.g. Up
outcome_indexintegerPosition of the outcome in the market's outcome list
token_idstringThe outcome token traded
sizenumberShares traded
pricenumberOutcome price, 0–1

Real rows

Market trades · rows

GET
Open this side to see the captured response.

    

Load it

bash
# replace each {placeholder} with your own value
curl -H "X-API-KEY: $VIKE_API_KEY" \
  "https://data.vike.io/v1/polymarket/markets/{condition_id}/trades?limit=50"

Full reference for /v1/polymarket/markets/{condition_id}/trades → · back to the catalog

Polymarket · Parquet archive · l1_quotes · top of book

Top-of-book quotes

Derived top of book — bid, ask and both sizes, one row per change.

Route
GET /v1/polymarket/archive/url
Cadence
One partition per UTC day
Coverage
Archive only: l1_quotes.parquet per UTC day from 2026-07-25 (CC BY 4.0), derived from book_events and published separately because it is far smaller. Resolve a file with /archive/url (redirect=1 for a 302); /archive/datasets lists every partition with its size and, where recorded, its row count.
Rows
Free APIArchiveStreamMCP ↓ l1_quotes.parquet sample · no key

Fields

FieldTypeDescription
token_idStringThe outcome token
condition_idStringThe market, 0x-prefixed
tsInt64Quote time, epoch milliseconds
local_tsInt64Receive time, epoch milliseconds
bidDecimal(9, 4)Best bid
askDecimal(9, 4)Best ask
bid_sizeDecimal(18, 6)Shares at the best bid
ask_sizeDecimal(18, 6)Shares at the best ask

Real rows

Top-of-book quotes · rows

GET
Open this side to see the captured response.

    

Load it

bash
curl -H "X-API-KEY: $VIKE_API_KEY" \
  "https://data.vike.io/v1/polymarket/archive/datasets?limit=1000"

# Full history is the Parquet archive. Pick a date from manifest.json (no key needed),
# download the whole file, then read it locally:
DAY=YYYY-MM-DD
curl -H "X-API-KEY: $VIKE_API_KEY" -O \
  "https://data.vike.io/archive/venue=polymarket/date=$DAY/l1_quotes.parquet"

# Or the free sample — one complete market, no key:
curl -O https://data.vike.io/archive/samples/l1_quotes.parquet

Download whole files, then read them locally — do not point a Parquet reader at the remote URL. Archive downloads need a key but do not count against the hourly limit.

Full reference for /v1/polymarket/archive/url → · back to the catalog

Polymarket · API dataset · search · settle

Markets & settlements

Market search, one-market detail, and the on-chain resolution per condition.

Route
GET /v1/polymarket/markets
Cadence
Kept by the market recorder; state derived per request
Coverage
Recorded markets with derived state: closed when the chain resolved the condition OR Polymarket's own feed closed it. /markets filters by slug substring and active | closed (never both), newest end_date first, limit up to 100. `/markets/{condition_id}` answers a market outside the recorded set from Polymarket's full market catalog; its `source` says which list answered. `/settlements/{condition_id}` is the on-chain resolution — [] means the chain resolved nothing, not that the market is open; `/settlements/bulk` pages every settlement oldest resolution first (filter by resolution time and slug prefix, up to 5,000 a page, next_cursor + has_more) from pages rebuilt every 5 minutes, so a newly resolved market can appear there up to about 5 minutes after `/settlements/{condition_id}` shows it. Candles per token: /ohlcv.
Rows
Free APIArchiveStreamMCP

Fields

FieldTypeDescription
condition_idstringThe market, 0x-prefixed
slugstringURL slug
activeinteger1 when not closed, else 0
closedinteger1 when resolved on chain or closed by the venue
end_dateintegerScheduled end, epoch milliseconds
neg_riskinteger|null1 for a neg-risk market; null on a catalog row
tick_sizenumber|nullPrice increment; null on a catalog row
token_idsarrayOne outcome token id per outcome

Real rows

Markets & settlements · rows

GET
Open this side to see the captured response.

    

Load it

bash
curl -H "X-API-KEY: $VIKE_API_KEY" \
  "https://data.vike.io/v1/polymarket/markets?active=true&limit=25"

Full reference for /v1/polymarket/markets → · back to the catalog

On-chain · API dataset · buyers · sellers

Token transfers

Who bought and who sold a token over a period, aggregated from raw transfers.

Route
GET /v1/onchain/tokens/{token_address}/transfers
Cadence
Synced block by block
Coverage
Per-token buyer and seller totals over a period (period, tab=bought|sold, chain) on Ethereum, BNB Chain, Base and HyperEVM — chain=ethereum|bsc|base|hyperevm is a filter, not a namespace. Per-wallet transfer lists at `/wallets/{address}/transactions` cover the same four chains. Amount and USD fields on this route are whole tokens and plain USD (they were integers scaled by 10^6 until 2026-10-13).
Rows
Free APIArchiveStreamMCP

Fields

FieldTypeDescription
addressstringWallet, 0x-prefixed
boughtnumberTokens received, whole tokens
soldnumberTokens sent, whole tokens
net_tokensnumberbought − sold, whole tokens
usd_spentnumberUSD value of tokens received, in USD
usd_receivednumberUSD value of tokens sent, in USD
net_usdnumberusd_received − usd_spent, in USD
net_usd_rawnumbernet_usd rounded to cents
chainsarrayChain tags the wallet traded on, e.g. eth
titlestring|nullKnown wallet title, when one exists
addr_shortstringDisplay form, 0xabcd...1234
bought_fmtstringDisplay string of bought
sold_fmtstringDisplay string of sold
net_tokens_fmtstringDisplay string of |net_tokens|
usd_spent_fmtstringDisplay string of usd_spent
usd_received_fmtstringDisplay string of usd_received
net_usd_fmtstringDisplay string of net_usd
net_bar_pctinteger|net_usd| as a percent of the page's largest

Real rows

Token transfers · rows

GET
Open this side to see the captured response.

    

Load it

bash
curl -H "X-API-KEY: $VIKE_API_KEY" \
  "https://data.vike.io/v1/onchain/tokens/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48/transfers?period=24h&chain=ethereum"

Full reference for /v1/onchain/tokens/{token_address}/transfers → · back to the catalog

On-chain · API dataset · provenance

Wallet labels

Entity, wallet type and risk flag per address — plus which source claimed what.

Route
GET /v1/onchain/labels/{address}/provenance
Cadence
Rebuilt by the label pipeline
Coverage
Ethereum addresses for `/labels/{address}/provenance`, which returns the consensus label and every source's own claim, among them `provider_e` (Polymarket wallets, the addresses that control or funded them, and mass payers), which answers for an address on any EVM chain and never feeds the consensus; POST /labels/batch labels a comma-separated list of addresses in one call, from the label set of the `chain` you pass (ethereum, bsc, base or hyperevm); `/wallets/{address}` summarises flows over 24h, 7d, 30d, 90d and all time.
Rows
Free APIArchiveStreamMCP

Fields

FieldTypeDescription
addressstringThe address asked about
foundbooleanAt least one source knows this address (consensus is all null when only provider_e does)
consensus.entitystring|nullResolved entity name
consensus.wallet_typestring|nulle.g. cex, market_maker, treasury, dex, mev
consensus.cex_productstring|nullFor exchange wallets, e.g. retail
consensus.user_subtypestring|nulle.g. active
consensus.risk_flagstring|nullNull when none
consensus.confidencestring|nullClassification confidence, e.g. medium
sourcesarrayOne object per source: source, label, and entity / category when the source has them. A `provider_e` entry also carries basis, evidence, n_wallets, volume_usd, realized_pnl_usd, top_wallet and top_wallet_name
source_countintegerHow many sources made a claim

Real rows

Wallet labels · rows

GET
Open this side to see the captured response.

    

Load it

bash
# replace each {placeholder} with your own value
curl -H "X-API-KEY: $VIKE_API_KEY" \
  "https://data.vike.io/v1/onchain/labels/{address}/provenance"

Full reference for /v1/onchain/labels/{address}/provenance → · back to the catalog

On-chain · API dataset · per token

Token holders

Holder leaderboard per token, ranked by cumulative net inflow in USD.

Route
GET /v1/onchain/tokens/{token_address}/holders
Cadence
Daily aggregates
Coverage
Top wallets by all-time net inflow of one token (USD at transfer time), with gross volume, transfer count, first and last active day and the wallet's label when known. limit up to 50. Find a token first with /tokens/search.
Rows
Free APIArchiveStreamMCP

Fields

FieldTypeDescription
walletstringHolder, 0x-prefixed
net_flow_usdnumberInflow − outflow, USD — the ranking
volume_usdnumberInflow + outflow, USD
tx_countintegerTransfers counted
first_seenstringFirst active day, YYYY-MM-DD
last_activestringLast active day, YYYY-MM-DD
entitystringResolved entity; empty when unlabelled
wallet_typestringLabel type; empty when unlabelled

Real rows

Token holders · rows

GET
Open this side to see the captured response.

    

Load it

bash
curl -H "X-API-KEY: $VIKE_API_KEY" \
  "https://data.vike.io/v1/onchain/tokens/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48/holders?chain=ethereum&limit=10"

Full reference for /v1/onchain/tokens/{token_address}/holders → · back to the catalog