GET
/
2
/
wallet
/
activity
Get wallet activity
curl --request GET \
  --url https://api.mobula.io/api/2/wallet/activity
{
  "data": [
    {
      "model": "swap",
      "chain_id": "<string>",
      "tx_date_ms": 123,
      "tx_date_iso": "<string>",
      "tx_hash": "<string>",
      "tx_raw_fees_native": "<string>",
      "tx_fees_native_usd": 123,
      "tx_block_number": 123,
      "tx_index": 123,
      "swap_type": "REGULAR",
      "swap_raw_amount_out": 123,
      "swap_raw_amount_in": 123,
      "swap_amount_out": 123,
      "swap_amount_in": 123,
      "swap_amount_usd": 123,
      "swap_transaction_sender_address": "<string>",
      "swap_base_address": "<string>",
      "swap_quote_address": "<string>",
      "swap_amount_quote": 123,
      "swap_amount_base": 123,
      "swap_asset_in": {
        "id": 123,
        "name": "<string>",
        "symbol": "<string>",
        "decimals": 123,
        "total_supply": 123,
        "circulating_supply": 123,
        "price": 123,
        "liquidity": 123,
        "price_change_24h_percent": 123,
        "market_cap_usd": 123,
        "logo": "<string>",
        "contract": "<string>"
      },
      "swap_asset_out": {
        "id": 123,
        "name": "<string>",
        "symbol": "<string>",
        "decimals": 123,
        "total_supply": 123,
        "circulating_supply": 123,
        "price": 123,
        "liquidity": 123,
        "price_change_24h_percent": 123,
        "market_cap_usd": 123,
        "logo": "<string>",
        "contract": "<string>"
      },
      "transfer_raw_amount": 123,
      "transfer_amount": 123,
      "transfer_amount_usd": 123,
      "transfer_type": "VAULT_DEPOSIT",
      "transfer_from_address": "<string>",
      "transfer_to_address": "<string>",
      "transfer_asset": {
        "id": 123,
        "name": "<string>",
        "symbol": "<string>",
        "decimals": 123,
        "total_supply": 123,
        "circulating_supply": 123,
        "price": 123,
        "liquidity": 123,
        "price_change_24h_percent": 123,
        "market_cap_usd": 123,
        "logo": "<string>",
        "contract": "<string>"
      }
    }
  ],
  "pagination": {
    "page": 123,
    "offset": 123,
    "limit": 123,
    "page_entries": 123
  }
}
This endpoint intelligently combines transfers into swaps when they occur in the same transaction, providing a unified view of wallet activity.

Description

Fetch comprehensive activity data for a specific wallet address, including transfers, swaps, and vault operations. The endpoint automatically detects and combines related transfers into swap transactions, providing a clean and organized view of wallet activity.

Key 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

Query Parameters

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

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

Response Structure

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

  • ERC20_IN / ERC20_OUT - Token transfers
  • NATIVE_IN / NATIVE_OUT - Native currency transfers
  • VAULT_DEPOSIT / VAULT_WITHDRAW - Vault/staking operations

Sample Response

{
  "data": [
    {
      "model": "swap",
      "chain_id": "evm:8453",
      "tx_date_ms": 1753985433000,
      "tx_date_iso": "2025-07-31T18:10:33.000Z",
      "tx_hash": "0xf45ca4d91aeab1e218f57b6ab1b950f25ed7836e998aae00ffc1390079de8a54",
      "tx_raw_fees_native": "8504635537313",
      "tx_fees_native_usd": 0.03179333913441224,
      "tx_block_number": 33601643,
      "tx_index": 141,
      "swap_type": "REGULAR",
      "swap_raw_amount_out": 3.6056199820541157e+24,
      "swap_raw_amount_in": 617836697,
      "swap_amount_out": 3605619.9820541157,
      "swap_amount_in": 617.836697,
      "swap_price_usd_token_out": 0,
      "swap_price_usd_token_in": 0.9999339877206453,
      "swap_amount_usd": 1265.5204839191017,
      "swap_transaction_sender_address": "0xbe4c54689cb7fb736b56df8ea32c435d0503caed",
      "swap_base_address": "0x24caecc094995918baa33564b19d6041f787d995",
      "swap_quote_address": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
      "swap_amount_quote": 617.836697,
      "swap_amount_base": 3605619.9820541157,
      "swap_asset_in": {
        "id": 100012309,
        "name": "USDC",
        "symbol": "USDC",
        "decimals": 6,
        "total_supply": 65132345465,
        "circulating_supply": 64167440713,
        "price": 0.9999339877206453,
        "liquidity": 682609830.4878722,
        "price_change_24h_percent": -0.009170282103379213,
        "market_cap_usd": 64163204873.9782,
        "logo": "https://coin-images.coingecko.com/coins/images/6319/large/usdc.png?1696506694",
        "contract": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"
      },
      "swap_asset_out": {
        "id": null,
        "name": "Useless Base Coin",
        "symbol": "USELESS",
        "decimals": 18,
        "total_supply": 0,
        "circulating_supply": 0,
        "price": 0,
        "liquidity": 0,
        "price_change_24h_percent": 0,
        "market_cap_usd": 0,
        "logo": null,
        "contract": "0x24caecc094995918baa33564b19d6041f787d995"
      }
    },
    {
      "model": "transfer",
      "chain_id": "evm:8453",
      "tx_date_ms": 1753941849000,
      "tx_date_iso": "2025-07-31T06:04:09.000Z",
      "tx_hash": "0xb0ed5ef7a7b4d8fbdadc6d6096713c8ba3a583680db9bf250fc62ef42da01ced",
      "tx_raw_fees_native": "132268679678890",
      "tx_fees_native_usd": 0.5115745599103257,
      "tx_block_number": 33579851,
      "tx_index": 126,
      "transfer_raw_amount": 1000000000000000000,
      "transfer_amount": 1,
      "transfer_amount_usd": 0,
      "transfer_type": "ERC20_IN",
      "transfer_from_address": "0x12b96b3746ce94d378dda6a9219f8ea7b150d389",
      "transfer_to_address": "0xbe4c54689cb7fb736b56df8ea32c435d0503caed",
      "transfer_asset": {
        "id": null,
        "name": "Salty Apple",
        "symbol": "APPLE",
        "decimals": 18,
        "total_supply": 0,
        "circulating_supply": 0,
        "price": 0,
        "liquidity": 0,
        "price_change_24h_percent": 0,
        "market_cap_usd": 0,
        "logo": null,
        "contract": "0x3f1c9cc9533bc3906c475da70c08ac896967ddf3"
      }
    }
  ],
  "pagination": {
    "page": 1,
    "offset": 0,
    "limit": 10,
    "page_entries": 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
blacklist
string
page
number | null
default:1
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

Response

200 - application/json

Wallet activity response

The response is of type object.