Skip to main content
Copying a profitable wallet sounds simple until you try to automate it. You need to know which tokens skilled wallets are actually buying, which specific wallets are driving that flow, whether those wallets have a real track record or just got lucky once, and when they enter or exit next. Guessing at any one of those turns a promising idea into a money loser.

TL;DR

  • Find the tokens smart money is buying
  • Identify the wallets driving that flow
  • Score each candidate wallet across its full history
  • Monitor trusted wallets for new moves
Smart money copy trading pipeline showing four endpoints from token discovery to live wallet monitoring All requests share the base URL https://public-api.birdeye.so, authenticate with the X-API-KEY header, and select the network with x-chain: solana.
The signal this pipeline produces is: a wallet worth following just acted. Sizing, routing, and execution stay your own decision downstream of that signal.

The four stage pipeline

1

Find the tokens smart money is buying

Scanning every token on Solana is wasted effort when one endpoint already tells you which tokens skilled wallets are accumulating right now.Endpoint: GET /smart-money/v1/token/list
Sort by net_flow for tokens being bought hard right now, or smart_traders_no for broad agreement among many skilled wallets rather than a large position from a few. There is no volume sort here.
Treat this list as a watchlist, not a recommendation. Read volume_buy_usd against volume_sell_usd to confirm the inflow is buying pressure and not churn before carrying a token forward.
2

Identify the wallets driving the flow

A token level signal hides the wallets underneath it. This call drops from the token down to the individual traders moving it, sorted by realized profit so the wallets that actually booked gains sit at the top.Endpoint: GET /defi/v2/tokens/top_traders
address, time_frame, sort_by, and sort_type are all required. Omitting any one returns a 400 error. This endpoint uses address, not token_address.
Each trader carries a tags array of dev, bundler, sniper, and insider. Treat a tag as a caution flag that lowers a wallet’s priority, not proof of bad behavior. Aggregate volume is volumeUsd, while the buy and sell breakdowns are uppercase volumeBuyUSD and volumeSellUSD.
3

Score each candidate wallet

A wallet can look brilliant on a single token and be reckless everywhere else. Before letting a wallet into the signal set, pull its whole record in one call.Endpoint: POST /wallet/v2/pnl/details
For the trust gate this stage exists to run, set duration to all and position_scope to cumulative. The default, duration_only, scopes the win rate and profit to just the chosen window rather than the wallet’s full history.
Read the win rate from data.summary.counts.win_rate. It arrives as a ratio between 0 and 1, so multiply by 100 to display it. Do not recompute it from total_win and total_loss, since the denominator counts every unique token the wallet touched, not just wins plus losses. realized_profit_percent already arrives as a percentage, so do not scale it again. pricing.current_price can be null for a token with no live price, so guard for that before any math.
4

Monitor trusted wallets for new moves

A trusted wallet is only useful while it is acting. This stage watches each wallet so the layer fires the moment one enters or exits a position.Endpoint: GET /trader/txs/seek_by_time
In the response, the trader wallet is owner, while the item level address is the pool, so do not confuse the two. Each trade splits into a base and a quote leg, each carrying a type_swap of to or from. The tracked token on to means the wallet bought, an entry; on from means the wallet sold, an exit.
A polling interval of two to five seconds per wallet catches most new fills without straining your credit budget. For push delivery instead of polling, the SUBSCRIBE_WALLET_TXS stream is available on higher plans.

Watch your credit budget

A monitoring layer that polls several wallets on a loop can consume credits faster than a one off script. Endpoint: GET /utils/v1/credits
Use the result to tune your polling interval and the number of wallets you watch, so coverage and cost stay in balance.

Before you ship

  • The token list is sorted by net_flow and treated as a watchlist, not a buy list.
  • All required parameters are set on the top traders call so it never returns a 400 error.
  • Behavior tags are applied as a soft risk filter, not a hard ban.
  • Every wallet is scored with duration=all and position_scope=cumulative, with win rate read as a ratio.
  • The trades endpoint is polled with after_time, deduped on the composite key.

FAQ

Mirroring the trades of wallets with a proven record of profitable activity. This pipeline handles finding those wallets, verifying them, and detecting their moves, while your own system decides how to act on the signal.
Score the wallet across its entire portfolio with the profit and loss endpoint rather than judging it on one token, using duration=all and position_scope=cumulative so the result is not quietly scoped to a recent window. A healthy win rate and real realized profit over the full history is far more reliable than a single large gain.
Yes. The wallet transactions stream delivers updates by push on higher plans, which removes polling entirely. On a Premium plan, a short polling loop on the trades endpoint achieves the same outcome over standard REST.
That closes the loop. A market wide question, who is smart money buying, becomes a precise and trustworthy event: a proven wallet just entered this token.