Intersect the holder lists of 2-5 Solana tokens to find wallets holding all of them, ranked by combined portfolio value — with the Noesis /cross analysis.

Bot /crossREST POST /api/v1/tokens/cross-holdersMCP cross_holders

How to find wallets holding multiple Solana tokens

TL;DR. Noesis's /cross analysis intersects the holder lists of 2-5 Solana tokens and returns wallets holding all of them, ranked by combined portfolio value. One call to POST /api/v1/tokens/cross-holders exposes coordinated teams, serial insiders, and ecosystem whales that common single-token lookups miss.

Why cross-token holder analysis matters

A single-token holder list tells you who is in this token. A cross-token intersection tells you who is in this sector. The latter is where coordination patterns become visible:

/cross is the lookup that collapses these overlaps into a single answer: "which wallets are in every one of these tokens and how big are they?"

What does /cross return?

Given 2-5 token mints, /cross returns:

  1. Wallets that hold all of them — the strict intersection
  2. Per-wallet position per token — amount and USD value of each holding
  3. Combined portfolio value — sum across all provided tokens (and optionally the wallet's broader portfolio)
  4. Solscan label — identity if known

Ranked by combined USD value descending so the biggest ecosystem whales surface first.

How does Noesis compute the intersection?

/cross fetches the holder list for each provided token in parallel, converts them to sets, computes the intersection, and enriches the resulting wallets:

How to run the analysis

Telegram bot

/cross EPjFWdd5... mint_b... mint_c...

Typical output:

🔗 Cross Holders · 3 tokens
Found 12 wallets holding all 3

  1. 9aB7...Kzm2 · holds: 140k A / 120k B / 120k C
  2. 4rEp...Nn01 · "KOL: @cryptoalpha" · holds: 80k A / 75k B / 60k C
  3. ...

REST API

curl -H "X-API-Key: $NOESIS_API_KEY" \
  -X POST -H "Content-Type: application/json" \
  -d '{"tokens": ["mint_a", "mint_b", "mint_c"]}' \
  "https://noesisapi.dev/api/v1/tokens/cross-holders"

MCP

cross_holders(tokens=["mint_a", "mint_b", "mint_c"])

or prompt:

Find wallets holding all three tokens: mint_a, mint_b, mint_c.

SDKs

TypeScript

import { Noesis } from "noesis-api";
const noesis = new Noesis({ apiKey: process.env.NOESIS_API_KEY! });
const cx = await noesis.wallet.crossHolders(["mint_a", "mint_b", "mint_c"]);

Python

from noesis import Noesis
noesis = Noesis(api_key=os.environ["NOESIS_API_KEY"])
cx = noesis.wallet.cross_holders(["mint_a", "mint_b", "mint_c"])

Rust

let client = noesis_api::Noesis::new(api_key);
let cx = client.cross_holders(&["mint_a".into(), "mint_b".into(), "mint_c".into()]).await?;

Understanding the output

Combined USD value is computed client-side from balances × tokens[].price.

How to combine /cross with other commands

Chain 1 — Detect serial teams

/dev <mint_a>                         identify dev's prior launches
  → /cross <mint_a> <prior_mint_a>    find wallets holding both
  → recurring wallets = team accumulators
  → /walletchecker each               confirm funding + activity

Chain 2 — Sector whale tracking

/cross <trending_a> <trending_b> <trending_c>
  → top wallets = sector whales
  → watch their activity for the next rotation

Chain 3 — Ecosystem mapping

/cross <launcher_token_a> <launcher_token_b>
  → find the launcher-loyal wallets
  → follow them into new launches from the same ecosystem

Chain 4 — Team cluster validation

/team <mint>                          get top team wallets
  → /cross <mint> <sister_mint>       check if team wallets also hold sister
  → confirmation = same actor, different launch

When /cross can mislead

Caveats

FAQ

How many tokens should I intersect? Two is the minimum and usually the most useful (pairs rarely share many wallets outside real coordination). Three or four tightens the intersection sharply — by 5 tokens you're typically left with a handful of sector whales only.

What does "combined portfolio value" include? By default, the sum of the wallet's USD value across the tokens you provided. Some SDK overloads can extend this to the wallet's total portfolio across all holdings, but the default is scoped to the inputs.

How is /cross different from /crossbt? /cross intersects current holders — who currently holds all these tokens. /crossbt intersects top traders — who has profited across all these tokens (regardless of whether they still hold). Use /cross for coordination detection, /crossbt for smart money.

Can /cross detect wash-traded holdings? Not directly. A wash-trading farm that holds 100+ tokens will surface as a "power holder" but that's noise, not signal. Filter by minimum combined USD and cross-check with /walletchecker to identify bot patterns.

What's the max intersection size I should expect? For 3 long-tail meme coins, usually 5-50 wallets. For 3 very popular tokens, hundreds to thousands. Filter client-side by combined USD value (balances × token prices) to keep results actionable.

Does /cross work across chains? No — Solana only. Same-token-same-holder cross-chain analysis is not supported.

Related guides