How to track NFT sales and get accurate price data for every NFT transaction

Our Transfer Insights API provides the ability to get a list of NFT sales and other types of transactions filtered by various fields. For the Transfers of NFTs endpoint, the response aside from the regular information about transfers will contain details related to pricing attribution.

At the same time Transfers by Tx Hash endpoint will allow you to get a full breakdown of each transaction.

Learn more about the NFT pricing challenges and how Mnemonic solves these problems with our price attribution engine.

Get latest NFT sales

To track the most recent NFT sales you can use our comprehensive Transfers of NFTs endpoint.

Use blockTimestampGt parameter to get NFT sales since the last checkpoint, and LABEL_SALE to get only sales.

curl --request GET \
     --url 'https://ethereum-rest.api.mnemonichq.com/foundational/v1beta2/transfers/nft?limit=5&sortDirection=SORT_DIRECTION_DESC&blockTimestampGt=2023-01-30T14%3A15%3A22Z&labelsAny=LABEL_SALE&labelsAny=LABEL_MARKETPLACE_OPENSEA' \
     --header 'X-API-Key: <YOUR API KEY>' \
     --header 'accept: application/json'

The result will contain a list of sale transactions, along with the price attribution data:

{
  "nftTransfers": [
    {
      "blockchainEvent": {
        "txHash": "0x615713b48e7c58a2aabb0224f0c043145b00738469971984b50b21829c8d4a1c",
        "logIndex": "210",
        "seqIndex": "0",
        "blockNumber": "17290647",
        "blockTimestamp": "2023-05-19T02:40:11Z"
      },
      "contractAddress": "0xaef41ec3933e7e1e17748ed48b663535c66d9a17",
      "tokenId": "12520",
      "tokenType": "TYPE_ERC721",
      "quantity": "1",
      "sender": {
        "address": "0x956b5ed79e6190cf6842a9411d6865640af26801",
        "type": "TYPE_OWNER"
      },
      "senderReceived": {
        "totalNative": "0.01455",
        "totalUsd": "26.18946736151954463",
        "nativeTransfersTotal": "0.01455",
        "fungibleTransfersTotal": "0",
        "attributedBy": "ATTRIBUTED_BY_SINGLE_TRANSFER",
        "fungibleTotals": []
      },
      "recipient": {
        "address": "0x9319f73ebb1f7aa1c342fcdf8365b8df1760b8bd",
        "type": "TYPE_OWNER"
      },
      "recipientPaid": {
        "totalNative": "0.0157444029850746",
        "totalUsd": "28.33934901059945889165512567556",
        "nativeTransfersTotal": "0.0157444029850746",
        "fungibleTransfersTotal": "0",
        "attributedBy": "ATTRIBUTED_BY_PAYMENT_PROPORTION",
        "fungibleTotals": []
      },
      "labels": [
        "LABEL_BUNDLE",
        "LABEL_SALE"
      ]
    },
    {
      "blockchainEvent": {
        "txHash": "0x615713b48e7c58a2aabb0224f0c043145b00738469971984b50b21829c8d4a1c",
        "logIndex": "209",
        "seqIndex": "0",
        "blockNumber": "17290647",
        "blockTimestamp": "2023-05-19T02:40:11Z"
      },
      "contractAddress": "0xaef41ec3933e7e1e17748ed48b663535c66d9a17",
      "tokenId": "18543",
      "tokenType": "TYPE_ERC721",
      "quantity": "1",
      "sender": {
        "address": "0x339ef4a59709e4710658cd232e96ed8a00e158bc",
        "type": "TYPE_OWNER"
      },
      "senderReceived": {
        "totalNative": "0.01225",
        "totalUsd": "22.04955155866765785",
        "nativeTransfersTotal": "0.01225",
        "fungibleTransfersTotal": "0",
        "attributedBy": "ATTRIBUTED_BY_SINGLE_TRANSFER",
        "fungibleTotals": []
      },
      "recipient": {
        "address": "0x9319f73ebb1f7aa1c342fcdf8365b8df1760b8bd",
        "type": "TYPE_OWNER"
      },
      "recipientPaid": {
        "totalNative": "0.0132555970149254",
        "totalUsd": "23.85958937318520050834487432444",
        "nativeTransfersTotal": "0.0132555970149254",
        "fungibleTransfersTotal": "0",
        "attributedBy": "ATTRIBUTED_BY_PAYMENT_PROPORTION",
        "fungibleTotals": []
      },
      "labels": [
        "LABEL_BUNDLE",
        "LABEL_SALE"
      ]
    },
    {
      "blockchainEvent": {
        "txHash": "0xaf8de78eb16eb488ab53356330ae0d9f0c0a87d30511b50a980f37efa49f9f93",
        "logIndex": "196",
        "seqIndex": "0",
        "blockNumber": "17290647",
        "blockTimestamp": "2023-05-19T02:40:11Z"
      },
      "contractAddress": "0xd694f3940c4b1d1f056f7366183861f419b9dca7",
      "tokenId": "351",
      "tokenType": "TYPE_ERC721",
      "quantity": "1",
      "sender": {
        "address": "0xcf6183346095932eafe2f29fa3a21df7590dc67a",
        "type": "TYPE_OWNER"
      },
      "senderReceived": {
        "totalNative": "0.000975",
        "totalUsd": "1.754964307730691135",
        "nativeTransfersTotal": "0.000975",
        "fungibleTransfersTotal": "0",
        "attributedBy": "ATTRIBUTED_BY_SINGLE_TRANSFER",
        "fungibleTotals": []
      },
      "recipient": {
        "address": "0xb172e5fabc60b0a74a862139b3961c3b3104f063",
        "type": "TYPE_OWNER"
      },
      "recipientPaid": {
        "totalNative": "0.001",
        "totalUsd": "1.7999633925442986",
        "nativeTransfersTotal": "0.001",
        "fungibleTransfersTotal": "0",
        "attributedBy": "ATTRIBUTED_BY_SINGLE_TRANSFER",
        "fungibleTotals": []
      },
      "labels": [
        "LABEL_SALE"
      ]
    },
    {
      "blockchainEvent": {
        "txHash": "0x47bbfd2fea174190317f0381f586f718306050bdc59ca2d9af1d3ecf6acf0ed7",
        "logIndex": "303",
        "seqIndex": "0",
        "blockNumber": "17290646",
        "blockTimestamp": "2023-05-19T02:39:59Z"
      },
      "contractAddress": "0x0fcbd68251819928c8f6d182fc04be733fa94170",
      "tokenId": "3320",
      "tokenType": "TYPE_ERC721",
      "quantity": "1",
      "sender": {
        "address": "0x65a05d8c6888879adf72c8798b56a0302a0f4a05",
        "type": "TYPE_OWNER"
      },
      "senderReceived": {
        "totalNative": "0.168155",
        "totalUsd": "302.672844273286531083",
        "nativeTransfersTotal": "0.168155",
        "fungibleTransfersTotal": "0",
        "attributedBy": "ATTRIBUTED_BY_SINGLE_TRANSFER",
        "fungibleTotals": []
      },
      "recipient": {
        "address": "0x255609ed48f08914e029701adf44743941cb820c",
        "type": "TYPE_OWNER"
      },
      "recipientPaid": {
        "totalNative": "0.169",
        "totalUsd": "304.1938133399864634",
        "nativeTransfersTotal": "0.169",
        "fungibleTransfersTotal": "0",
        "attributedBy": "ATTRIBUTED_BY_SINGLE_TRANSFER",
        "fungibleTotals": []
      },
      "labels": [
        "LABEL_SALE"
      ]
    },
    {
      "blockchainEvent": {
        "txHash": "0x3243501d718c53e47610345433caf49bbeb8976b65b9a02a47f841ec0279e136",
        "logIndex": "217",
        "seqIndex": "0",
        "blockNumber": "17290645",
        "blockTimestamp": "2023-05-19T02:39:47Z"
      },
      "contractAddress": "0x524cab2ec69124574082676e6f654a18df49a048",
      "tokenId": "19627",
      "tokenType": "TYPE_ERC721",
      "quantity": "1",
      "sender": {
        "address": "0x4b4f2c82dded91191d19e8fa07315f5f2b62abb8",
        "type": "TYPE_OWNER"
      },
      "senderReceived": {
        "totalNative": "0.367951",
        "totalUsd": "662.2983302500672141686",
        "nativeTransfersTotal": "0.367951",
        "fungibleTransfersTotal": "0",
        "attributedBy": "ATTRIBUTED_BY_SINGLE_TRANSFER",
        "fungibleTotals": []
      },
      "recipient": {
        "address": "0xe4f44bc4520d3161bef03f62967bc361082b3ae0",
        "type": "TYPE_OWNER"
      },
      "recipientPaid": {
        "totalNative": "0.3698",
        "totalUsd": "665.62646256288162228",
        "nativeTransfersTotal": "0.3698",
        "fungibleTransfersTotal": "0",
        "attributedBy": "ATTRIBUTED_BY_PAYMENT_PROPORTION",
        "fungibleTotals": []
      },
      "labels": [
        "LABEL_BUNDLE",
        "LABEL_SALE",
        "LABEL_MARKETPLACE_BLUR"
      ]
    }
  ]
}

