I'm trying to figure out HOW to get a sort of "history" of values for a specific ERC721 (for instance KnownOrigin)

What are the important items to consider? Is something feasible via Smart Contract or it's better to use API (like https://api.ethplorer.io/ or https://api.etherscan.io/)?

Is there any standard way to do that? What is the best approach?

Is it somehow related to "internal transaction" topic?

I've seen online tools that has this info so there must be a way to do it.

Thanks in advance

  • I need a more specific use case please. Jun 27, 2018 at 1:05
  • 1
    Use case: I have a specific Token that implements ERC721 in the Smart Contract. How can I track his "Transfer" history? Like, it has been owned by address 0x123 and then by address 0x234. Actually I've gone through the whole events and map it on a DB to have it handy. Is there any other "query" I can do to get this info?
    – Ziba Leah
    Jun 27, 2018 at 7:15
  • 1
    ERC-721 does not define the value of an NFT. It's possible to get the owner history tho. Sep 20, 2018 at 4:54

2 Answers 2


This must be done off-chain for standard tokens.

The ERC-721 standard specification -- http://eips.ethereum.org/EIPS/eip-721 -- does not provide an interface to query historical ownership of a token. Other extensions to the standard may include this additional functionality but this will be implemented on a contract-by-contract basis. For example, CryptoKitties (as deployed) will never provide a way to get this information, regardless of what other technologies emerge.

For off-chain applications (dApps, servers) you can find this information by searching the Transfer event and building your own database of transfers and other log information.

For casual inspection, just look up the token on Etherscan, they have a website where you can find each contract and the tokens on them.


The best way to get history of transfers is with event logs. Depending on the library you use to interact with the EVM, you can query the logs with your node provider. In the query, you can specify a topic that corresponds to the transfer event. For example, if you look here:


[topic0] of all the 'Transfer' events is the same. It is a hashed version of the transfer event, together with its argument types.

Here is a good explanation of how it works: https://medium.com/mycrypto/understanding-event-logs-on-the-ethereum-blockchain-f4ae7ba50378

And here is a reference for query filters on ethers.js: https://docs.ethers.io/v5/concepts/events/

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.