vike

Recipe 8 of 32

Top counterparties of a wallet

Call /wallets/{address}/counterparties; it ranks the addresses the wallet sent to or received from by combined USD volume over a window, with the amount each way and labels.

GET /v1/onchain/wallets/{address}/counterparties ranks the addresses a wallet dealt with by sent plus received USD over a window (default 30 days). Each row has total_volume_usd, sent_usd, received_usd, tx_count, first and last contact in the window, and the counterparty's entity and wallet_type where we label it. The response is a bare JSON array. The full parameter list is on Wallet counterparties.

Quick answer

cURL
# a large wallet's five biggest counterparties over 90 days
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/onchain/wallets/0x176f3dab24a159341c0509bb36b833e7fdd0a132/counterparties?window=90d&limit=5"

Example response

Captured from the live API on 2026-10-24 at 17:18 UTC, all 5 rows.

sent_usd and received_usd are from the queried wallet's side: it sent $241M to the first Sky contract and received $243M from the Safe. The null address row is $208M of tokens minted to the wallet, since a mint is a transfer from the zero address. All amounts are plain USD.

Example response
[
  {
    "wallet": "0x29065a4c1f2f20d1e263930088890d6f49fe715a",
    "total_volume_usd": 337998474.85,
    "sent_usd": 95054199.85,
    "received_usd": 242944275.0,
    "tx_count": 27,
    "first_seen": "2026-07-28T17:00:59",
    "last_seen": "2026-10-21T13:56:11",
    "entity": "gnosissafeproxy",
    "wallet_type": "treasury"
  },
  {
    "wallet": "0xa188eec8f81263234da3622a406892f3d630f98c",
    "total_volume_usd": 241000000.001542,
    "sent_usd": 241000000.001542,
    "received_usd": 0.0,
    "tx_count": 12,
    "first_seen": "2026-08-07T15:19:35",
    "last_seen": "2026-10-22T16:06:59",
    "entity": "sky (makerdao)",
    "wallet_type": "defi"
  },
  {
    "wallet": "0xa3931d71877c0e7a3148cb7eb4463524fec27fbd",
    "total_volume_usd": 241000000.001541,
    "sent_usd": 208000000.001541,
    "received_usd": 33000000.0,
    "tx_count": 12,
    "first_seen": "2026-08-07T15:18:23",
    "last_seen": "2026-10-22T16:08:11",
    "entity": "sky (makerdao)",
    "wallet_type": "defi"
  },
  {
    "wallet": "0x0000000000000000000000000000000000000000",
    "total_volume_usd": 208000000.001541,
    "sent_usd": 0.0,
    "received_usd": 208000000.001541,
    "tx_count": 5,
    "first_seen": "2026-08-20T11:33:23",
    "last_seen": "2026-10-22T16:06:59",
    "entity": "null address",
    "wallet_type": ""
  },
  {
    "wallet": "0x37305b1cd40574e4c5ce33f8e8306be057fd7341",
    "total_volume_usd": 33000000.0,
    "sent_usd": 0.0,
    "received_usd": 33000000.0,
    "tx_count": 7,
    "first_seen": "2026-08-07T15:19:35",
    "last_seen": "2026-09-19T09:32:47",
    "entity": "sky (makerdao)",
    "wallet_type": "defi"
  }
]

Variations

Another window. window takes 24h, 7d, 30d, 90d, 180d or all. Compare a short window with all to spot new counterparties.

cURL — all history
# the long-run ranking over all recorded history
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/onchain/wallets/0x176f3dab24a159341c0509bb36b833e7fdd0a132/counterparties?window=all&limit=50"

Another chain.

cURL — BSC
# the same address on BSC
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/onchain/wallets/0x176f3dab24a159341c0509bb36b833e7fdd0a132/counterparties?chain=bsc&window=90d&limit=20"

Feed the next call. Print the addresses only, to pass to /labels/batch, /wallets/compare or /wallets/{address}/trace.

cURL — addresses
# just the counterparty addresses
curl -s -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/onchain/wallets/0x176f3dab24a159341c0509bb36b833e7fdd0a132/counterparties?window=90d&limit=50" \
  | jq -r '.[].wallet'

Before you rely on it

Inside the window only, and priced transfers only

first_seen and last_seen are the first and last contact inside the window, not the first ever, so they move when you widen it. Only transfers we hold a USD price for count, so unpriced tokens never rank. limit is applied up to 50, whatever larger value you send. Mints and burns show up as the zero address.

Ask your agent

Connected to the Vike MCP server (https://vike.io/mcp) in Claude, ChatGPT or Cursor, ask it in plain words. The wallet_counterparties tool answers it, at 2 credits a call.

Ask your agent
Who are the top counterparties of 0x176f3dab24a159341c0509bb36b833e7fdd0a132 over the last 90 days?
Example response
[  {    "wallet": "0x29065a4c1f2f20d1e263930088890d6f49fe715a",    "total_volume_usd": 337998474.85,    "sent_usd": 95054199.85,    "received_usd": 242944275.0,    "tx_count": 27,    "first_seen": "2026-07-28T17:00:59",    "last_seen": "2026-10-21T13:56:11",    "entity": "gnosissafeproxy",    "wallet_type": "treasury"  },  {    "wallet": "0xa188eec8f81263234da3622a406892f3d630f98c",    "total_volume_usd": 241000000.001542,    "sent_usd": 241000000.001542,    "received_usd": 0.0,    "tx_count": 12,    "first_seen": "2026-08-07T15:19:35",    "last_seen": "2026-10-22T16:06:59",    "entity": "sky (makerdao)",    "wallet_type": "defi"  },  {    "wallet": "0xa3931d71877c0e7a3148cb7eb4463524fec27fbd",    "total_volume_usd": 241000000.001541,    "sent_usd": 208000000.001541,    "received_usd": 33000000.0,    "tx_count": 12,    "first_seen": "2026-08-07T15:18:23",    "last_seen": "2026-10-22T16:08:11",    "entity": "sky (makerdao)",    "wallet_type": "defi"  },  {    "wallet": "0x0000000000000000000000000000000000000000",    "total_volume_usd": 208000000.001541,    "sent_usd": 0.0,    "received_usd": 208000000.001541,    "tx_count": 5,    "first_seen": "2026-08-20T11:33:23",    "last_seen": "2026-10-22T16:06:59",    "entity": "null address",    "wallet_type": ""  },  {    "wallet": "0x37305b1cd40574e4c5ce33f8e8306be057fd7341",    "total_volume_usd": 33000000.0,    "sent_usd": 0.0,    "received_usd": 33000000.0,    "tx_count": 7,    "first_seen": "2026-08-07T15:19:35",    "last_seen": "2026-09-19T09:32:47",    "entity": "sky (makerdao)",    "wallet_type": "defi"  }]