You can use a variety of other sale labels to fine tune the results.

The price attributed data is enclosed within the following group of properties in the response:

"senderReceived": {
  "totalNative": "0.01225",
  "totalUsd": "22.04955155866765785",
  "nativeTransfersTotal": "0.01225",
  "fungibleTransfersTotal": "0",
  "attributedBy": "ATTRIBUTED_BY_SINGLE_TRANSFER",
  "fungibleTotals": []
},
"recipient": {
  "address": "0x9319f73ebb1f7aa1c342fcdf8365b8df1760b8bd",
  "type": "TYPE_OWNER"
},
"recipientPaid": {
  "totalNative": "0.0132555970149254",
  "totalUsd": "23.85958937318520050834487432444",
  "nativeTransfersTotal": "0.0132555970149254",
  "fungibleTransfersTotal": "0",
  "attributedBy": "ATTRIBUTED_BY_PAYMENT_PROPORTION",
  "fungibleTotals": []
},

Get marketplace sales

We've also enabled you to pull sales data specific to certain NFT marketplaces. We've got quite a few established marketplaces and protocols under our belt. You can check them out here.

Simply, provide the name of the marketplace as one of the labels in the request (you can use multiple labels at a time):

curl --request GET \
     --url 'https://ethereum-rest.api.mnemonichq.com/foundational/v1beta2/transfers/nft?limit=5&sortDirection=SORT_DIRECTION_DESC&labelsAny=LABEL_SALE&labelsAny=LABEL_MARKETPLACE_BLUR&labelsAny=LABEL_MARKETPLACE_X2Y2' \
     --header 'X-API-Key: <YOUR API KEY>' \
     --header 'accept: application/json'

