Skip to main content
GET
Get wallet activity
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

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

Cursor Pagination Examples

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.
You can also send the array directly:
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.
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

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: 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[]