CRIUS Docs
API status Get API key
Holders & wallets

Find wallets connected by funding

Find who funded a Robinhood Chain wallet, which wallets it funded, who it swaps tokens with and who shares its funder, to spot alt wallets, dev links, sybils.

Updated 2 min read
Short answer

Call GET /v1/robinhood/wallet/{address}/connections (Starter plan, 10 credits). It returns funded_by and funded (ETH funding in and out, with eth, txs, first_block, label, is_dev), transfers (token transfers with other wallets), shared_funder_with (wallets with the same funder), linked_devs and a cluster.

Wallets are connected when money or tokens moved between them: one funded the other with ETH, they sent each other tokens, or the same wallet funded both. On Robinhood Chain, as on any chain, one person can run many wallets, and funding is the trail they leave. Crius builds that graph from every ETH transfer (including internal transfers inside contract calls) and every token transfer, and leaves out exchanges, bridges, pools and other infrastructure that would link strangers.

Get a wallet’s connections

CHARGE's creator: funded by a bridge, linked to no other dev

Who funded the wallet that launched Charge AI (0x3ac82d45ff9e4963cefbc3f74dbe293f34c927ca), and is it linked to other wallets or devs?

GET/v1/robinhood/wallet/0x3ac82d45ff9e4963cefbc3f74dbe293f34c927ca/connections?limit=3
curl "https://api.crius.sh/v1/robinhood/wallet/0x3ac82d45ff9e4963cefbc3f74dbe293f34c927ca/connections?limit=3" \
-H "x-api-key: $CRIUS_API_KEY"
Real response 200 Captured Oct 28, 2026 · 82 lines (arrays trimmed)
{
"data": {
"cluster": {
"funder": "0xd782268f600403843484b70710daee6846fc0db8",
"id": "f_359981",
"wallets": 1
},
"funded": [
{
"address": "0x7ed598bcef8bd9edd8c97a195c6d13f40801ec7e",
"eth": 0.0005,
"first_block": 88385886,
"is_dev": false,
"label": "pons_v2_launch_factory",
"txs": 1
},
{
"address": "0xbcb09304eb37d79aada84e23710158e48fb15a3d",
"eth": 0.11,
"first_block": 89257687,
"is_dev": false,
"label": null,
"txs": 2
},
{
"address": "0x0cfbf98d825035fc049d9914b644d7887de27d6c",
"eth": 0.01,
"first_block": 90076749,
"is_dev": false,
"label": null,
"txs": 1
}
],
"funded_by": [
{
"address": "0xd782268f600403843484b70710daee6846fc0db8",
"eth": 0.008148386337868892,
"first_block": 87601233,
"is_dev": false,
"label": "bridge:Relay solver",
"txs": 1
}
],
"linked_devs": [],
"note": "ETH funding = top-level ETH transfers + internal (contract) transfers from call traces; swap / launchpad payouts are not funding",
"scope": "all_history",
"shared_funder_with": [],
"transfers": [
{
"address": "0xfbb464318e8c283a2bf186b6bd6420143338e1c8",
"count": 2,
"direction": "in",
"is_dev": false,
"tokens": 2
},
{
"address": "0xbfd9bf98dc34cf4696ee73c781c3039a14ce5915",
"count": 2,
"direction": "out",
"is_dev": false,
"tokens": 2
},
{
"address": "0x0cfbe3b71266a6ec456c0faaf9805730c6a67d6c",
"count": 1,
"direction": "out",
"is_dev": false,
"tokens": 1
}
],
"wallet": "0x3ac82d45ff9e4963cefbc3f74dbe293f34c927ca"
},
"meta": {
"block": 100406869,
"block_age_ms": 932,
"block_ts": 1793225085000,
"chain": "robinhood",
"finalized_block": 100397649,
"lag_ms": 88,
"safe_block": 100401329
}
}

What this tells you

  • funded_by has one entry: 0xd782268f600403843484b70710daee6846fc0db8, labeled bridge:Relay solver, which sent 0.008148386337868892 ETH in block 87601233. The wallet’s first ETH came over a bridge.
  • cluster.funder is that solver and cluster.wallets: 1, with shared_funder_with: []: a bridge funds thousands of people, so it links this wallet to no one.
  • funded starts with 0x7ed598bcef8bd9edd8c97a195c6d13f40801ec7e, labeled pons_v2_launch_factory: 0.0005 ETH in block 88385886, the block CHARGE was created in. That’s the launch itself.
  • The wallet also funded 0xbcb09304eb37d79aada84e23710158e48fb15a3d (0.11 ETH over 2 transactions) and 0x0cfbf98d825035fc049d9914b644d7887de27d6c (0.01 ETH). All have is_dev: false, and linked_devs is empty: none of its connections launched a token.
  • Look at transfers: 0x0cfbe3b71266a6ec456c0faaf9805730c6a67d6c (one token transfer, direction: "out") has the same first four and last four characters as 0x0cfbf98d825035fc049d9914b644d7887de27d6c, which the wallet really funded. That’s the pattern of address poisoning: a lookalike address planted in a wallet’s history so the owner copies it by mistake. Compare full addresses.
  • scope: "all_history": for a wallet, the whole history is searched.

