Skip to main content
GET
/
2
/
wallet
/
activity
Get wallet activity
curl --request GET \
  --url https://demo-api.mobula.io/api/2/wallet/activity
{
  "data": [
    {
      "chainId": "<string>",
      "txDateMs": 123,
      "txDateIso": "<string>",
      "txHash": "<string>",
      "txRawFeesNative": "<string>",
      "txFeesNativeUsd": 123,
      "txBlockNumber": 123,
      "txIndex": 123,
      "actions": [
        {
          "swapRawAmountOut": 123,
          "swapRawAmountIn": 123,
          "swapAmountOut": 123,
          "swapAmountIn": 123,
          "swapPriceUsdTokenOut": 123,
          "swapPriceUsdTokenIn": 123,
          "swapAmountUsd": 123,
          "swapTransactionSenderAddress": "<string>",
          "swapBaseAddress": "<string>",
          "swapQuoteAddress": "<string>",
          "swapAmountQuote": 123,
          "swapAmountBase": 123,
          "swapAssetIn": {
            "id": 123,
            "name": "<string>",
            "symbol": "<string>",
            "decimals": 123,
            "totalSupply": 123,
            "circulatingSupply": 123,
            "price": 123,
            "liquidity": 123,
            "priceChange24hPercent": 123,
            "marketCapUsd": 123,
            "logo": "<string>",
            "contract": "<string>"
          },
          "swapAssetOut": {
            "id": 123,
            "name": "<string>",
            "symbol": "<string>",
            "decimals": 123,
            "totalSupply": 123,
            "circulatingSupply": 123,
            "price": 123,
            "liquidity": 123,
            "priceChange24hPercent": 123,
            "marketCapUsd": 123,
            "logo": "<string>",
            "contract": "<string>"
          },
          "swapPlatform": {
            "id": "<string>",
            "name": "<string>",
            "logo": "<string>"
          },
          "swapTotalFeesUsd": 123,
          "swapGasFeesUsd": 123,
          "swapPlatformFeesUsd": 123,
          "swapMevFeesUsd": 123,
          "transferRawAmount": "<string>",
          "transferAmount": 123,
          "transferAmountUsd": 123,
          "transferFromAddress": "<string>",
          "transferToAddress": "<string>",
          "transferAsset": {
            "id": 123,
            "name": "<string>",
            "symbol": "<string>",
            "decimals": 123,
            "totalSupply": 123,
            "circulatingSupply": 123,
            "price": 123,
            "liquidity": 123,
            "priceChange24hPercent": 123,
            "marketCapUsd": 123,
            "logo": "<string>",
            "contract": "<string>"
          }
        }
      ],
      "txAction": "<string>"
    }
  ],
  "pagination": {
    "page": 123,
    "offset": 123,
    "limit": 123,
    "pageEntries": 123
  },
  "tokens": [
    {
      "address": "<string>",
      "chainId": "<string>",
      "symbol": "<string>",
      "name": "<string>",
      "priceTokenString": "<string>",
      "approximateReserveTokenRaw": "<string>",
      "logo": "<string>",
      "bondedAt": "<string>",
      "createdAt": "<string>",
      "latestTradeDate": "<string>",
      "description": "<string>",
      "socials": {
        "twitter": "<string>",
        "website": "<string>",
        "telegram": "<string>",
        "others": {},
        "uri": "<string>"
      },
      "security": {
        "buyTax": "<string>",
        "sellTax": "<string>",
        "transferPausable": true,
        "top10Holders": "<string>",
        "isBlacklisted": true,
        "noMintAuthority": true,
        "balanceMutable": true,
        "lowLiquidity": "<string>",
        "burnRate": "<string>",
        "liquidityBurnPercentage": 123,
        "isHoneypot": true,
        "isNotOpenSource": true,
        "renounced": true,
        "locked": "<string>",
        "isWhitelisted": true,
        "isMintable": true,
        "modifyableTax": true,
        "selfDestruct": true
      },
      "liveStatus": "<string>",
      "liveThumbnail": "<string>",
      "livestreamTitle": "<string>",
      "liveReplyCount": 123,
      "decimals": 0,
      "id": null,
      "priceUSD": 0,
      "priceToken": 0,
      "approximateReserveUSD": 0,
      "approximateReserveToken": 0,
      "totalSupply": 0,
      "circulatingSupply": 0,
      "marketCapUSD": 0,
      "marketCapDilutedUSD": 0,
      "originLogoUrl": "<string>",
      "rank": null,
      "cexs": [],
      "exchange": {
        "name": "<string>",
        "logo": "<string>"
      },
      "factory": "<string>",
      "source": "<string>",
      "sourceFactory": "<string>",
      "sourceMetadata": {
        "name": "<string>",
        "logo": "<string>"
      },
      "sourceFactoryMetadata": {
        "name": "<string>",
        "logo": "<string>"
      },
      "liquidityUSD": 123,
      "liquidityMaxUSD": 123,
      "bonded": true,
      "bondingPercentage": 123,
      "bondingCurveAddress": "<string>",
      "preBondingFactory": "<string>",
      "poolAddress": "<string>",
      "blockchain": "<string>",
      "type": "<string>",
      "deployer": "<string>",
      "athUSD": 123,
      "atlUSD": 123,
      "athDate": "<string>",
      "atlDate": "<string>",
      "priceChange1minPercentage": 0,
      "priceChange5minPercentage": 0,
      "priceChange1hPercentage": 0,
      "priceChange4hPercentage": 0,
      "priceChange6hPercentage": 0,
      "priceChange12hPercentage": 0,
      "priceChange24hPercentage": 0,
      "poolPriceChange1minPercentage": 0,
      "poolPriceChange5minPercentage": 0,
      "poolPriceChange1hPercentage": 0,
      "poolPriceChange4hPercentage": 0,
      "poolPriceChange6hPercentage": 0,
      "poolPriceChange12hPercentage": 0,
      "poolPriceChange24hPercentage": 0,
      "liquidityBurnPercentage": 123,
      "volume1minUSD": 0,
      "volume5minUSD": 0,
      "volume15minUSD": 0,
      "volume1hUSD": 0,
      "volume4hUSD": 0,
      "volume6hUSD": 0,
      "volume12hUSD": 0,
      "volume24hUSD": 0,
      "volumeBuy1minUSD": 0,
      "volumeBuy5minUSD": 0,
      "volumeBuy15minUSD": 0,
      "volumeBuy1hUSD": 0,
      "volumeBuy4hUSD": 0,
      "volumeBuy6hUSD": 0,
      "volumeBuy12hUSD": 0,
      "volumeBuy24hUSD": 0,
      "volumeSell1minUSD": 0,
      "volumeSell5minUSD": 0,
      "volumeSell15minUSD": 0,
      "volumeSell1hUSD": 0,
      "volumeSell4hUSD": 0,
      "volumeSell6hUSD": 0,
      "volumeSell12hUSD": 0,
      "volumeSell24hUSD": 0,
      "trades1min": 0,
      "trades5min": 0,
      "trades15min": 0,
      "trades1h": 0,
      "trades4h": 0,
      "trades6h": 0,
      "trades12h": 0,
      "trades24h": 0,
      "buys1min": 0,
      "buys5min": 0,
      "buys15min": 0,
      "buys1h": 0,
      "buys4h": 0,
      "buys6h": 0,
      "buys12h": 0,
      "buys24h": 0,
      "sells1min": 0,
      "sells5min": 0,
      "sells15min": 0,
      "sells1h": 0,
      "sells4h": 0,
      "sells6h": 0,
      "sells12h": 0,
      "sells24h": 0,
      "buyers1min": 0,
      "buyers5min": 0,
      "buyers15min": 0,
      "buyers1h": 0,
      "buyers4h": 0,
      "buyers6h": 0,
      "buyers12h": 0,
      "buyers24h": 0,
      "sellers1min": 0,
      "sellers5min": 0,
      "sellers15min": 0,
      "sellers1h": 0,
      "sellers4h": 0,
      "sellers6h": 0,
      "sellers12h": 0,
      "sellers24h": 0,
      "traders1min": 0,
      "traders5min": 0,
      "traders15min": 0,
      "traders1h": 0,
      "traders4h": 0,
      "traders6h": 0,
      "traders12h": 0,
      "traders24h": 0,
      "feesPaid1minUSD": 0,
      "feesPaid5minUSD": 0,
      "feesPaid15minUSD": 0,
      "feesPaid1hUSD": 0,
      "feesPaid4hUSD": 0,
      "feesPaid6hUSD": 0,
      "feesPaid12hUSD": 0,
      "feesPaid24hUSD": 0,
      "totalFeesPaidUSD": 0,
      "totalFeesPaidNativeRaw": "0",
      "organicTrades1min": 0,
      "organicTrades5min": 0,
      "organicTrades15min": 0,
      "organicTrades1h": 0,
      "organicTrades4h": 0,
      "organicTrades6h": 0,
      "organicTrades12h": 0,
      "organicTrades24h": 0,
      "organicTraders1min": 0,
      "organicTraders5min": 0,
      "organicTraders15min": 0,
      "organicTraders1h": 0,
      "organicTraders4h": 0,
      "organicTraders6h": 0,
      "organicTraders12h": 0,
      "organicTraders24h": 0,
      "organicVolume1minUSD": 0,
      "organicVolume5minUSD": 0,
      "organicVolume15minUSD": 0,
      "organicVolume1hUSD": 0,
      "organicVolume4hUSD": 0,
      "organicVolume6hUSD": 0,
      "organicVolume12hUSD": 0,
      "organicVolume24hUSD": 0,
      "organicVolumeBuy1minUSD": 0,
      "organicVolumeBuy5minUSD": 0,
      "organicVolumeBuy15minUSD": 0,
      "organicVolumeBuy1hUSD": 0,
      "organicVolumeBuy4hUSD": 0,
      "organicVolumeBuy6hUSD": 0,
      "organicVolumeBuy12hUSD": 0,
      "organicVolumeBuy24hUSD": 0,
      "organicVolumeSell1minUSD": 0,
      "organicVolumeSell5minUSD": 0,
      "organicVolumeSell15minUSD": 0,
      "organicVolumeSell1hUSD": 0,
      "organicVolumeSell4hUSD": 0,
      "organicVolumeSell6hUSD": 0,
      "organicVolumeSell12hUSD": 0,
      "organicVolumeSell24hUSD": 0,
      "organicBuys1min": 0,
      "organicBuys5min": 0,
      "organicBuys15min": 0,
      "organicBuys1h": 0,
      "organicBuys4h": 0,
      "organicBuys6h": 0,
      "organicBuys12h": 0,
      "organicBuys24h": 0,
      "organicSells1min": 0,
      "organicSells5min": 0,
      "organicSells15min": 0,
      "organicSells1h": 0,
      "organicSells4h": 0,
      "organicSells6h": 0,
      "organicSells12h": 0,
      "organicSells24h": 0,
      "organicBuyers1min": 0,
      "organicBuyers5min": 0,
      "organicBuyers15min": 0,
      "organicBuyers1h": 0,
      "organicBuyers4h": 0,
      "organicBuyers6h": 0,
      "organicBuyers12h": 0,
      "organicBuyers24h": 0,
      "organicSellers1min": 0,
      "organicSellers5min": 0,
      "organicSellers15min": 0,
      "organicSellers1h": 0,
      "organicSellers4h": 0,
      "organicSellers6h": 0,
      "organicSellers12h": 0,
      "organicSellers24h": 0,
      "holdersCount": 123,
      "twitterReusesCount": 0,
      "twitterRenameCount": 0,
      "twitterRenameHistory": [],
      "deployerMigrationsCount": 0,
      "deployerTokensCount": 0,
      "securityScore": null,
      "securityScoreUpdatedAt": null,
      "dexscreenerListed": false,
      "dexscreenerHeader": null,
      "dexscreenerAdPaid": false,
      "dexscreenerAdPaidDate": null,
      "dexscreenerPendingAt": null,
      "dexscreenerSocialPaid": false,
      "dexscreenerSocialPaidDate": null,
      "dexscreenerBoosted": false,
      "dexscreenerBoostedDate": null,
      "dexscreenerBoostedAmount": 0,
      "trendingScore1min": 0,
      "trendingScore5min": 0,
      "trendingScore15min": 0,
      "trendingScore1h": 0,
      "trendingScore4h": 0,
      "trendingScore6h": 0,
      "trendingScore12h": 0,
      "trendingScore24h": 0,
      "isMayhemMode": null,
      "isCashbackCoin": null,
      "isAgentMode": null,
      "isOGCoin": null,
      "top10HoldingsPercentage": 123,
      "top50HoldingsPercentage": 123,
      "top100HoldingsPercentage": 123,
      "top200HoldingsPercentage": 123,
      "devHoldingsPercentage": 123,
      "insidersHoldingsPercentage": 123,
      "bundlersHoldingsPercentage": 123,
      "snipersHoldingsPercentage": 123,
      "proTradersHoldingsPercentage": 123,
      "freshTradersHoldingsPercentage": 123,
      "smartTradersHoldingsPercentage": 123,
      "insidersCount": 123,
      "bundlersCount": 123,
      "snipersCount": 123,
      "freshTradersCount": 123,
      "proTradersCount": 123,
      "smartTradersCount": 123,
      "freshTradersBuys": 123,
      "proTradersBuys": 123,
      "smartTradersBuys": 123
    }
  ]
}
This endpoint intelligently combines transfers into swaps when they occur in the same transaction, providing a unified view of wallet activity.
Batch Support Available: use POST /2/wallet/activity to fetch activity for up to 100 wallets in a single request. Jump to Batch Requests.

