🖼️NFT Trades

NFT trades of multiple blockchains aggregated into a single table.

Chain Coverage

Project and protocol coverage is available at each chain's respective NFT trades page.

EVM ChainsNon-EVM Chains

Sample Query

NFT Volume Across Blockchains.

select
    date(block_timestamp) as date,
    chain,
    sum(usd_amount) as usd_volume
from crosschain.nfts.trades
where block_timestamp >= current_timestamp - interval '90 days'
group by all

Table Columns

Column NameDescription

chain

The blockchain where the NFT trade was executed

marketplace

Marketplace of the nft trade, e.g. opensea

protocol

The protocol of the marketplace determined by the smart contract used, e.g. wyvern or seaport

order_match_type

Type of sales. Registered as BUY for direct purchase and ACCEPT_BID for bids accepted.

trade_type

Type of trade. SINGLE_TRADE for single token sales or BUNDLE_TRADE when more than 1 token is sold in a transaction.

buyer_address

Address of the buyer.

seller_address

Address of the seller.

token_standard

Type of token traded in the transaction. null for BTC.

token_address

Token contract of the NFT in the trade. null for BTC, collection_mint for SOL

token_name

Name of the token traded. collection_name for SOL & BTC

token_symbol

Symbol of the token traded. collection_symbol for SOL, null for BTC

token_id

Token ID of the NFT traded. token_mint for SOL, inscription_id for BTC

item_quantity

Quantity of the item traded. For ERC721 tokens, the value is null. While for ERC1155 tokens, the value can be more than 1.

currency_address

Token address of the currency used for this trade. currency_mint for SOL

currency_symbol

Token symbol of the currency used for the trade.

raw_price

Raw price of the NFT trade (unnormalised)

price

Price of the NFT (normalised)

usd_price

USD value of the trade. The USD value of the trade is calculated by multiplying the hourly exchange rate of the currency (e.g. ETH) with the price oracle data source from exchanges

agg_fees

Sum of the fees paid by the NFT buyer and the seller.

buyer_fees

Fees paid by the NFT buyer. It might be "unimplemented" if we haven't parse the fees for that protocol yet. Otherwise, it will be a json with 9 columns. "creator" fees are the ones paid to the nft creator (royalties); "platform" fees are paid to the marketplace; "total" fees are the sum of both fees Use this syntax to access a specific fee:buyer_fees['usd_total']::double. And don't worry about the unimplemented ones, they will become null

seller_fees

Fees paid by the NFT seller

aggregator_name

Name of the aggregator use for the trade. Will be empty is the trade did not involve the use of aggregators.

aggregator_address

Contract address of the aggregator used for the trade.

transaction_hash

Transaction hash for this trade. txn_id for SOL

block_timestamp

The timestamp of the block that the corresponding transaction of this trade.

block_number

The block number that the corresponding transaction of this trade belongs to. block_slot for SOL

block_hash

The block hash that the corresponding transaction of this trade belongs to.

unique_id

Unique id generated for this trade.

Last updated