Skip to main content
GET
/
2
/
wallet
/
analysis
Get wallet trading analysis
curl --request GET \
  --url https://demo-api.mobula.io/api/2/wallet/analysis
{
  "data": {
    "winRateDistribution": {
      ">500%": 123,
      "200%-500%": 123,
      "50%-200%": 123,
      "0%-50%": 123,
      "-50%-0%": 123,
      "<-50%": 123
    },
    "marketCapDistribution": {
      ">1000M": 123,
      ">100M": 123,
      "10M-100M": 123,
      "1M-10M": 123,
      "100k-1M": 123,
      "<100k": 123
    },
    "periodTimeframes": [
      {
        "date": "<string>",
        "realized": 123
      }
    ],
    "calendarBreakdown": [
      {
        "date": "<string>",
        "volumeBuy": 123,
        "volumeSell": 123,
        "totalVolume": 123,
        "buys": 123,
        "sells": 123,
        "realizedPnlUSD": 123
      }
    ],
    "stat": {
      "totalValue": 123,
      "periodTotalPnlUSD": 123,
      "periodRealizedPnlUSD": 123,
      "periodRealizedRate": 123,
      "periodActiveTokensCount": 123,
      "periodWinCount": 123,
      "fundingInfo": {
        "from": "<string>",
        "date": "<string>",
        "chainId": "<string>",
        "txHash": "<string>",
        "amount": "<string>",
        "formattedAmount": 123,
        "currency": {
          "name": "<string>",
          "symbol": "<string>",
          "logo": "<string>",
          "decimals": 123,
          "address": "<string>"
        },
        "fromWalletLogo": "<string>",
        "fromWalletTag": "<string>",
        "fromWalletMetadata": {
          "entityName": "<string>",
          "entityLogo": "<string>",
          "entityLabels": [
            "<string>"
          ],
          "entityType": "<string>",
          "entityDescription": "<string>",
          "entityTwitter": "<string>",
          "entityWebsite": "<string>",
          "entityGithub": "<string>",
          "entityDiscord": "<string>",
          "entityTelegram": "<string>",
          "extra": {}
        }
      },
      "periodVolumeBuy": 123,
      "periodVolumeSell": 123,
      "periodBuys": 123,
      "periodSells": 123,
      "nativeBalance": {
        "rawBalance": "<string>",
        "formattedBalance": 123,
        "assetId": 123,
        "chainId": "<string>",
        "address": "<string>",
        "decimals": 123,
        "name": "<string>",
        "symbol": "<string>",
        "logo": "<string>",
        "price": 123,
        "balanceUSD": 123
      },
      "periodBuyTokens": 123,
      "periodSellTokens": 123,
      "periodTradingTokens": 123,
      "holdingTokensCount": 123,
      "holdingDuration": 123,
      "tradingTimeFrames": 123,
      "winRealizedPnl": 123,
      "winRealizedPnlRate": 123,
      "winToken": {
        "address": "<string>",
        "chainId": "<string>",
        "name": "<string>",
        "symbol": "<string>",
        "logo": "<string>",
        "decimals": 123
      }
    },
    "labels": [
      "<string>"
    ],
    "walletMetadata": {
      "entityName": "<string>",
      "entityLogo": "<string>",
      "entityLabels": [
        "<string>"
      ],
      "entityType": "<string>",
      "entityDescription": "<string>",
      "entityTwitter": "<string>",
      "entityWebsite": "<string>",
      "entityGithub": "<string>",
      "entityDiscord": "<string>",
      "entityTelegram": "<string>",
      "extra": {}
    },
    "platform": {
      "id": "<string>",
      "name": "<string>",
      "logo": "<string>"
    },
    "networkBreakdown": [
      {
        "chainId": "<string>",
        "networkId": 123,
        "stat": {
          "totalValue": 123,
          "periodTotalPnlUSD": 123,
          "periodRealizedPnlUSD": 123,
          "periodRealizedRate": 123,
          "periodActiveTokensCount": 123,
          "periodWinCount": 123,
          "fundingInfo": {
            "from": "<string>",
            "date": "<string>",
            "chainId": "<string>",
            "txHash": "<string>",
            "amount": "<string>",
            "formattedAmount": 123,
            "currency": {
              "name": "<string>",
              "symbol": "<string>",
              "logo": "<string>",
              "decimals": 123,
              "address": "<string>"
            },
            "fromWalletLogo": "<string>",
            "fromWalletTag": "<string>",
            "fromWalletMetadata": {
              "entityName": "<string>",
              "entityLogo": "<string>",
              "entityLabels": [
                "<string>"
              ],
              "entityType": "<string>",
              "entityDescription": "<string>",
              "entityTwitter": "<string>",
              "entityWebsite": "<string>",
              "entityGithub": "<string>",
              "entityDiscord": "<string>",
              "entityTelegram": "<string>",
              "extra": {}
            }
          },
          "periodVolumeBuy": 123,
          "periodVolumeSell": 123,
          "periodBuys": 123,
          "periodSells": 123,
          "nativeBalance": {
            "rawBalance": "<string>",
            "formattedBalance": 123,
            "assetId": 123,
            "chainId": "<string>",
            "address": "<string>",
            "decimals": 123,
            "name": "<string>",
            "symbol": "<string>",
            "logo": "<string>",
            "price": 123,
            "balanceUSD": 123
          },
          "periodBuyTokens": 123,
          "periodSellTokens": 123,
          "periodTradingTokens": 123,
          "holdingTokensCount": 123,
          "holdingDuration": 123,
          "tradingTimeFrames": 123,
          "winRealizedPnl": 123,
          "winRealizedPnlRate": 123,
          "winToken": {
            "address": "<string>",
            "chainId": "<string>",
            "name": "<string>",
            "symbol": "<string>",
            "logo": "<string>",
            "decimals": 123
          }
        }
      }
    ]
  }
}

Optional per-network breakdown

By default, /api/2/wallet/analysis keeps the same response shape and returns aggregated wallet trading stats. Set includeNetworkBreakdown=true to also receive per-chain stats in data.networkBreakdown.
curl 'https://api.mobula.io/api/2/wallet/analysis?wallet=0xd8B207De2B3a38f45D5b2BAE46D7755CA6a5fC2B&period=30d&includeNetworkBreakdown=true'
The added field is optional and does not replace the top-level data.stat object:
networkBreakdown: Array<{
  chainId: string;
  networkId: number | null;
  stat: WalletAnalysisStat;
}>
networkBreakdown[].stat uses the same data model as the top-level data.stat field, so clients can reuse the same parser for aggregated and per-network wallet analysis.

Query Parameters

wallet
string
required

Wallet address to analyze

Minimum string length: 1
chainId
string
chainIds
string

Comma-separated list of chain IDs (e.g., "evm:1,evm:8453,solana:solana"). If omitted, all chains.

period
string

Analysis period: 1d, 7d, 30d, or 90d (default: 7d)

from
number | null

Start timestamp in milliseconds (alternative to period)

to
number | null

End timestamp in milliseconds (alternative to period)

includeNetworkBreakdown
boolean
default:false

When true, includes per-chain wallet analysis using the same stat shape as the top-level stat field.

Response

200 - application/json

Wallet analysis response

data
object
required