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

# Solana Wallet Tags

> Supported PnL V2 wallet identity tags for Solana wallets, including KOLs, bots, arbitrage, hackers, exchanges, developers, pools, and platform tags.

Wallet tags are labels that explain what a wallet may be or how it behaves. The PnL V2 wallet tags API labels Solana wallets with useful identity and behavior signals: KOLs, bots, arbitrage wallets, exploit wallets, exchanges, token developers, pool accounts, and trading-platform usage.

Use these tags to clean up trader leaderboards, identify wallet types, filter noisy activity, and show better labels in wallet analytics products.

<Info>
  Wallet tags are returned through the `identity` object. A wallet can have multiple tags at once, so always read `identity.tags` as an array instead of assuming one label.
</Info>

## Quick Start

Wallet identity appears across PnL V2 wallet, token, leaderboard, and batch responses when a label is known.

<img src="https://mintcdn.com/solanatracker/ZM5vWoSAJUJFeh6A/images/guides/wallet-tags.png?fit=max&auto=format&n=ZM5vWoSAJUJFeh6A&q=85&s=01ede7436f795c1f3e4887d29d4226e1" alt="Wallet profile showing identity tags next to a wallet name" width="2542" height="832" data-path="images/guides/wallet-tags.png" />

```json theme={null}
{
  "identity": {
    "name": "Mayhem Bot",
    "avatar": "https://kol-avatar.solanatracker.io/...",
    "bot": {
      "name": "Mayhem Bot",
      "avatar": "https://kol-avatar.solanatracker.io/..."
    },
    "type": "bot",
    "tags": ["bot"]
  }
}
```

If a wallet has no known tags, `identity` can be `null`.

`identity.type` is the primary tag for single-badge UIs. `identity.tags` is the complete tag list and should be used when you need every label.

In the example above, the wallet is labeled as a known bot. A UI could show one badge from `identity.type`, while a filtering system should read every value in `identity.tags`.

## Raw Wallet Signals

Some wallet endpoints also return a raw `tags` object with lower-level arbitrage and platform signals:

```json theme={null}
{
  "tags": {
    "isArbitrage": false,
    "platforms": ["axiom", "bloom"]
  }
}
```

Use `identity.tags` for UI labels and filtering logic. Use the raw `tags` object when you specifically need the underlying arbitrage/platform signals.

## Supported Wallet Tags

| Tag             | Meaning                                                                                              | Extra fields                                                                                                                |
| --------------- | ---------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| `kol`           | Tracked KOL wallet.                                                                                  | `name`, `twitter`, `avatar`                                                                                                 |
| `bot`           | Curated named bot wallet, such as Mayhem Bot or other known automated traders.                       | `bot.name`, `bot.avatar`                                                                                                    |
| `potential_bot` | Heuristic bot / arbitrage-like signal from wallet activity. Softer signal than `bot` or `arbitrage`. | none                                                                                                                        |
| `arbitrage`     | Confirmed MEV / arbitrage wallet from the curated arbitrage list.                                    | none                                                                                                                        |
| `hacker`        | Curated exploit, scam, or attacker wallet label.                                                     | `hacker.label`, often promoted to `name`                                                                                    |
| `spam_dusting`  | Curated spam-dusting wallet label.                                                                   | `spamDusting.label`, often promoted to `name`                                                                               |
| `exchange`      | Known centralized exchange hot wallet.                                                               | `exchange.name`, often promoted to `name`                                                                                   |
| `developer`     | Token creator, pool deployer, mint authority, or wallet linked to token creation.                    | `developer.token`, `developer.via`, `developer.pools`, `developer.creationTx`, `developer.createdAt`, or `developer.tokens` |
| `pool`          | AMM pool, vault, authority, LP mint, bonding curve, or related pool account.                         | `pool.program`, `pool.poolAddress`, `pool.tokenA`, `pool.tokenB`                                                            |
| `axiom`         | Wallet activity associated with Axiom.                                                               | `platforms` includes `axiom`                                                                                                |
| `bloom`         | Wallet activity associated with Bloom.                                                               | `platforms` includes `bloom`                                                                                                |
| `photon`        | Wallet activity associated with Photon.                                                              | `platforms` includes `photon`                                                                                               |
| `sns`           | Primary `.sol` domain for the wallet (Solana Name Service).                                          | `sns.domain`                                                                                                                |

