Skip to main content

Don't have an API key yet?

Sign-up to Moralis to get your free API key and start building today.

Get Your Free API Key
Version: 2.2

How to get historical ERC20 token price

Step 1: Setup Moralis

Read the article Setting Up Moralis: Getting Started and make sure to finish all the steps. Only after that you can go ahead to complete this guide.

Step 2: Get the price of an ERC20 token

In order to get the historical price of an ERC20 token, Moralis provides you with an getTokenPrice endpoint.

Here you'll need two parameters: address and chain.

Once you have obtained the address and chain, you can copy the following code:

const Moralis = require("moralis").default;
const { EvmChain } = require("@moralisweb3/common-evm-utils");

const runApp = async () => {
await Moralis.start({
apiKey: "YOUR_API_KEY",
// ...and any other configuration
});

const historicalPrice = [];

const address = "0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0";

const chain = EvmChain.ETHEREUM;

for (let toBlock = 16323500; toBlock < 16323550; toBlock += 10) {
const response = await Moralis.EvmApi.token.getTokenPrice({
address,
chain,
toBlock,
});

historicalPrice.push(response?.toJSON());
}

console.log(historicalPrice);
};

runApp();

Step 3: Run the script

To run the script, enter the following command:

node index.js

In your terminal, you should see the following JSON response:

[
{
"nativePrice": {
"value": "642828540698243",
"decimals": 18,
"name": "Ether",
"symbol": "ETH"
},
"usdPrice": 0.7811524052648599,
"exchangeAddress": "0x1f98431c8ad98523631ae4a59f267346ea31f984",
"exchangeName": "Uniswap v3"
},
{
"nativePrice": {
"value": "642828540698243",
"decimals": 18,
"name": "Ether",
"symbol": "ETH"
},
"usdPrice": 0.7811524052648599,
"exchangeAddress": "0x1f98431c8ad98523631ae4a59f267346ea31f984",
"exchangeName": "Uniswap v3"
},
{
"nativePrice": {
"value": "642892823552313",
"decimals": 18,
"name": "Ether",
"symbol": "ETH"
},
"usdPrice": 0.7812305205053863,
"exchangeAddress": "0x1f98431c8ad98523631ae4a59f267346ea31f984",
"exchangeName": "Uniswap v3"
},
{
"nativePrice": {
"value": "642892823552313",
"decimals": 18,
"name": "Ether",
"symbol": "ETH"
},
"usdPrice": 0.7812305205053863,
"exchangeAddress": "0x1f98431c8ad98523631ae4a59f267346ea31f984",
"exchangeName": "Uniswap v3"
},
{
"nativePrice": {
"value": "642892823552313",
"decimals": 18,
"name": "Ether",
"symbol": "ETH"
},
"usdPrice": 0.7812305205053863,
"exchangeAddress": "0x1f98431c8ad98523631ae4a59f267346ea31f984",
"exchangeName": "Uniswap v3"
}
]

Congratulations 🥳 You just got the historical price of an ERC20 Token with just a few lines of code using the Moralis Token API!

API Reference

If you want to know more details on the endpoint and optional parameters, check out:

Support

If you face any trouble following the tutorial, feel free to reach out to our community engineers in our Discord or Forum to get 24/7 developer support.