Skip to content

Profiler

Igor Sazonov edited this page Jul 14, 2026 · 1 revision

The Profiler service provides wallet-level intelligence: current token balances and DEX trade history for a specific address.

Access it via client.Profiler.

Current Balance

AddressCurrentBalance returns the current token balances for a wallet address or named entity.

Endpoint: POST /api/v1/profiler/address/current-balance

Request

type ProfilerAddressBalancesRequest struct {
    Address       string                          `json:"address,omitempty"`
    EntityName    string                          `json:"entity_name,omitempty"`
    Chain         Chain                           `json:"chain"`
    HideSpamToken *bool                           `json:"hide_spam_token,omitempty"`
    Filters       *ProfilerAddressBalancesFilters `json:"filters,omitempty"`
    Pagination    *PaginationRequest              `json:"pagination,omitempty"`
    OrderBy       []SortOrder                     `json:"order_by,omitempty"`
}

You can look up a wallet either by its Address (a raw hex address) or by its EntityName (a Nansen-labelled entity name). Provide one or the other.

Filters (ProfilerAddressBalancesFilters):

Field Type Description
ValueUSD *NumericRangeFilter Filter by token value in USD.
PriceUSD *NumericRangeFilter Filter by token price in USD.
TokenAmount *IntegerRangeFilter Filter by token amount held.
TokenSymbol interface{} Filter by token symbol or list of symbols.
TokenAddress interface{} Filter by token address or list of addresses.
TokenName interface{} Filter by token name.

Sort fields (ProfilerAddressBalancesSortField):

value_usd, token_symbol

Example

resp, err := client.Profiler.AddressCurrentBalance(ctx, &nansen.ProfilerAddressBalancesRequest{
    Address:       "0x0000000000000000000000000000000000000000",
    Chain:         nansen.ChainEthereum,
    HideSpamToken: nansen.BoolPtr(true),
    Pagination: &nansen.PaginationRequest{
        Page:    nansen.IntPtr(1),
        PerPage: nansen.IntPtr(20),
    },
    OrderBy: []nansen.SortOrder{
        {Field: string(nansen.BalanceSortValueUSD), Direction: nansen.SortDesc},
    },
})

Response

Each item in resp.Data is a ProfilerBalance:

Field Type Description
Chain string Blockchain the token is on.
Address string Wallet address.
TokenAddress string Token contract address.
TokenSymbol string Token ticker symbol.
TokenName *string Token name.
TokenAmount *float64 Amount of tokens held.
PriceUsd *float64 Current token price in USD.
ValueUsd *float64 Total value of the holding in USD.

DEX Trades

AddressDEXTrades returns DEX trade history for a wallet address on a specific chain within a date range.

Endpoint: POST /api/v1/profiler/dex-trades

Request

type ProfilerDexTradeRequest struct {
    Address    string                    `json:"address"`
    Chain      Chain                     `json:"chain"`
    Date       DateRange                 `json:"date"`
    Filters    *ProfilerDexTradeFilters  `json:"filters,omitempty"`
    Pagination *PaginationRequest        `json:"pagination,omitempty"`
    OrderBy    []SortOrder               `json:"order_by,omitempty"`
}

Sort fields (ProfilerDexTradeSortField):

chain, block_timestamp, transaction_hash, token_bought_amount, token_sold_amount, token_bought_symbol, token_sold_symbol, token_bought_age_days, token_sold_age_days, token_bought_market_cap, token_sold_market_cap, token_bought_fdv, token_sold_fdv, trade_value_usd

Example

resp, err := client.Profiler.AddressDEXTrades(ctx, &nansen.ProfilerDexTradeRequest{
    Address: "0x0000000000000000000000000000000000000000",
    Chain:   nansen.ChainEthereum,
    Date: nansen.DateRange{
        From: time.Now().AddDate(0, 0, -7).Format(time.RFC3339),
        To:   time.Now().Format(time.RFC3339),
    },
    Pagination: &nansen.PaginationRequest{
        Page:    nansen.IntPtr(1),
        PerPage: nansen.IntPtr(10),
    },
    OrderBy: []nansen.SortOrder{
        {Field: string(nansen.ProfilerDexSortTradeValueUSD), Direction: nansen.SortDesc},
    },
})

Clone this wiki locally