<Note>
  `axiom-flash` is accepted as a `platform` query value, but identity responses normalize it to the `axiom` tag.
</Note>

## Tag Categories

### People and Bots

Use `kol`, `bot`, `potential_bot`, and `arbitrage` to separate human traders from automated or MEV-style behavior.

`potential_bot` is a softer heuristic signal. `bot` and `arbitrage` are stronger curated labels.

### Safety and Infrastructure

Use `hacker`, `spam_dusting`, and `exchange` for safety warnings and infrastructure labels.

These tags are curated and may also promote a readable label into `identity.name`, for example an exchange name or spam-dusting label.

### Token Context

Use `developer` and `pool` on token-scoped endpoints to find token creators, pool deployers, mint authorities, LP accounts, pool vaults, and bonding curve accounts.

Token-scoped endpoints resolve these roles for the token in the URL, which is useful for detecting insiders and non-trader wallets in token holder or first-buyer lists.

## Platform Filters

The endpoints below accept `platform=axiom`, `platform=bloom`, `platform=photon`, or comma-separated combinations.

<img src="https://mintcdn.com/solanatracker/ZM5vWoSAJUJFeh6A/images/guides/axiom-leaderboard.png?fit=max&auto=format&n=ZM5vWoSAJUJFeh6A&q=85&s=f6ef49ec2b3ad1894f68873a420f1a91" alt="Axiom leaderboard filtered to wallets trading through Axiom" width="2596" height="2138" data-path="images/guides/axiom-leaderboard.png" />

* `GET /v2/pnl/leaderboard/top`
* `GET /v2/pnl/tokens/:token/traders`
* `GET /v2/pnl/tokens/:token/first-buyers`

```bash theme={null}
curl "https://data.solanatracker.io/v2/pnl/tokens/{token}/traders?platform=axiom,bloom" \
  -H "x-api-key: YOUR_API_KEY"
```

`platform=axiom-flash` is also accepted and is treated as `axiom`.

## Where Tags Appear

Wallet identity is returned on PnL V2 wallet, token, leaderboard, and batch responses when the API can resolve a label.

* Wallet summary and wallet positions return top-level `identity`.
* Token trader endpoints return `identity` per trader.
* Token-scoped endpoints resolve `developer` and `pool` for the token in the URL.
* Position batch endpoints return `identity` per wallet or position.
* `POST /v2/pnl/wallets/batch` returns both `identity` and raw `tags` per wallet.

## Common Use Cases

| Goal                       | Tags to check                                       |
| -------------------------- | --------------------------------------------------- |
| Hide noisy wallets         | `bot`, `potential_bot`, `arbitrage`, `spam_dusting` |
| Show known people          | `kol`                                               |
| Flag token insiders        | `developer`, `pool`                                 |
| Surface safety warnings    | `hacker`, `spam_dusting`                            |
| Identify exchange flows    | `exchange`                                          |
| Filter by trading frontend | `axiom`, `bloom`, `photon`                          |

## FAQ

<AccordionGroup>
  <Accordion title="Can one wallet have multiple tags?">
    Yes. For example, a wallet can be both `kol` and `axiom`, or `developer` and `pool` depending on the token context. Always read `identity.tags` as an array.
  </Accordion>

  <Accordion title="What is the difference between bot, potential_bot, and arbitrage?">
    `bot` is a curated named bot label. `potential_bot` is a softer heuristic signal from wallet behavior. `arbitrage` is a confirmed MEV or arbitrage wallet label.
  </Accordion>

  <Accordion title="Why does axiom-flash become axiom?">
    `axiom-flash` is accepted for platform filtering, but identity responses normalize platform aliases so clients only need to handle the canonical `axiom` tag.
  </Accordion>

  <Accordion title="Should I use identity.tags or the raw tags object?">
    Use `identity.tags` for labels, badges, and filtering in most apps. Use the raw `tags` object when you specifically need `isArbitrage` or the original platform array.
  </Accordion>

  <Accordion title="How does SNS interact with other labels?">
    SNS adds `identity.sns.domain` and the `sns` tag when a primary `.sol` domain exists. Curated labels keep `identity.name`; SNS is attached in parallel (for example `tags: ["kol", "sns"]`). See [SNS Primary Domain](/guides/pnl-v2/sns-identity).
  </Accordion>
</AccordionGroup>
