Public wallet analytics for Polymarket: trade history, positions, portfolio value, top holders, profiles, and flow analysis. No authentication required.
Horizon provides read-only access to Polymarket’s public Data API for wallet-level analytics. Fetch any wallet’s trade history, open positions, portfolio value, and public profile - no authentication or private keys required.
All wallet analytics use Polymarket’s public Data API. You only need a wallet address (0x…) to look up any trader. This is useful for flow analysis, whale tracking, copy trading research, and competitive intelligence.
trades = hz.get_wallet_trades( address="0x1234...", # Wallet address limit=100, condition_id="0xabc...", # Optional: filter to one market)total_volume = sum(t.usdc_size for t in trades)print(f"Total volume: ${total_volume:,.2f}")
holders = hz.get_top_holders( condition_id="0xabc...", limit=20, # Max 20)for h in holders: name = h.pseudonym or h.wallet[:10] + "..." print(f"{name}: {h.amount:,.0f} tokens (outcome {h.outcome_index})")
flow.condition_id # Market condition IDflow.total_trades # Number of trades analyzedflow.buy_volume # Total buy volume in USDflow.sell_volume # Total sell volume in USDflow.net_flow # buy_volume - sell_volumeflow.unique_wallets # Number of unique walletsflow.top_buyers # list[(wallet, volume)] top buyersflow.top_sellers # list[(wallet, volume)] top sellers
import horizon as hz# Find top holders in an election marketholders = hz.get_top_holders("0xabc123...")for h in holders[:5]: profile = hz.get_wallet_profile(h.wallet) name = profile.pseudonym if profile else h.wallet[:10] # Get their trade history trades = hz.get_wallet_trades(h.wallet, limit=20) recent_side = trades[0].side if trades else "N/A" print(f"{name}: {h.amount:,.0f} tokens, last action: {recent_side}")
import horizon as hzaddress = "0x1234..."value = hz.get_wallet_value(address)positions = hz.get_wallet_positions(address, sort_by="CURRENT")profile = hz.get_wallet_profile(address)print(f"Trader: {profile.pseudonym if profile else address[:10]}")print(f"Portfolio: ${value:,.2f}")print(f"Positions: {len(positions)}")for p in positions[:5]: emoji = "+" if p.pnl > 0 else "" print(f" {p.market_title[:40]}: {p.outcome} {p.size:.0f} @ {p.avg_price:.2f} → PnL {emoji}${p.pnl:.2f}")
Wallet analytics use Polymarket’s public Data API and are currently only available for Polymarket markets. Kalshi does not provide public wallet-level data. Rate limiting may apply for high-frequency requests.