The below example illustrates NFT sales filtering by the marketplace, as well as introduces a few concepts not seen in the previous example:

  • Price attributed by ATTRIBUTED_BY_SAME_CONTRACT_AVERAGE;
  • Bundle sales defined by LABEL_BUNDLE with an attributed price;
  • Fungible payments with converted price into USD;
{
  "nftTransfers": [
    {
      "blockchainEvent": {
        "txHash": "0x335c7ae96345a827b4a3888a90372b9222ee60b9139563499ac00424788fb80c",
        "logIndex": "576",
        "seqIndex": "0",
        "blockNumber": "17290727",
        "blockTimestamp": "2023-05-19T02:56:35Z"
      },
      "contractAddress": "0xd5a27b5bf963f2238af5cb17079d0059d18e5b7b",
      "tokenId": "66",
      "tokenType": "TYPE_ERC721",
      "quantity": "1",
      "sender": {
        "address": "0x6bee626fe6f7b6ffaa718e7ac898164ca0e34415",
        "type": "TYPE_OWNER"
      },
      "senderReceived": {
        "totalNative": "0.0220022002869783",
        "totalUsd": "39.60315507198860111151548692038",
        "nativeTransfersTotal": "0",
        "fungibleTransfersTotal": "0.0220022002869783",
        "attributedBy": "ATTRIBUTED_BY_SAME_CONTRACT_AVERAGE",
        "fungibleTotals": [
          {
            "contractAddress": "0x0000000000a39bb272e79075ade125fd351887ac",
            "totalNormalized": "0.022"
          }
        ]
      },
      "recipient": {
        "address": "0x5e1416e0ec35b47a6b7687c5e783e9b98a83dd45",
        "type": "TYPE_OWNER"
      },
      "recipientPaid": {
        "totalNative": "0.0200020002608893",
        "totalUsd": "36.00286824726225010370728074498",
        "nativeTransfersTotal": "0",
        "fungibleTransfersTotal": "0.0200020002608893",
        "attributedBy": "ATTRIBUTED_BY_SAME_CONTRACT_AVERAGE",
        "fungibleTotals": [
          {
            "contractAddress": "0x0000000000a39bb272e79075ade125fd351887ac",
            "totalNormalized": "0.02"
          }
        ]
      },
      "labels": [
        "LABEL_BUNDLE",
        "LABEL_SALE",
        "LABEL_MARKETPLACE_BLUR"
      ]
    },
    {
      "blockchainEvent": {
        "txHash": "0x335c7ae96345a827b4a3888a90372b9222ee60b9139563499ac00424788fb80c",
        "logIndex": "572",
        "seqIndex": "0",
        "blockNumber": "17290727",
        "blockTimestamp": "2023-05-19T02:56:35Z"
      },
      "contractAddress": "0xd5a27b5bf963f2238af5cb17079d0059d18e5b7b",
      "tokenId": "33",
      "tokenType": "TYPE_ERC721",
      "quantity": "1",
      "sender": {
        "address": "0x6bee626fe6f7b6ffaa718e7ac898164ca0e34415",
        "type": "TYPE_OWNER"
      },
      "senderReceived": {
        "totalNative": "0.0220022002869783",
        "totalUsd": "39.60315507198860111151548692038",
        "nativeTransfersTotal": "0",
        "fungibleTransfersTotal": "0.0220022002869783",
        "attributedBy": "ATTRIBUTED_BY_SAME_CONTRACT_AVERAGE",
        "fungibleTotals": [
          {
            "contractAddress": "0x0000000000a39bb272e79075ade125fd351887ac",
            "totalNormalized": "0.022"
          }
        ]
      },
      "recipient": {
        "address": "0x5e1416e0ec35b47a6b7687c5e783e9b98a83dd45",
        "type": "TYPE_OWNER"
      },
      "recipientPaid": {
        "totalNative": "0.0200020002608893",
        "totalUsd": "36.00286824726225010370728074498",
        "nativeTransfersTotal": "0",
        "fungibleTransfersTotal": "0.0200020002608893",
        "attributedBy": "ATTRIBUTED_BY_SAME_CONTRACT_AVERAGE",
        "fungibleTotals": [
          {
            "contractAddress": "0x0000000000a39bb272e79075ade125fd351887ac",
            "totalNormalized": "0.02"
          }
        ]
      },
      "labels": [
        "LABEL_BUNDLE",
        "LABEL_SALE",
        "LABEL_MARKETPLACE_BLUR"
      ]
    },
    {
      "blockchainEvent": {
        "txHash": "0x335c7ae96345a827b4a3888a90372b9222ee60b9139563499ac00424788fb80c",
        "logIndex": "568",
        "seqIndex": "0",
        "blockNumber": "17290727",
        "blockTimestamp": "2023-05-19T02:56:35Z"
      },
      "contractAddress": "0xd5a27b5bf963f2238af5cb17079d0059d18e5b7b",
      "tokenId": "27",
      "tokenType": "TYPE_ERC721",
      "quantity": "1",
      "sender": {
        "address": "0x6bee626fe6f7b6ffaa718e7ac898164ca0e34415",
        "type": "TYPE_OWNER"
      },
      "senderReceived": {
        "totalNative": "0.0220022002869783",
        "totalUsd": "39.60315507198860111151548692038",
        "nativeTransfersTotal": "0",
        "fungibleTransfersTotal": "0.0220022002869783",
        "attributedBy": "ATTRIBUTED_BY_SAME_CONTRACT_AVERAGE",
        "fungibleTotals": [
          {
            "contractAddress": "0x0000000000a39bb272e79075ade125fd351887ac",
            "totalNormalized": "0.022"
          }
        ]
      },
      "recipient": {
        "address": "0x5e1416e0ec35b47a6b7687c5e783e9b98a83dd45",
        "type": "TYPE_OWNER"
      },
      "recipientPaid": {
        "totalNative": "0.0200020002608893",
        "totalUsd": "36.00286824726225010370728074498",
        "nativeTransfersTotal": "0",
        "fungibleTransfersTotal": "0.0200020002608893",
        "attributedBy": "ATTRIBUTED_BY_SAME_CONTRACT_AVERAGE",
        "fungibleTotals": [
          {
            "contractAddress": "0x0000000000a39bb272e79075ade125fd351887ac",
            "totalNormalized": "0.02"
          }
        ]
      },
      "labels": [
        "LABEL_BUNDLE",
        "LABEL_SALE",
        "LABEL_MARKETPLACE_BLUR"
      ]
    },
    {
      "blockchainEvent": {
        "txHash": "0x335c7ae96345a827b4a3888a90372b9222ee60b9139563499ac00424788fb80c",
        "logIndex": "564",
        "seqIndex": "0",
        "blockNumber": "17290727",
        "blockTimestamp": "2023-05-19T02:56:35Z"
      },
      "contractAddress": "0xd5a27b5bf963f2238af5cb17079d0059d18e5b7b",
      "tokenId": "24",
      "tokenType": "TYPE_ERC721",
      "quantity": "1",
      "sender": {
        "address": "0x6bee626fe6f7b6ffaa718e7ac898164ca0e34415",
        "type": "TYPE_OWNER"
      },
      "senderReceived": {
        "totalNative": "0.0220022002869783",
        "totalUsd": "39.60315507198860111151548692038",
        "nativeTransfersTotal": "0",
        "fungibleTransfersTotal": "0.0220022002869783",
        "attributedBy": "ATTRIBUTED_BY_SAME_CONTRACT_AVERAGE",
        "fungibleTotals": [
          {
            "contractAddress": "0x0000000000a39bb272e79075ade125fd351887ac",
            "totalNormalized": "0.022"
          }
        ]
      },
      "recipient": {
        "address": "0xf53d24a85b73118d5bcf4fb0a51e88cf882ead8b",
        "type": "TYPE_OWNER"
      },
      "recipientPaid": {
        "totalNative": "0.0200020002608893",
        "totalUsd": "36.00286824726225010370728074498",
        "nativeTransfersTotal": "0",
        "fungibleTransfersTotal": "0.0200020002608893",
        "attributedBy": "ATTRIBUTED_BY_SINGLE_TRANSFER",
        "fungibleTotals": [
          {
            "contractAddress": "0x0000000000a39bb272e79075ade125fd351887ac",
            "totalNormalized": "0.02"
          }
        ]
      },
      "labels": [
        "LABEL_BUNDLE",
        "LABEL_SALE",
        "LABEL_MARKETPLACE_BLUR"
      ]
    },
    {
      "blockchainEvent": {
        "txHash": "0x335c7ae96345a827b4a3888a90372b9222ee60b9139563499ac00424788fb80c",
        "logIndex": "560",
        "seqIndex": "0",
        "blockNumber": "17290727",
        "blockTimestamp": "2023-05-19T02:56:35Z"
      },
      "contractAddress": "0xd5a27b5bf963f2238af5cb17079d0059d18e5b7b",
      "tokenId": "14",
      "tokenType": "TYPE_ERC721",
      "quantity": "1",
      "sender": {
        "address": "0x6bee626fe6f7b6ffaa718e7ac898164ca0e34415",
        "type": "TYPE_OWNER"
      },
      "senderReceived": {
        "totalNative": "0.0220022002869783",
        "totalUsd": "39.60315507198860111151548692038",
        "nativeTransfersTotal": "0",
        "fungibleTransfersTotal": "0.0220022002869783",
        "attributedBy": "ATTRIBUTED_BY_SAME_CONTRACT_AVERAGE",
        "fungibleTotals": [
          {
            "contractAddress": "0x0000000000a39bb272e79075ade125fd351887ac",
            "totalNormalized": "0.022"
          }
        ]
      },
      "recipient": {
        "address": "0x4ea1eab5dcdde01dbba9a96d50f7d78385558885",
        "type": "TYPE_OWNER"
      },
      "recipientPaid": {
        "totalNative": "0.030003000391334",
        "totalUsd": "54.0043023708934651537305483324",
        "nativeTransfersTotal": "0",
        "fungibleTransfersTotal": "0.030003000391334",
        "attributedBy": "ATTRIBUTED_BY_SINGLE_TRANSFER",
        "fungibleTotals": [
          {
            "contractAddress": "0x0000000000a39bb272e79075ade125fd351887ac",
            "totalNormalized": "0.03"
          }
        ]
      },
      "labels": [
        "LABEL_BUNDLE",
        "LABEL_SALE",
        "LABEL_MARKETPLACE_BLUR"
      ]
    }
  ]
}