Query Details

Required Parameters

  • wallet - The wallet address to query (supports ENS domains and various address formats)

Optional Parameters

ParameterTypeDefaultDescription
blockchainsstring-Comma-separated list of blockchain IDs (e.g., "ethereum,base,solana:solana").
limitnumber100Number of items to return.
offsetnumber0Offset for pagination.
orderstring”desc”Sort order: “asc” or “desc” by timestamp.
unlistedAssetsbooleantrueInclude unlisted/unverified tokens.
filterSpambooleantrueFilter out spam tokens.
cursorHashstring-Cursor anchor hash. When set, offset is ignored and results are returned strictly before/after this transaction depending on cursorDirection.
cursorDirectionstring”before”One of before or after. When before, returns items with tx_date_ms strictly less than the cursor’s timestamp. When after, returns items strictly greater than the cursor’s timestamp. The cursor item is never included.
fromnumber-Start timestamp in milliseconds.
tonumber-End timestamp in milliseconds.
enrichSwapsbooleanfalseWhen true, enriches swap actions with platform and fee data from the swaps table. Adds ~300-400ms overhead.
backfillTransfersbooleanfalseWhen true, triggers backfilling of transfer history for the wallet. Returns backfillStatus in the response.

Step-by-Step Tutorial and Video Walkthrough

  • Check out the guide: Here

