/wallets/{address}
One Polymarket trader's profile — lifetime volume, realized P&L and hit rate over a window, markets, recent trades, open positions and an equity curve.
GET https://data.vike.io/v1/polymarket/wallets/{address}One Polymarket trader, profiled from the on-chain trade tape: lifetime volume and trade counts,
realized P&L and hit rate over a chosen window, the markets the wallet traded, its recent trades,
open positions and a daily equity curve. It is the same answer the
polymarket_wallet MCP tool gives — the route runs that tool.
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/wallets/0x204f72f35326db932158cba6adff0b9a1da95e14?window=30d"addresspathrequired0x-prefixed proxy-wallet address (40 hex digits). Anything else is a 400.windowqueryoptional24h, 7d, 30d or all. Default all. Any other value is a 400. See What the window moves for which fields it changes.The response is large — up to 100 trades, 30 markets and a few hundred equity-curve points — so the real one is abridged in this example, each list cut to its first element.
{
"proxy_wallet": "0x204f72f35326db932158cba6adff0b9a1da95e14",
"window": "30d",
"trades_window": 0,
"trades_all": 4331238,
"volume_window_usd": 0.0,
"volume_all_usd": 611448374.69,
"avg_trade_usd": 141.17,
"markets_count": 150749,
"first_seen": "2026-01-01 00:00:37",
"last_seen": "2026-08-26 09:17:49",
"realized_pnl_usd": 379.10,
"resolved_markets": 34,
"hit_rate": 0.4105,
"hit_rate_ci": 0.157,
"open_positions": [],
"open_exposure_usd": 0,
"markets": [ { "condition_id": "0x392b…", "title": "…", "trades": 673, "volume_usd": 1575609.82, "net_shares": 1971349.29, "resolved": true, "winning_outcome": "Argentina", "realized_pnl": 384904.21 } ],
"trades": [ "…" ],
"equity_curve": [ "…" ],
"category_breakdown": [ "…" ],
"daily_activity": [ "…" ],
"correlated": [ "…" ],
"tags": [ "…" ],
"is_active": false,
"streak": { "n": 6, "kind": "win" }
}What the window moves
window scopes some fields and leaves the rest alone.
| Field | Scoped by window? | Cut by |
|---|---|---|
trades_window, volume_window_usd | Yes | trade time |
realized_pnl_usd, resolved_markets, hit_rate, hit_rate_ci | Yes | resolution time — only markets resolved inside the window count |
trades_all, volume_all_usd, avg_trade_usd, markets_count, first_seen, last_seen, share and dollar totals | No | lifetime |
markets, trades, open_positions, equity_curve, category_breakdown, daily_activity, correlated | No | full history |
A wallet that traded long ago but resolved nothing inside the window reports trades_window: 0
and realized_pnl_usd: 0 — zeros that mean "nothing in this window", not "no activity".
Reading it
hit_rateis volume-weighted, not a count of wins. It is the share of the wallet's resolved dollar volume that sat in markets where it made money. Withresolved_markets: 34an integer number of won markets will not reproduce it.hit_rate_ciis the Wilson confidence half-width on that rate; with few resolved markets it is wide, so do not rank on the point value.realized_pnl_usdis realized only. An open position contributes nothing until its market resolves. Markets that resolved invalid are excluded from P&L, hit rate and the resolved count.open_positionsandopen_exposure_usdunderstate. A position is priced from a recent top-of-book quote (the last hour); one with no fresh quote is left out.- Lists are capped.
marketsandopen_positionshold at most 30 rows,tradesat most 100, however largemarkets_countis.correlatedlists up to 8 wallets that trade many of the same markets. - Not comparable with the L2 routes. This reads the trade tape;
/market_statsand/ohlcvread the recorded book, so the same wallet's volume can differ between them.
Errors
| Status | When |
|---|---|
400 | The address is not 0x plus 40 hex digits, window is not one of the four values, an unknown query parameter is sent, or the wallet has no recorded trades. The body is {"error": "…"}. |
401 / 429 | No or bad credential, or the hourly budget is spent — see Authentication and Rate limits. |
503 | The store behind it is unavailable. The body carries no driver text. |
This is a heavier call than its single budget unit suggests: the correlated list alone scans
hundreds of MiB. Cache the answer rather than polling it.
/markets/{condition_id}
One market's detail — the same row shape as the directory, for a single market you already hold a condition_id for.
/smart_money
Polymarket smart-money signals — markets with the largest net inflow from the profitable-wallet cohort, or markets that cohort bought well below the mid.