Skip to main content
GET
/
2
/
wallet
/
activity
Get wallet activity
curl --request GET \
  --url https://explorer-api.mobula.io/api/2/wallet/activity
{
  "data": [
    {
      "chainId": "<string>",
      "txDateMs": 123,
      "txDateIso": "<string>",
      "txHash": "<string>",
      "txRawFeesNative": "<string>",
      "txFeesNativeUsd": 123,
      "txBlockNumber": 123,
      "txIndex": 123,
      "txAction": "<string>",
      "actions": [
        {
          "model": "swap",
          "swapType": "REGULAR",
          "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>"
          },
          "transferRawAmount": 123,
          "transferAmount": 123,
          "transferAmountUsd": 123,
          "transferType": "VAULT_DEPOSIT",
          "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>"
          }
        }
      ]
    }
  ],
  "pagination": {
    "page": 123,
    "offset": 123,
    "limit": 123,
    "pageEntries": 123
  },
  "backfillStatus": "processed",
  "tokens": [
    {
      "address": "<string>",
      "chainId": "<any>",
      "symbol": "<string>",
      "name": "<string>",
      "decimals": 0,
      "id": null,
      "priceUSD": 0,
      "priceToken": 0,
      "priceTokenString": "<string>",
      "approximateReserveUSD": 0,
      "approximateReserveTokenRaw": "<string>",
      "approximateReserveToken": 0,
      "totalSupply": 0,
      "circulatingSupply": 0,
      "marketCapUSD": 0,
      "marketCapDilutedUSD": 0,
      "logo": "<string>",
      "exchange": {
        "name": "<string>",
        "logo": "<string>"
      },
      "factory": "<string>",
      "source": "<string>",
      "sourceFactory": "<string>",
      "liquidityUSD": 123,
      "liquidityMaxUSD": 123,
      "bonded": true,
      "bondingPercentage": 123,
      "bondingCurveAddress": "<string>",
      "preBondingFactory": "<string>",
      "poolAddress": "<string>",
      "top10HoldingsPercentage": 123,
      "top50HoldingsPercentage": 123,
      "top100HoldingsPercentage": 123,
      "top200HoldingsPercentage": 123,
      "devHoldingsPercentage": 123,
      "insidersHoldingsPercentage": 123,
      "bundlersHoldingsPercentage": 123,
      "snipersHoldingsPercentage": 123,
      "proTradersHoldingsPercentage": 123,
      "blockchain": "<string>",
      "type": "<string>",
      "deployer": "<string>",
      "bondedAt": "<string>",
      "athUSD": 123,
      "atlUSD": 123,
      "athDate": "<string>",
      "atlDate": "<string>",
      "priceChange1minPercentage": 0,
      "priceChange5minPercentage": 0,
      "priceChange1hPercentage": 0,
      "priceChange4hPercentage": 0,
      "priceChange6hPercentage": 0,
      "priceChange12hPercentage": 0,
      "priceChange24hPercentage": 0,
      "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,
      "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,
      "createdAt": "<string>",
      "latestTradeDate": "<string>",
      "holdersCount": 0,
      "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>"
      },
      "twitterReusesCount": 0,
      "twitterRenameCount": 0,
      "twitterRenameHistory": [],
      "deployerMigrationsCount": 0,
      "dexscreenerListed": false,
      "dexscreenerHeader": null,
      "dexscreenerAdPaid": false
    }
  ]
}
This endpoint intelligently combines transfers into swaps when they occur in the same transaction, providing a unified view of wallet activity.

Query Details

Required Parameters

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

Optional Parameters

ParameterTypeDefaultDescription
limitnumber100Number of items to return (max 1000)
pagenumber1Page number for pagination
offsetnumber0Offset for pagination (alternative to page)
orderstring”desc”Sort order: “asc” or “desc” by timestamp
blackliststring-Comma-separated list of addresses to exclude from results
unlistedAssetsbooleantrueInclude unlisted/unverified tokens
filterSpambooleantrueFilter out spam tokens
cursor_hashstring-Cursor anchor hash. When set, offset is ignored and results are returned strictly before/after this transaction depending on cursor_direction.
cursor_directionstring-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.

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 page-based pagination
  • Address Blacklisting: Filter out transactions involving specific addresses

Usage Examples

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

# Exclude specific addresses (blacklist known spam distributors)
GET /2/wallet/activity?wallet=0xbe4c54689cb7fb736b56df8ea32c435d0503caed&blacklist=0x4920421a034534b979147de8f7ca6770cb88fc39,0x532911fbd9aca8725fd7a6b5966187a361f2224c

# 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

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&cursor_hash=0x<tx_hash>&cursor_direction=before&limit=20

# Get NEWER items relative to that transaction
GET /2/wallet/activity?wallet=0xbe4c54689cb7fb736b56df8ea32c435d0503caed&cursor_hash=0x<tx_hash>&cursor_direction=after&limit=20
When using cursor_hash, 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 cursor_direction=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.

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

Transfer Types

  • TOKEN_IN / TOKEN_OUT - Token transfers
  • NATIVE_IN / NATIVE_OUT - Native currency transfers
  • VAULT_DEPOSIT / VAULT_WITHDRAW - 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
  }
}

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

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
blockchains
string
blacklist
string
offset
number | null
default:0
limit
number | null
default:100
order
enum<string>
default:desc
Available options:
asc,
desc
pagination
default:false
unlistedAssets
default:true
filterSpam
default:true
backfillTransfers
default:false
cursor_hash
string
cursor_direction
enum<string>
default:before
Available options:
before,
after
withTokens
default:false

Response

200 - application/json

Wallet activity response

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