> ## Documentation Index
> Fetch the complete documentation index at: https://docs.codex.io/llms.txt
> Use this file to discover all available pages before exploring further.

# tokenWalletStats

> Returns the sniper, bundler and insider wallets that still hold a token, and how much of the supply they hold.

## GraphQL

```
type Query {
  # Requires a Growth or Enterprise plan.
  tokenWalletStats(
    input: TokenWalletStatsInput!
  ): TokenWalletStats!
}

type TokenWalletStats {
  tokenId: String!
  tokenAddress: String!
  networkId: Int!
  tokenTotalSupply: String!
  covered: Boolean!
  sniperCount: Int!
  sniperHeldPercentage: Float!
  sniperAddresses: [String!]!
  sniperHeldAmount: String!
  bundlerCount: Int!
  bundlerHeldPercentage: Float!
  bundlerAddresses: [String!]!
  bundlerHeldAmount: String!
  insiderCount: Int!
  insiderHeldPercentage: Float!
  insiderAddresses: [String!]!
  insiderHeldAmount: String!
  suspiciousCount: Int!
  suspiciousHeldPercentage: Float!
  suspiciousAddresses: [String!]!
  suspiciousHeldAmount: String!
  devHeldPercentage: Float!
  devAddress: String!
  devHeldAmount: String!
}

input TokenWalletStatsInput {
  tokenAddress: String!
  networkId: Int!
}
```

### Example

[Test this query in the Explorer →](https://docs.codex.io/explore.md)

```graphql theme={null}
{
  tokenWalletStats(
    input: {
      tokenAddress: "TOKEN_ADDRESS"
      networkId: 1399811149
    }
  ) {
    tokenId
    tokenTotalSupply
    sniperCount
    sniperHeldPercentage
    sniperAddresses
    bundlerCount
    bundlerHeldPercentage
    bundlerAddresses
    insiderCount
    insiderHeldPercentage
    insiderAddresses
    suspiciousCount
    suspiciousHeldPercentage
    suspiciousAddresses
    devAddress
    devHeldPercentage
    devHeldAmount
  }
}
```

### Usage Guidelines

* Pass the token's contract address and `networkId`. The response is per token: a wallet's label here says nothing about its behavior on other tokens
* Every count, percentage, amount, and address list covers wallets that still hold the token. A labelled wallet that sold its whole balance drops out, so the numbers fall over time as those wallets sell
* Held percentages are measured against `tokenTotalSupply`. Amounts are unshifted raw units
* `suspicious*` is the deduplicated union of the sniper, bundler, and insider cohorts, not the sum of the three
* Address lists are capped at 200 per cohort. The counts and percentages still cover every labelled holder
* `devAddress` is empty when the creator is unknown. The creator's wallet can also appear in `sniperAddresses` if it bought within the sniper window
* For the same counts and percentages without addresses, use the matching fields on [`filterTokens`](https://docs.codex.io/api-reference/queries/filtertokens) (launchpad tokens only), [`pairMetadata`](https://docs.codex.io/api-reference/queries/pairmetadata) (`walletActivity`), or the [launchpad subscriptions](https://docs.codex.io/api-reference/subscriptions/onlaunchpadtokeneventbatch.md)
* How each label is defined is explained in [Snipers, bundlers, and insiders](https://docs.codex.io/recipes/discover-tokens.md#snipers-bundlers-and-insiders)

### Troubleshooting Tips

> [accordion] Why does every field come back zero or empty?
>
> The token is outside coverage. Stats are computed for launchpad tokens on every network, and for EVM tokens without a launchpad that have a known creator and were created since October 8, 2025. Tokens that launched before tracking began also return zeros.

> [accordion] Why is sniperCount lower than what I saw at launch?
>
> Only wallets that still hold the token are counted. Snipers and bundlers usually sell early, so a token that was heavily sniped can show a small count later.

> [accordion] How do these labels relate to wallet labels on filterWallets?
>
> They are separate systems. These labels are applied per wallet and token from launch activity. The labels on [`filterWallets`](https://docs.codex.io/api-reference/queries/filterwallets) and [`walletLabelTypes`](https://docs.codex.io/api-reference/queries/walletlabeltypes) classify a wallet's behavior across every token it trades.

### Related Recipes

* [Discover tokens](https://docs.codex.io/recipes/discover-tokens.md#snipers-bundlers-and-insiders): How snipers, bundlers, insiders, and the suspicious roll-up are defined
* [Launchpad lifecycle](https://docs.codex.io/recipes/launchpad-lifecycle.md): Track tokens from creation through graduation


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.