Skip to main content
The tokens_aptos.transfers table contains curated fungible token transfer activity for Aptos assets indexed on Dune. It normalizes balance-changing activity across Aptos’ legacy Coin standard and the newer Fungible Asset (FA) standard into one transfer table. This dataset includes:
  • Standard transfers reconstructed from paired debit and credit activity within the same transaction
  • Residual mint and burn rows when only one side of the balance change exists
  • Metadata enrichment for symbol and decimals
  • USD valuation when an hourly USD price is available for the token
The table aims to capture standard Aptos fungible token transfers. Some non-standard token implementations or custom transfer hooks may not map cleanly into sender and receiver semantics for every transaction.

Utility

The Aptos transfers table provides a consistent view of fungible token movement on Aptos, enabling you to:
  • Track token flows between accounts
  • Analyze transfer volume by token, wallet, and day
  • Separate regular transfers from mint and burn activity
  • Investigate issuer, exchange, and protocol-related fund movement

Methodology

Aptos token movement is modeled differently than EVM token transfers. According to the official Aptos docs, the legacy Coin standard emits 0x1::coin::DepositEvent and 0x1::coin::WithdrawEvent, while the Fungible Asset standard emits 0x1::fungible_asset::Deposit and 0x1::fungible_asset::Withdraw events from primary stores. Dune’s Aptos transfers model aligns to that event model and reconstructs transfer rows from those balance-changing activities. The tokens_aptos.transfers table is built as follows:
  • It starts from Aptos fungible asset activity rows for supported Coin and FA deposit/withdraw event types.
  • Debit and credit events are paired within the same transaction and asset_type using FIFO-style overlap logic to reconstruct transfer rows.
  • Unpaired residual activity is emitted as mint or burn in transfer_type.
  • Symbol and decimals are enriched from Aptos asset metadata, while tx_from is sourced from aptos.user_transactions.
  • When multiple assets share overlapping symbols, the model keeps canonical asset types for key stablecoins to avoid duplicate symbol-level rows.
  • amount_usd is calculated from prices_external.hour for Aptos when hourly pricing is available.

Pricing Methodology

The price_usd and amount_usd columns come from Dune’s external hourly price feed for Aptos tokens. If a token has a price for that hour, the transfer row gets a USD price and value. If not, both columns stay NULL. This approach is meant to keep transfer valuations stable and avoid obvious outliers from thin or noisy onchain pricing. For tokens outside Dune’s trusted token set, very large computed USD values are set to NULL instead of being shown. For more details on Dune’s pricing methodology, see the Prices documentation.

Table Schema

ColumnTypeDescription
unique_keyVARCHARSurrogate key to identify a unique transfer row
blockchainVARCHARBlockchain identifier (aptos)
block_monthDATEMonth bucket derived from block_time
block_dateDATEBlock date
block_timeTIMESTAMPBlock timestamp
tx_versionUINT256Aptos transaction version
tx_hashVARBINARYTransaction hash
event_indexINTEGERPrimary event index used for the transfer row
counterpart_event_indexINTEGERMatched opposite-side event index for paired transfers
token_standardVARCHARAptos token standard label used for the activity
tx_fromVARBINARYTransaction sender
tx_toVARBINARYTransaction receiver field reserved for future enrichment; currently NULL
fromVARBINARYTransfer sender owner address
toVARBINARYTransfer receiver owner address
contract_addressVARBINARYPackage address parsed from asset_type
asset_typeVARCHARFully qualified Aptos asset type
from_storage_idVARBINARYSender-side fungible store identifier
to_storage_idVARBINARYReceiver-side fungible store identifier
symbolVARCHARToken symbol from Aptos asset metadata
decimalsINTEGERDisplay decimals from Aptos asset metadata
tx_indexINTEGERTransaction index within the block
amount_rawUINT256Raw token amount before decimal adjustment
amountDOUBLETransfer amount in display units
price_usdDOUBLEHourly USD price used to calculate amount_usd
amount_usdDOUBLEUSD value of the transfer
transfer_typeVARCHARTransfer classification (transfer, mint, or burn)
_updated_atTIMESTAMPTimestamp when this row was last written

Sample Queries

Query recent token transfers for a specific Aptos address This query returns the most recent incoming and outgoing token transfers for a wallet:
SELECT
    block_time,
    tx_version,
    symbol,
    transfer_type,
    CASE
        WHEN "from" = 0x8fc24635538e870786e8444e89ed1458449a1f0788ad21f27c4f8188333138f9 THEN 'Outgoing'
        WHEN "to" = 0x8fc24635538e870786e8444e89ed1458449a1f0788ad21f27c4f8188333138f9 THEN 'Incoming'
    END AS direction,
    amount,
    amount_usd
FROM tokens_aptos.transfers
WHERE (
        "from" = 0x8fc24635538e870786e8444e89ed1458449a1f0788ad21f27c4f8188333138f9
        OR "to" = 0x8fc24635538e870786e8444e89ed1458449a1f0788ad21f27c4f8188333138f9
    )
    AND block_time > now() - interval '30' day
ORDER BY block_time DESC
LIMIT 100
Calculate daily transfer volume for a specific Aptos asset This query aggregates daily transfer activity for a single Aptos asset:
SELECT
    block_date,
    symbol,
    COUNT(*) AS num_rows,
    SUM(amount) AS total_amount,
    SUM(amount_usd) AS total_amount_usd
FROM tokens_aptos.transfers
WHERE contract_address = 0xbae207659db88bea0cbead6da0ed00aac12edcdda169e591cd41c94180b46f3b
    AND transfer_type = 'transfer'
    AND block_date >= current_date - interval '30' day
GROUP BY 1, 2
ORDER BY 1 DESC
Split transfer activity into transfers, mints, and burns This query helps distinguish normal transfers from supply-changing events:
SELECT
    block_date,
    transfer_type,
    COUNT(*) AS num_rows,
    SUM(amount) AS total_amount,
    SUM(amount_usd) AS total_amount_usd
FROM tokens_aptos.transfers
WHERE block_date >= current_date - interval '30' day
    AND symbol = 'APT'
GROUP BY 1, 2
ORDER BY 1 DESC, 2