GET /nft/{address}/owners return wrong data

Hello,
I am working with API GET /nft/{address}/owners but I see it is returning wrong total nfts
For example
I get all NFTs from Decentraland (mainnet - single token ERC-721), and total nfts response: 0xf87e31492faf9a91b02ee0deaad50d51d56d5d4d


Moralis: 85824 nfts
OpenSea: 97913 nfts (https://opensea.io/collection/decentraland)
Total supply from etherscan: 92598 nfts (https://etherscan.io/address/0xf87e31492faf9a91b02ee0deaad50d51d56d5d4d#readProxyContract)
Some other collections are also wrong:

  • 0x34d85c9cdeb23fa97cb08333b511ac86e1c4e258
    Moralis: 99942 nfts
    OpenSea: 100000 nfts
  • 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB

Can anyone tell me which number is correct? and where did Moralis get it from?
Thank you very much. Hope to hear from you guys!

for this contract, did you try to list all the owners to see how many we return

for contracts with a big number of owners we return an approximate value for the count in order to be faster, but if you iterate you will get all the owners

yes, but this is ERC-721 standard contract so each token is unique, it means that 1 nft is owned by only 1 person
@cryptokid how about Decentraland collection, the total nfts is very different.

it looks like it is a different number on every source?

https://etherscan.io/token/0xf87e31492faf9a91b02ee0deaad50d51d56d5d4d#balances

=>

 a total of 5,474 holders
https://etherscan.io/token/0xf87e31492faf9a91b02ee0deaad50d51d56d5d4d#inventory

=>

a total of 10,001 tokens

yeah, I see total holders is correct, but the number of tokens is different.
@cryptokid Moralis won’t return burned NFTs (owner is 0x0000…00 or null address) right?

yes, we don’t return burned tokens at this moment

yes, please let me know how can prove that the total number in the Moralis response is correct or where can I compare that my collection is not missing nfts when calling Moralis api

usually if there are 2 sources that list the token ids then we could compare the sources to see what is missing from what source and then to investigate specific token ids
only by looking at the numbers I don’t know how to validate

Can you please help check Decentraland collection for me?
https://etherscan.io/address/0xf87e31492faf9a91b02ee0deaad50d51d56d5d4d
I really appreciate your help

I could check it sometimes later, you could also check it if you want for example by comparing the output (not the numbers) with what alchemy returns

yes, thank you @cryptokid

hello @cryptokid have you tried to check for me?

I didn’t check yet, I’ll check today

thank you @cryptokid

I did a comparison with what alchemy returns and both alchemy and moralis return the same number of token ids.

We get that number from processing the transactions on chain for that contract.

I don’t know where from opensea gets that number, total supply could be different than the number of tokens, maybe some tokens are not minted yet or were burned

I did find an issue on our results that we have to fix where a token id was returned twice.

great, @cryptokid please let me know when it be fixed and update data. thank you!

I have same problem :slight_smile:

@cryptokid !
Can you advise if the issue “here a token id was returned twice” fixed ?

@cryptokid !
We also need to know why is there a difference in the Data between etherscan and moralis ?
1- 0x34d85c9CDeB23FA97cb08333b511ac86E1C4E258 (Otherdeeds)
Etherscan - 100000
Moralis - 99940

2- 0xF87E31492Faf9A91B02Ee0dEAAd50d51d56D5d4d (Decentraland)
Etherscan -92,598
Moralis - 85825


2 days back it was 85824 as shown in [here]

3- 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB (cryptopunk)
Etherscan - 10,000
Moralis - 9991

I checked if you are leaving out the burn NFTs but that is not the case.

That was not fixed yet