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"
]
}
]
}