Get wallet activity
curl --request GET \
--url https://demo-api.mobula.io/api/2/wallet/activityimport requests
url = "https://demo-api.mobula.io/api/2/wallet/activity"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://demo-api.mobula.io/api/2/wallet/activity', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://demo-api.mobula.io/api/2/wallet/activity",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://demo-api.mobula.io/api/2/wallet/activity"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://demo-api.mobula.io/api/2/wallet/activity")
.asString();require 'uri'
require 'net/http'
url = URI("https://demo-api.mobula.io/api/2/wallet/activity")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"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,
"isFreezable": true,
"balanceMutable": true,
"lowLiquidity": "<string>",
"burnRate": "<string>",
"liquidityBurnPercentage": 123,
"transferTax": "<string>",
"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,
"migrating": true,
"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,
"dexScreenerEnhanced": 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,
"surgeScore": null,
"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
}
]
}Wallet APIs
Get Wallet Activity
Fetch detailed wallet activity—including transfers, swaps, and vault operations—for one wallet with GET or up to 100 wallets with POST batch.
GET
/
2
/
wallet
/
activity
Get wallet activity
curl --request GET \
--url https://demo-api.mobula.io/api/2/wallet/activityimport requests
url = "https://demo-api.mobula.io/api/2/wallet/activity"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://demo-api.mobula.io/api/2/wallet/activity', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://demo-api.mobula.io/api/2/wallet/activity",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://demo-api.mobula.io/api/2/wallet/activity"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://demo-api.mobula.io/api/2/wallet/activity")
.asString();require 'uri'
require 'net/http'
url = URI("https://demo-api.mobula.io/api/2/wallet/activity")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"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,
"isFreezable": true,
"balanceMutable": true,
"lowLiquidity": "<string>",
"burnRate": "<string>",
"liquidityBurnPercentage": 123,
"transferTax": "<string>",
"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,
"migrating": true,
"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,
"dexScreenerEnhanced": 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,
"surgeScore": null,
"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
| Parameter | Type | Default | Description |
|---|---|---|---|
blockchains | string | - | Comma-separated list of blockchain IDs (e.g., "ethereum,base,solana:solana"). |
limit | number | 100 | Number of items to return. |
offset | number | 0 | Offset for pagination. |
order | string | ”desc” | Sort order: “asc” or “desc” by timestamp. |
unlistedAssets | boolean | true | Include unlisted/unverified tokens. |
filterSpam | boolean | true | Filter out spam tokens. |
cursorHash | string | - | Cursor anchor hash. When set, offset is ignored and results are returned strictly before/after this transaction depending on cursorDirection. |
cursorDirection | string | ”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. |
from | number | - | Start timestamp in milliseconds. |
to | number | - | End timestamp in milliseconds. |
enrichSwaps | boolean | false | When true, enriches swap actions with platform and fee data from the swaps table. Adds ~300-400ms overhead. |
backfillTransfers | boolean | false | When 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 aPOST request to /2/wallet/activity with either:
- an object body:
{ "items": [...] } - or a direct array body:
[ ... ]
| Item field | Type | Default | Description |
|---|---|---|---|
wallet | string | - | Required. Wallet address to query. |
chainIds | string[] | - | Array of chain IDs (e.g., ["evm:1","evm:8453","solana:solana"]). All chains if omitted. |
blockchains | string[] | - | Alternative array of chain IDs. |
limit | number | 100 | Number of activity items per wallet. |
offset | number | 0 | Offset for pagination per wallet. |
order | string | ”desc” | Sort order: "asc" or "desc" by timestamp. |
unlistedAssets | boolean | true | Include unlisted/unverified tokens. |
filterSpam | boolean | true | Filter out spam tokens. |
cursorHash | string | - | Cursor anchor hash for this wallet. |
cursorDirection | string | ”before” | One of before or after. |
from | number | - | Start timestamp in milliseconds. |
to | number | - | End timestamp in milliseconds. |
withTokens | boolean | false | Include token details in the response when available. |
enrichSwaps | boolean | false | Enrich swap actions with platform and fee data. |
backfillTransfers | boolean | false | Trigger transfer backfill for this wallet. |
backfillBalances | boolean | false | Trigger 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
}
]
}'
[
{ "wallet": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045", "chainIds": ["evm:1"], "limit": 20 },
{ "wallet": "0x28C6c06298d514Db089934071355E5743bf21d60", "chainIds": ["evm:1"], "limit": 20 }
]
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
-
Transfer (
model: "transfer")- ERC20 token transfers (IN/OUT)
- Native token transfers (IN/OUT)
- Vault operations (DEPOSIT/WITHDRAW)
-
Swap (
model: "swap")- Automatically detected from combined transfers
- Includes token pair information and pricing
- Base/quote token identification
swapAssetIn= asset flowing INTO the wallet (what the wallet receives)swapAssetOut= asset flowing OUT of the wallet (what the wallet spends)
- If
swapAssetInmatchesswapBaseAddress→ BUY (wallet receives base token) - If
swapAssetOutmatchesswapBaseAddress→ SELL (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,logofields.nullif 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 transfersNATIVE_IN/NATIVE_OUT- Native currency transfersVAULT_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 formatevm: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 benullfor unlisted/unverified tokenslogo: Can benullif no logo is availableprice: Can be0for tokens without established pricing- All supply and market cap values: Can be
0for new or unlisted tokens
Swap Direction (Buy/Sell)
The swap fields use wallet-centric naming:| Field | Meaning |
|---|---|
swapAssetIn | Token received by the wallet |
swapAssetOut | Token spent by the wallet |
swapBaseAddress | Contract of the base token (non-stablecoin) |
swapQuoteAddress | Contract of the quote token (SOL, USDC, etc.) |
- BUY:
swapAssetIn.contractmatchesswapBaseAddress(wallet receives the base token) - SELL:
swapAssetOut.contractmatchesswapBaseAddress(wallet spends the base 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 unittx_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 address
Comma-separated list of chain IDs (e.g., "evm:1,evm:8453,solana:solana")
Offset for pagination (default: 0)
Number of transactions per page (default: 100)
Sort order: asc or desc (default: desc)
Available options:
asc, desc Include unlisted assets (default: true)
Filter spam transactions (default: true)
Cursor hash for cursor-based pagination
Cursor direction: before or after
Available options:
before, after Start timestamp in milliseconds
End timestamp in milliseconds
⌘I