NFT Transfers
NFT transfer events across EVM networks.
The nft.transfers
table contains NFT transfer events across ERC721 and ERC1155 tokens for all EVM-compatible networks indexed on Dune. This dataset encompasses:
- Transfer events for ERC721 tokens
- Transfer events for ERC1155 tokens
Some NFTs may have non-standard transfer mechanisms and might not be included in the transfers table. You can check the logic for the transfers table here. The level of detail of the transfers table will vary by chain.
Utility
The NFT transfers table provides a comprehensive view of NFT movement across networks, enabling you to:
- Track NFT flows between addresses
- Analyze NFT transaction volumes and patterns
- Identify significant NFT movements
- Monitor NFT marketplace and protocol activity
The table contains the following columns:
Network Coverage
NFT transfer data is available for the following EVM-compatible networks:
Sample Queries
Query recent NFT transfers for a specific address
This query returns the most recent NFT transfers (both incoming and outgoing) for a specified address:
SELECT
block_time,
token_standard,
CASE
WHEN "from" = {{address}} THEN 'Outgoing'
WHEN "to" = {{address}} THEN 'Incoming'
END AS direction,
contract_address,
token_id,
amount
FROM nft.transfers
WHERE ("from" = {{address}} OR "to" = {{address}})
AND block_time > now() - interval '30' day
ORDER BY block_time DESC
LIMIT 100
Calculate daily transfer volume for a specific NFT contract
This query calculates the daily transfer volume for a specific NFT contract:
SELECT
block_date,
COUNT(*) AS num_transfers,
SUM(amount) AS total_amount
FROM nft.transfers
WHERE contract_address = {{contract_address}}
AND block_time > now() - interval '30' day
AND blockchain = 'ethereum'
GROUP BY 1
ORDER BY 1 DESC
Identify most active NFT contracts in the last 24 hours
This query finds the most active NFT contracts by transfer count in the last 24 hours:
SELECT
blockchain,
contract_address,
token_standard,
COUNT(*) AS transfer_count
FROM nft.transfers
WHERE block_time > now() - interval '1' day
GROUP BY 1, 2, 3
ORDER BY transfer_count DESC
LIMIT 50
Was this page helpful?