Recipe 8 of 30
Copy-trade a Polymarket wallet
Poll /wallets/{address} every few minutes and diff its trades list by tx_hash; open_positions shows what it holds now. There is no push feed of a wallet's trades.
GET /v1/polymarket/wallets/{address} answers it in one call: the wallet's last 100 trades, newest first, and up to 30 open positions priced at the latest quote. To follow a wallet, poll it, keep the tx_hash values you have seen, and act on the new ones. Each trade carries the market, the outcome, the side, the size in shares and the price as a probability. The full parameter list is on Trader profile.
Quick answer
Poll the profile of the proxy wallet you follow.
# the wallet's latest trades and what it holds now
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/wallets/0xde7be6d489bce070a959e0cb813128ae659b5f4b?window=all"Example response
Captured from the live API on 2026-10-24 at 17:15 UTC, abridged to 3 of 100 trades and 1 of 30 open positions (its 90-point mid_history left out). The wallet bought No on the Kansas Senate market three times at 0.61, about $470 in all. size is shares and usd is size * price. Its largest open position is 395,596 No shares on the Netanyahu market, worth $286,807 at a mid of 0.725. Times are UTC.
{
"proxy_wallet": "0xde7be6d489bce070a959e0cb813128ae659b5f4b",
"last_seen": "2026-10-24T12:28:00",
"trades": [
{"ts": "2026-10-24T12:28:00", "condition_id": "0x460d3942d385cdeda20519c0c5ad804ae48dc18efc9a82e1f1be87a29e69adb3", "title": "Will the Democrats win the Kansas Senate race in 2026?", "slug": "will-the-democrats-win-the-kansas-senate-race-in-2026", "outcome": "No", "side": "BUY", "size": 200.7, "price": 0.6100000000000001, "usd": 122.427, "tx_hash": "0x031232caec884f0093572aa5081f5081025726adc43f0b7af6f9af4f2b710001"},
{"ts": "2026-10-24T12:23:17", "condition_id": "0x460d3942d385cdeda20519c0c5ad804ae48dc18efc9a82e1f1be87a29e69adb3", "title": "Will the Democrats win the Kansas Senate race in 2026?", "slug": "will-the-democrats-win-the-kansas-senate-race-in-2026", "outcome": "No", "side": "BUY", "size": 241.2, "price": 0.6100000000000001, "usd": 147.132, "tx_hash": "0x454733b5f45488df3761635339c241d8c5da402fb131b494757f43a4c6f20704"},
{"ts": "2026-10-24T11:35:24", "condition_id": "0x460d3942d385cdeda20519c0c5ad804ae48dc18efc9a82e1f1be87a29e69adb3", "title": "Will the Democrats win the Kansas Senate race in 2026?", "slug": "will-the-democrats-win-the-kansas-senate-race-in-2026", "outcome": "No", "side": "BUY", "size": 326.615385, "price": 0.6100000004592558, "usd": 199.23538500000004, "tx_hash": "0xa57eccb71503f8d8549ed4a24b36260e723cf9217818ff8b48a3c3219dc63c2a"}
],
"open_positions": [
{
"condition_id": "0x7586a96520578acaaaa4ea84a2582f197f84255da1f3392a7aa300386c187b37",
"title": "Will Benjamin Netanyahu be the next Prime Minister of Israel?",
"slug": "will-benjamin-netanyahu-be-the-next-prime-minister-of-israel",
"outcome_index": 1,
"outcome_label": "No",
"net_shares": 395595.6721450001,
"cost_basis_usd": 273484.96437999996,
"current_mid": 0.725,
"snap_ts": "2026-10-24T17:13:25.628000",
"current_value_usd": 286806.86230512505,
"unrealized_pnl_usd": 13321.897925125086,
"last_trade_ts": "2026-10-23T23:52:53"
}
]
}Variations
Only the new trades. Keep the hashes from the last poll in a file and print the trades that are not in it.
# trades whose tx_hash is not in seen.txt (one hash per line)
curl -s -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/wallets/0xde7be6d489bce070a959e0cb813128ae659b5f4b?window=all" | jq -c --rawfile seen seen.txt '.trades[] | select(.tx_hash as $h | $seen | split("\n") | index($h) | not)'What it holds, not what it did.
# open positions: market, outcome, shares and current value
curl -s -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/wallets/0xde7be6d489bce070a959e0cb813128ae659b5f4b?window=all" | jq '.open_positions[] | {title, outcome_label, net_shares, current_mid, current_value_usd}'Find the token before you follow. A position names its market and outcome_index, not its token. The market's token_ids[outcome_index]
is the token to pass to /orderbook, because the wallet's price is gone once it has filled.
# the token ids of the market behind the largest open position
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/polymarket/markets/0x7586a96520578acaaaa4ea84a2582f197f84255da1f3392a7aa300386c187b37"Before you rely on it
Polling, not a feed
There is no stream of a wallet's trades, and the order-book tape at /events carries no wallet addresses,
so it cannot follow one. Poll the profile instead: it is a heavy call, and a repeat within about three
minutes can return the same lists, so poll every few minutes, not every second. trades is the last 100
only; a wallet that trades faster than that between two polls drops trades you never see.
open_positions lists at most 30 and leaves out a position with no quote in the last 7 days.
Ask your agent
Connected to the Vike MCP server (https://vike.io/mcp) in Claude, ChatGPT or Cursor, ask it in plain words. The polymarket_wallet tool answers, at 2 credits a call.
What did Polymarket wallet 0xde7be6d489bce070a959e0cb813128ae659b5f4b trade today, and what positions does it hold?