Features

  • Smart Swap Detection: Automatically combines IN/OUT transfers in the same transaction into swap objects
  • Multi-Chain Support: Works across all supported blockchains
  • Spam Filtering: Built-in spam token filtering with customizable options
  • Vault Operations: Special handling for BitPanda Earn pools and similar vault operations
  • Flexible Pagination: Support for both offset-based and cursor-based pagination

Usage Examples

# Basic wallet activity
GET /2/wallet/activity?wallet=0xbe4c54689cb7fb736b56df8ea32c435d0503caed

# Filter by specific blockchains
GET /2/wallet/activity?wallet=0xbe4c54689cb7fb736b56df8ea32c435d0503caed&blockchains=ethereum,base

# Include all tokens (including spam) with more results
GET /2/wallet/activity?wallet=0xbe4c54689cb7fb736b56df8ea32c435d0503caed&filterSpam=false&unlistedAssets=true&limit=100

# Get older transactions using offset
GET /2/wallet/activity?wallet=0xbe4c54689cb7fb736b56df8ea32c435d0503caed&offset=100&limit=50&order=desc

# Filter by date range (timestamps in milliseconds)
GET /2/wallet/activity?wallet=0xbe4c54689cb7fb736b56df8ea32c435d0503caed&from=1704067200000&to=1735689600000