What the fields mean

FieldMeaning
funded_by[]Wallets that sent this one ETH, earliest first: address, total eth, txs, first_block, label, is_dev.
funded[]Wallets this one sent ETH to, same fields.
transfers[]Wallets it exchanged tokens with: direction (in, out or both), count (transfers), tokens (distinct tokens), is_dev.
shared_funder_with[]Other wallets funded by this wallet's funders. Funders that paid more than 500 wallets (exchanges, bridges, faucets) are skipped.
linked_devs[]Token creators among its funders, funded wallets and transfer counterparties.
clusterThe group formed around its first funder: id, funder, wallets (this wallet plus the others that funder paid).
is_devtrue when that address created a launchpad token.
labelKnown name of the address: an exchange, a bridge, a launchpad contract.
scopeall_history for wallets; busy contracts are searched over the last 30 days.
noteWhat counts as funding: top-level and internal ETH transfers; swap and launchpad payouts don't count.

limit sets how many entries each list returns (default 25, up to 200).

Reading the graph

  • Alt wallets. A wallet funded by another non-exchange wallet shortly before it bought a token is the strongest link. Check funded_by first.
  • Sybils and farms. Many buyers of a token in each other’s shared_funder_with usually means one operator. For a whole token at once, the bubble map draws these links between its top holders.
  • Dev links. Any address in linked_devs launched a token. A buyer funded by the dev is tagged dev_linked on token endpoints (wallet tags); see launch risk.
  • Lookalikes. Transfers with an address that mimics one the wallet really uses are poisoning attempts, not real links.

Use it in your app

  1. Get a Starter key. /connections needs the Starter plan and costs 10 credits per call.

  2. Start from a wallet that matters: a token’s dev, a top holder, a copy-trading candidate. Call /connections and flag any linked_devs or non-exchange funded_by.

  3. Follow one hop at a time. Call /connections on the funder or on wallets in shared_funder_with to grow the cluster. Stop at labeled addresses (exchanges, bridges, launchpads): they connect everyone.

  4. Cache by wallet. Funding history only grows; refresh a wallet’s connections when it becomes relevant again, not on every page view.

// Flag a wallet that is linked to a token creator or funded by a non-labeled wallet.
const wallet = "0x3ac82d45ff9e4963cefbc3f74dbe293f34c927ca";
const res = await fetch(`https://api.crius.sh/v1/robinhood/wallet/${wallet}/connections`, {
headers: { "x-api-key": process.env.CRIUS_API_KEY },
});
const { data } = await res.json();
const privateFunders = data.funded_by.filter((f) => f.label === null);
if (data.linked_devs.length) console.warn("linked to token creators:", data.linked_devs);
if (privateFunders.length) console.warn("funded by wallets:", privateFunders.map((f) => `${f.address} (${f.eth} ETH)`));
console.log(`${data.shared_funder_with.length} wallets share a funder; cluster ${data.cluster?.id} has ${data.cluster?.wallets}`);

Frequently asked questions

How do I find wallets connected to a wallet on Robinhood Chain?

Call /v1/robinhood/wallet/{address}/connections. funded_by lists who sent it ETH, funded who it sent ETH to, transfers the wallets it exchanged tokens with, and shared_funder_with the other wallets its funders paid. Any of those that created a launchpad token also appears in linked_devs.

Why doesn't an exchange or a bridge link my wallet to others?

An exchange hot wallet or a bridge solver funds thousands of unrelated people. Funders that paid more than 500 wallets are skipped when looking for wallets that share a funder, so a withdrawal from an exchange or a Relay bridge payout never makes two strangers look related.

Does buying a token from a pool count as a connection?

No. Token transfers with pools, routers, lockers, launchpads and other known contracts are trading, not links between wallets, and are left out of transfers. ETH received from swaps or launchpad payouts isn't counted as funding either (note in the response says so).

How do I find a developer's other wallets?

Call /connections on the dev wallet and read linked_devs, funded and shared_funder_with: a dev who funds a fresh wallet for each launch shows up there. Then check each address with /dev/{address} for its own launches.

Which plan does wallet connections need?

The Starter plan or higher, 10 credits per call. See Plans & limits.

Get your free Crius API key

Every example on this page works with a free key: higher rate limits than the anonymous plan, holders, wallets and the WebSocket stream. No card needed.

  • Robinhood Chain (4663) only, from our own archive nodes
  • REST + WebSocket
  • Pay on-chain or by card