Tracking NFT movement on Solana: How to view transfer history for a specific wallet?

I’m trying to track the movement of NFTs in and out of my Solana wallet. Is there a way to see a list of NFTs sent to me and those I’ve sent to others? I’ve looked into using getSignaturesForAddress from the Solana web3 library, but it doesn’t seem to keep a record of NFT transfers.

I’m hoping to find something similar to what the Solana explorer shows in its token history section. Does anyone know of an API or method that can help me retrieve this information? It would be really helpful for keeping tabs on my NFT collection.

Here’s a quick example of what I’ve tried:

const getTransferHistory = async (walletAddress) => {
  const connection = new Connection(clusterApiUrl('devnet'));
  const signatures = await connection.getSignaturesForAddress(new PublicKey(walletAddress));
  // This doesn't show NFT transfers
  console.log(signatures);
}

getTransferHistory('MyWalletAddressHere');

Any suggestions would be greatly appreciated!

I’ve been exploring NFT tracking on Solana and found that the getSignaturesForAddress method doesn’t capture the full details of NFT transfers. Instead of relying on that, I suggest combining the Solana web3 library with the Metaplex API. This approach allows you to fetch parsed token accounts for your wallet and then retrieve detailed metadata for each token using Metaplex, which can help identify the NFT’s mint addresses and associated collections. Additionally, indexing services such as The Graph for Solana can simplify querying the blockchain for specific NFT transfer data.

yo, have u checked out solscan.io? its pretty dope for tracking nft moves. just punch in ur wallet address and itll show u all the nft transfers. way easier than messing with code. plus, they got an api if u wanna get fancy with it. give it a shot!

hey there ethan! i’ve been diving into nft tracking on solana too and it can be a bit tricky. have you looked into using the solana program library (spl) token library? it’s got some cool functions that might help you out.

one thing you could try is using the getTokenAccountsByOwner method to grab all the token accounts for your wallet, then filter for the ones that are nfts. something like this:

const tokenAccounts = await connection.getTokenAccountsByOwner(
  new PublicKey(walletAddress),
  { programId: TOKEN_PROGRAM_ID }
);

// filter for nfts (tokens with only 1 in circulation)
const nftAccounts = tokenAccounts.value.filter(account => {
  const amount = account.account.data.parsed.info.tokenAmount;
  return amount.amount === '1' && amount.decimals === 0;
});

from there, you could dig into the transaction history for each nft account to see transfers. it’s not perfect, but might get you closer to what you’re after!

what kind of nfts are you collecting btw? always curious to hear about cool projects!