Cursor Pagination Examples

# Fetch a first page and pick a tx_hash to use as the cursor
GET /2/wallet/activity?wallet=0xbe4c54689cb7fb736b56df8ea32c435d0503caed&limit=40&order=desc

# Get OLDER items relative to that transaction
GET /2/wallet/activity?wallet=0xbe4c54689cb7fb736b56df8ea32c435d0503caed&cursorHash=0x<tx_hash>&cursorDirection=before&limit=20

# Get NEWER items relative to that transaction
GET /2/wallet/activity?wallet=0xbe4c54689cb7fb736b56df8ea32c435d0503caed&cursorHash=0x<tx_hash>&cursorDirection=after&limit=20
When using cursorHash, the endpoint sets offset to 0 internally and excludes the cursor transaction from data[]. Combine with order=desc for backward-in-time navigation, or order=asc for forward-in-time navigation.
With cursorDirection=after, the limit applies to the newest items immediately after the cursor hash. This keeps results tightly scoped around the cursor; the cursor transaction itself is excluded.

Batch Requests (POST)

To fetch wallet activity for multiple wallets in one call, send a POST request to /2/wallet/activity with either:
  • an object body: { "items": [...] }
  • or a direct array body: [ ... ]
Each item targets one wallet and accepts the same activity filters as the GET query. The maximum batch size is 100 wallets.
Item fieldTypeDefaultDescription
walletstring-Required. Wallet address to query.
chainIdsstring[]-Array of chain IDs (e.g., ["evm:1","evm:8453","solana:solana"]). All chains if omitted.
blockchainsstring[]-Alternative array of chain IDs.
limitnumber100Number of activity items per wallet.
offsetnumber0Offset for pagination per wallet.
orderstring”desc”Sort order: "asc" or "desc" by timestamp.
unlistedAssetsbooleantrueInclude unlisted/unverified tokens.
filterSpambooleantrueFilter out spam tokens.
cursorHashstring-Cursor anchor hash for this wallet.
cursorDirectionstring”before”One of before or after.
fromnumber-Start timestamp in milliseconds.
tonumber-End timestamp in milliseconds.
withTokensbooleanfalseInclude token details in the response when available.
enrichSwapsbooleanfalseEnrich swap actions with platform and fee data.
backfillTransfersbooleanfalseTrigger transfer backfill for this wallet.
backfillBalancesbooleanfalseTrigger balance backfill for this wallet.
curl -X POST "https://api.mobula.io/api/2/wallet/activity" \
  -H "Authorization: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "items": [
      {
        "wallet": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
        "chainIds": ["evm:1"],
        "limit": 20,
        "filterSpam": false
      },
      {
        "wallet": "4tqMHgB8jjbTgefVfqtVFYzyfQz2LQ8T3E922ePmt6kZ",
        "chainIds": ["solana:solana"],
        "limit": 20
      }
    ]
  }'
