Trader Intelligence API
Live wallet-attributed public activity, venue-scoped profiles, versioned scores, and the scored-trade feed.
Trader Intelligence organizes public venue-published/on-chain activity by wallet and venue. Scores are versioned informational signals, not financial advice, and nothing on this page is a recommendation. Wallets remain venue-scoped; Predictefy does not claim that addresses on different venues belong to the same person.
All endpoints are authenticated, metered GET requests. List endpoints default
to limit=20 and cap it at 100.
Endpoints
Market trader trades
GET /v1/traders/{venue}/markets/{marketId}/trades
| Parameter | Required | Meaning |
|---|---|---|
venue | yes | One supported Trader Intelligence venue id. |
marketId | yes | Venue-native market id. |
limit | no | 1–100 rows. |
cursor | no | Opaque venue/keyset cursor from nextCursor. |
Rows contain venue, marketId, outcomeId, tradeId, ts, wallet, optional
displayName, side, price, amount, and usdSize. Nullable fields stay
null when the venue payload cannot prove them.
Market holders
GET /v1/traders/{venue}/markets/{marketId}/holders
Parameters: venue, marketId, and optional limit. Rows contain wallet,
optional displayName, outcomeId, shares, and nullable usdValue. Venues
without a public holder/outcome concept return TRADERS_UNSUPPORTED.
Venue leaderboard
GET /v1/traders/{venue}/leaderboard
| Parameter | Required | Values |
|---|---|---|
by | no | profit, volume, or score; default profit. |
window | no | day, week, month, or all; default all. |
limit | no | 1–100 rows. |
Native profit/volume rows contain venue, wallet, optional displayName,
rank, window, nullable profitUsd, and nullable volumeUsd. by=score
uses Predictefy scores and instead includes score, scoreVersion, factors,
category, stats, refreshedAt, refreshState, asOf, and provenance.
Wallet factors contain the versioned trackRecord, experience, scale, and
discipline components when a w1 score is available.
The exact score note is:
Score ranking uses the current stored score; window is retained for API consistency.
Cross-venue score leaderboard
GET /v1/traders/leaderboard
This endpoint supports by=score only, plus optional window and limit.
Profit and volume are venue-native and are never merged into a synthetic ranking.
Rows use the score-leaderboard shape above and remain venue-tagged.
The response carries these exact honesty notes:
Wallets are venue-scoped; the cross-venue leaderboard interleaves venue-tagged entries without claiming same-person identity.
Score ranking uses current stored scores; window is retained for API consistency.
Wallet profile
GET /v1/traders/{venue}/wallets/{addr}
Profiles contain venue, wallet, optional displayName, score,
scoreVersion, factors, category, stats, refreshedAt, refreshState,
asOf, and provenance. stats contains walletAgeDays, marketsTraded,
totalVolumeUsd, winRate, realizedPnlUsd, firstSeen, lastSeen, and
depositFirstAt.
A live fill-in can return score, scoreVersion, factors, and category as
null until Predictefy scores that wallet. It says so in note; the API does
not invent a score from incomplete venue data.
Wallet trades
GET /v1/traders/{venue}/wallets/{addr}/trades
Parameters: venue, addr, optional limit, and optional cursor. The list
uses the same wallet-attributed trade fields as the market tape. A venue without
keyless wallet history returns TRADERS_UNSUPPORTED.
Smart-money feed
GET /v1/traders/smart-money
The route name is part of the API; the response is an informational scored-trade feed, not a recommendation.
| Parameter | Required | Meaning |
|---|---|---|
venue | no | One Trader Intelligence venue. |
minScore | no | Minimum trade score, 0–100. |
market | no | Exact market id. |
wallet | no | Exact venue-scoped wallet. |
category | no | bot, whale, smart, fresh, or fish. |
window | no | day, week, month, or all; default all. |
limit | no | 1–100 rows. |
cursor | no | Opaque (ts, tradeId) keyset cursor. |
Rows add tradeScore, tradeFactors, scoreVersion, walletScoreAtTrade, and
categoryAtTrade to the normal trader-trade fields. Version t1 trade factors
are walletScore, size, entry, and timing. The response carries these exact
honesty notes:
window=all means all collected feed data; no historical backfill is included.
Error honesty
An unknown venue or unsupported venue/verb returns HTTP 400:
{
"success": false,
"error": {
"code": "TRADERS_UNSUPPORTED",
"message": "market holders are unsupported for hyperliquid",
"retryable": false
}
}
An unknown wallet returns 404 TRADER_NOT_FOUND. If Trader Intelligence is
unavailable, /v1/traders/* returns 404.
Venue capabilities
Hyperliquid market selection follows the active catalog and refreshes periodically as that catalog changes. A listed capability is not a claim that every venue currently has collected rows: scored-trade and smart-money coverage requires activity from that venue.
| Venue | Trader trades | Holders | Leaderboard | Wallet profile | Scored-trade feed |
|---|---|---|---|---|---|
polymarket | yes | yes | yes | yes | yes |
limitless | yes | yes | yes | yes | yes |
myriad | yes | yes | no | yes | yes |
hyperliquid | yes | no | yes | yes | yes |
sxbet | yes | no | no | no | yes |
predictfun | yes | no | yes | yes | yes |
opinion | no | no | no | yes | no |
kalshi | no | no | no | no | no |
gemini | no | no | no | no | no |
smarkets | no | no | no | no | no |
polymarket_us | no | no | no | no | no |
Opinion is a lookup-only venue (no public per-market tape, so no scored-trade or smart-money coverage). The final four rows are a venue property, not a gap.
Venue-specific limits matter:
- PredictFun ranks venue points only.
by/sort has no venue effect, onlyallexists, and the board contains no profit or volume figures. Position pages do not prove lifetime totals, and match collateral is unknown, sousdSizeis null. - Limitless's board is all-time volume only, with no keyless wallet history.
- Myriad has no board. Sizes are token-denominated, so USD fields are null.
- Hyperliquid has no holders. Its tape is push-based, and profile totals cover only the recent fills window returned by the venue.
- SXBET is trades-only:
sideis null, andusdSizeexists only for SX USDC. - Opinion wallet lookups require a venue API key held server-side; the venue hides order ids for privacy. Wallet trades paginate with an opaque cursor.
SDK examples
TypeScript uses venue subclients for venue lookups and root methods for merged score/feed reads:
const tape = await client.polymarket.fetchTraderTrades(conditionId, { limit: 25 });
const holders = await client.limitless.fetchHolders(marketSlug, { limit: 10 });
const board = await client.hyperliquid.fetchLeaderboard({
by: 'profit',
window: 'week',
limit: 20,
});
const profile = await client.polymarket.fetchWalletProfile(wallet);
const history = await client.sxbet.fetchWalletTrades(wallet, { limit: 25 });
const feed = await client.fetchSmartMoney({ venue: 'polymarket', minScore: 70, window: 'week' });
const top = await client.fetchTopTraders({ by: 'score', window: 'all', limit: 20 });
Python exposes the same surface in snake case:
tape = client.polymarket.fetch_trader_trades(condition_id, {"limit": 25})
holders = client.limitless.fetch_holders(market_slug, {"limit": 10})
board = client.hyperliquid.fetch_leaderboard(
{"by": "profit", "window": "week", "limit": 20}
)
profile = client.polymarket.fetch_wallet_profile(wallet)
history = client.sxbet.fetch_wallet_trades(wallet, {"limit": 25})
feed = client.fetch_smart_money(
{"venue": "polymarket", "minScore": 70, "window": "week"}
)
top = client.fetch_top_traders({"by": "score", "window": "all", "limit": 20})