Live WebSocket stream of the native balance of tracked wallets, updated on every trade, with previous balance and USD value. Solana, BNB, Base, Ethereum and Robinhood.
Track the native balance of tracked wallets in real time. Whenever a wallet trades, CabalSpy reads its on-chain balance and streams the new value, along with the previous balance so you can show the change.This stream runs on Solana, BNB, Base, Ethereum and Robinhood. The event shape is identical on every chain, only the native currency changes.On subscribe you get a snapshot of known balances. Subscribing to a specific wallet that is not yet cached triggers an immediate on-demand balance fetch.
On Solana the balance is read from the chain on every trade. On EVM chains it is streamed, which also catches plain transfers and bridge deposits, not just trades. In exchange an EVM update can land a few hundred milliseconds after the trade that caused it.
Provide your API key as a query parameter, wss://stream.cabalspy.xyz?apiKey=YOUR_KEY, or as a header, Authorization: Bearer YOUR_KEY. Invalid keys are closed with code 1008.
The balance you receive is always the chain native asset. Decimals and the raw unit differ per chain, so read them from the payload rather than assuming.
blockchain
Currency
decimals
amount_raw unit
wallet_types
solana
SOL
9
lamports
kol, smart, whale
bnb
BNB
18
wei
kol, smart
base
ETH
18
wei
kol, smart
eth
ETH
18
wei
kol
rh
ETH
18
wei
kol, smart
Leaving blockchain out defaults to solana, which keeps existing integrations working unchanged.
amount_raw is a string, not a number. On EVM chains a wei value exceeds what a JSON number can hold exactly, so parse it with BigInt or a decimal library. Use amount for display.
On EVM chains, wallet addresses are matched case-insensitively and are returned lowercased.
The wallet field decides what you watch. Use a wallet address to follow one wallet, or the value ”*” to follow every tracked wallet of the chosen types. If you watch a single wallet that CabalSpy has not cached yet, its balance is fetched immediately.
Which wallet types to include when you use ”*”. See the table above. Defaults to every type the chain supports. Ignored when you watch a single wallet.
Each delivered balance_update counts against your plan. A wildcard subscription across all wallets can produce many updates, watch specific wallets when you can.