You can also send the array directly:
[
  { "wallet": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045", "chainIds": ["evm:1"], "limit": 20 },
  { "wallet": "0x28C6c06298d514Db089934071355E5743bf21d60", "chainIds": ["evm:1"], "limit": 20 }
]
The batch response wraps one entry per wallet in payload. Each wallet is processed independently: if one wallet fails validation or cannot be processed, only that wallet’s entry contains an error field.
{
  "payload": [
    {
      "wallet": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
      "data": [ /* activity items, same shape as GET response */ ],
      "pagination": { "page": 1, "offset": 0, "limit": 20, "pageEntries": 20 }
    },
    {
      "wallet": "4tqMHgB8jjbTgefVfqtVFYzyfQz2LQ8T3E922ePmt6kZ",
      "data": [ /* activity items */ ],
      "pagination": { "page": 1, "offset": 0, "limit": 20, "pageEntries": 12 }
    }
  ],
  "hostname": "api-pod-name"
}
Maximum 100 wallets per batch request. For larger datasets, split wallets into multiple POST requests.

Query Response

The endpoint returns a unified activity feed with three types of objects:

Activity Types

  1. Transfer (model: "transfer")
    • ERC20 token transfers (IN/OUT)
    • Native token transfers (IN/OUT)
    • Vault operations (DEPOSIT/WITHDRAW)
  2. Swap (model: "swap")
    • Automatically detected from combined transfers
    • Includes token pair information and pricing
    • Base/quote token identification
    Important: Asset naming is from the wallet’s perspective:
    • swapAssetIn = asset flowing INTO the wallet (what the wallet receives)
    • swapAssetOut = asset flowing OUT of the wallet (what the wallet spends)
    To determine buy/sell direction:
    • If swapAssetIn matches swapBaseAddressBUY (wallet receives base token)
    • If swapAssetOut matches swapBaseAddressSELL (wallet spends base token)

Swap Fee & Platform Fields (requires enrichSwaps=true)

When enrichSwaps=true is set, swap actions are enriched with additional fields:
  • swapPlatform: Trading platform/aggregator used for the swap. Object with id, name, logo fields. null if not available.
  • swapTotalFeesUsd: Total fees paid in USD
  • swapGasFeesUsd: Gas fees paid in USD
  • swapPlatformFeesUsd: Platform/aggregator fees paid in USD
  • swapMevFeesUsd: MEV/priority fees paid in USD

Transfer Types

  • TOKEN_IN / TOKEN_OUT - Token transfers
  • NATIVE_IN / NATIVE_OUT - Native currency transfers
  • VAULT_DEPOSIT / VAULT_WITHDRAW / VAULT_UNSTAKE - Vault/staking operations

Sample Response

{
  "data": [
    {
      "chainId": "evm:8453",
      "txDateMs": 1753985433000,
      "txDateIso": "2025-07-31T18:10:33.000Z",
      "txHash": "0xf45c...e8a54",
      "txRawFeesNative": "8504635537313",
      "txFeesNativeUsd": 0.03179333913441224,
      "txBlockNumber": 33601643,
      "txIndex": 141,
      "actions": [
        {
          "model": "swap",
          "swapType": "REGULAR",
          "swapRawAmountOut": 3.6056199820541157e+24,
          "swapRawAmountIn": 617836697,
          "swapAmountOut": 3605619.9820541157,
          "swapAmountIn": 617.836697,
          "swapPriceUsdTokenOut": 0,
          "swapPriceUsdTokenIn": 0.9999339877206453,
          "swapAmountUsd": 1265.5204839191017,
          "swapTransactionSenderAddress": "0xbe4c...caed",
          "swapBaseAddress": "0x24ca...d995",
          "swapQuoteAddress": "0x8335...2913",
          "swapAmountQuote": 617.836697,
          "swapAmountBase": 3605619.9820541157,
          "swapAssetIn": {
            "id": 100012309,
            "name": "USDC",
            "symbol": "USDC",
            "decimals": 6,
            "totalSupply": 65132345465,
            "circulatingSupply": 64167440713,
            "price": 0.9999339877206453,
            "liquidity": 682609830.4878722,
            "priceChange24hPercent": -0.009170282103379213,
            "marketCapUsd": 64163204873.9782,
            "logo": "https://coin-images.coingecko.com/coins/images/6319/large/usdc.png?1696506694",
            "contract": "0x8335...2913"
          },
          "swapAssetOut": {
            "id": null,
            "name": "Useless Base Coin",
            "symbol": "USELESS",
            "decimals": 18,
            "totalSupply": 0,
            "circulatingSupply": 0,
            "price": 0,
            "liquidity": 0,
            "priceChange24hPercent": 0,
            "marketCapUsd": 0,
            "logo": null,
            "contract": "0x24ca...d995"
          }
        }
      ]
    },
    {
      "chainId": "evm:8453",
      "txDateMs": 1753941849000,
      "txDateIso": "2025-07-31T06:04:09.000Z",
      "txHash": "0xb0ed...1ced",
      "txRawFeesNative": "132268679678890",
      "txFeesNativeUsd": 0.5115745599103257,
      "txBlockNumber": 33579851,
      "txIndex": 126,
      "actions": [
        {
          "model": "transfer",
          "transferRawAmount": 1000000000000000000,
          "transferAmount": 1,
          "transferAmountUsd": 0,
          "transferType": "TOKEN_IN",
          "transferFromAddress": "0x12b9...d389",
          "transferToAddress": "0xbe4c...caed",
          "transferAsset": {
            "id": null,
            "name": "Salty Apple",
            "symbol": "APPLE",
            "decimals": 18,
            "totalSupply": 0,
            "circulatingSupply": 0,
            "price": 0,
            "liquidity": 0,
            "priceChange24hPercent": 0,
            "marketCapUsd": 0,
            "logo": null,
            "contract": "0x3f1c...ddf3"
          }
        }
      ]
    }
  ],
  "pagination": {
    "page": 1,
    "offset": 0,
    "limit": 10,
    "pageEntries": 10
  },
  "backfillStatus": "processed"
}

Response Field Details

Chain ID Format

Chain IDs are returned in the format evm:chainId (e.g., evm:8453 for Base, evm:1 for Ethereum).

Raw Amounts vs Formatted Amounts

  • transfer_raw_amount / swap_raw_amount_*: Raw token amounts in smallest units (wei for 18-decimal tokens)
  • transfer_amount / swap_amount_*: Human-readable amounts (already divided by decimals)

Asset Information

  • id: Can be null for unlisted/unverified tokens
  • logo: Can be null if no logo is available
  • price: Can be 0 for tokens without established pricing
  • All supply and market cap values: Can be 0 for new or unlisted tokens

Swap Direction (Buy/Sell)

The swap fields use wallet-centric naming:
FieldMeaning
swapAssetInToken received by the wallet
swapAssetOutToken spent by the wallet
swapBaseAddressContract of the base token (non-stablecoin)
swapQuoteAddressContract of the quote token (SOL, USDC, etc.)
Determining trade direction:
  • BUY: swapAssetIn.contract matches swapBaseAddress (wallet receives the base token)
  • SELL: swapAssetOut.contract matches swapBaseAddress (wallet spends the base token)
Example: If wallet swaps SOL for a meme token:
  • swapAssetIn = meme token (received)
  • swapAssetOut = SOL (spent)
  • Direction = BUY (buying the meme token with SOL)

Transaction Fees

  • tx_raw_fees_native: String representation of fees in native token’s smallest unit
  • tx_fees_native_usd: USD value of transaction fees
Raw amounts use JavaScript’s scientific notation for very large numbers (e.g., 3.6056199820541157e+24).
The endpoint automatically handles address formatting across different chains and supports ENS domains.
Large wallets with extensive activity may take longer to process due to swap detection algorithms. Consider using smaller page sizes for better performance.

Query Parameters

wallet
string
required

Wallet address

chainIds
string

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

offset
number | null

Offset for pagination (default: 0)

limit
number | null

Number of transactions per page (default: 100)

order
enum<string>

Sort order: asc or desc (default: desc)

Available options:
asc,
desc
unlistedAssets

Include unlisted assets (default: true)

filterSpam

Filter spam transactions (default: true)

cursorHash
string

Cursor hash for cursor-based pagination

cursorDirection
enum<string>

Cursor direction: before or after

Available options:
before,
after
from
number | null

Start timestamp in milliseconds

to
number | null

End timestamp in milliseconds

Response

200 - application/json

Wallet activity response

data
object[]
required
pagination
object
required
backfillStatus
enum<string>
Available options:
processed,
processing,
pending
tokens
object[]