---
title: "Migrating fungible token data from SimpleHash to Alchemy"
description: "This guide provides step-by-step examples for you to migrate Fungible Token Data from SimpleHash to Alchemy."
---

# Migrating fungible token data from SimpleHash to Alchemy

<CalloutBlock>

SimpleHash is sunsetting its services on March 27, 2025, and this guide provides a straightforward path for you to migrate Fungible Token Data from SimpleHash to Alchemy.

Please reach out to [data-services-product@alchemy.com](mailto:data-services-product@alchemy.com) with any questions!

</CalloutBlock>

## Use case 1: token balances & metadata
Our token APIs are a perfect replacement for SimpleHash’s fungible token endpoints.

Our fungible token APIs provide:
✅ **Real-time balances** for ERC-20 and other tokens

✅ **Token metadata** \(name, symbol, decimals, contract address\)

✅ **Multi-chain support** for all major blockchains

Docs: [https://www.alchemy.com/docs/data/token-api/token-api-endpoints/alchemy-get-token-balances](https://www.alchemy.com/docs/data/token-api/token-api-endpoints/alchemy-get-token-balances)

📌 **Example Wallet:** `0x89205A3A3b2A69De6Dbf7f01ED13B2108B2c43e7`

### Fetching token balances
### SimpleHash request \(old\)
<CodeSnippet
  language="bash"
  code={`curl -X GET "<https://api.simplehash.com/api/v0/fungibles/balances?wallet_address=0x...&chain=ethereum>" \\\\
  -H "Authorization: Bearer YOUR_SIMPLEHASH_KEY"`}
/>
### Alchemy request \(new\)
_Try it out _[here](https://sandbox.alchemy.com/?network=ETH_MAINNET&method=alchemy_getTokenBalances&body.id=1&body.jsonrpc=2.0&body.method=alchemy_getTokenBalances&body.params%5B0%5D=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&body.params%5B1%5D=erc20&body.params%5B2%5D.pageKey=&body.params%5B2%5D.maxCount=100)_!_

<CodeSnippet
  language="bash"
  code={`curl --request POST \\\\
     --url <https://eth-mainnet.g.alchemy.com/v2/{apiKey}> \\\\
     --header 'accept: application/json' \\\\
     --header 'content-type: application/json' \\\\
     --data '
{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "alchemy_getTokenBalances",
  "params": [
    "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
  ]
}
'`}
/>
### Example response:
<CodeSnippet
  language="json"
  code={`{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "address": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
    "tokenBalances": [
      {
        "contractAddress": "0x000000000000e63d2c9c29d3edf6efb99071f92c",
        "tokenBalance": "0x00000000000000000000000000000000000000000000001b1ae4d6e2ef500000"
      },
      {
        "contractAddress": "0x00000000002514bf58ae82408e1e217f16a1dfa0",
        "tokenBalance": "0x000000000000000000000000000000000000000000002a5a058fc295ed000000"
      },
      ...
    ]
  }
}`}
/>
### Fetching token metadata
Docs: [https://www.alchemy.com/docs/data/token-api/token-api-endpoints/alchemy-get-token-metadata](https://www.alchemy.com/docs/data/token-api/token-api-endpoints/alchemy-get-token-metadata)

### SimpleHash request \(old\)
<CodeSnippet
  language="bash"
  code={`curl -X GET "<https://api.simplehash.com/api/v0/token/metadata?contract_address=0x...&chain=ethereum>" \\\\
  -H "Authorization: Bearer YOUR_SIMPLEHASH_KEY"`}
/>
### Alchemy request \(new - JSON-rpc\)
_Try it out _[here](https://sandbox.alchemy.com/?network=ETH_MAINNET&method=alchemy_getTokenMetadata&body.id=1&body.jsonrpc=2.0&body.method=alchemy_getTokenMetadata&body.params%5B0%5D=0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48)_!_

<CodeSnippet
  language="bash"
  code={`curl --request POST \\\\
     --url <https://eth-mainnet.g.alchemy.com/v2/docs-demo> \\\\
     --header 'accept: application/json' \\\\
     --header 'content-type: application/json' \\\\
     --data '
{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "alchemy_getTokenMetadata",
  "params": [
    "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
  ]
}`}
/>
### Example response:
<CodeSnippet
  language="json"
  code={`{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "decimals": 6,
    "logo": "<https://static.alchemyapi.io/images/assets/3408.png>",
    "name": "USDC",
    "symbol": "USDC"
  }
}`}
/>
## Use case 2: token prices \(prices api\)
Our [**Prices API**](https://www.alchemy.com/docs/reference/prices-api-quickstart) enables seamless migration from SimpleHash’s** DEX price** endpoint.

## Understand the differences
<EmbeddedTable
  table={{
    columns: [
      { key: "1", width: 200, title: "Feature", dataType: "object" },
      { key: "2", width: 200, title: "SimpleHash", dataType: "object" },
      { key: "3", width: 200, title: "Alchemy Prices API", dataType: "object" },
    ],
    data: [
      {
        "1": { title: "<p>Real-time token prices</p>", tooltip: "", icon: "" },
        "2": { title: true, tooltip: "", icon: "" },
        "3": { title: true, tooltip: "", icon: "" },
        id: 0,
      },
      {
        "1": { title: "<p>Historical prices</p>", tooltip: "", icon: "" },
        "2": { title: false, tooltip: "", icon: "" },
        "3": { title: true, tooltip: "", icon: "" },
        id: 1,
      },
      {
        "1": { title: "<p>Batch requests (multiple tokens at once)</p>", tooltip: "", icon: "" },
        "2": { title: "<p>Up to 50 tokens per call</p>", tooltip: "", icon: "" },
        "3": { title: "<p>Supported</p>", tooltip: "", icon: "" },
        id: 2,
      },
      {
        "1": { title: "<p>DEX-specific prices</p>", tooltip: "", icon: "" },
        "2": { title: "<p>Yes (from Uniswap, etc.)</p>", tooltip: "", icon: "" },
        "3": { title: "<p>Coming Soon! Reach out if this is critical.</p>", tooltip: "", icon: "" },
        id: 3,
      },
      {
        "1": { title: "<p>Supported Chains</p>", tooltip: "", icon: "" },
        "2": { title: "<p>Multiple chains</p>", tooltip: "", icon: "" },
        "3": { title: "<p>Multiple chains (including all top chains)</p>", tooltip: "", icon: "" },
        id: 4,
      },
    ],
  }}
/>

📌 **Key Update:** Alchemy aggregates data from various reputable sources, providing a holistic view of token prices. If you specifically need **DEX-sourced prices**, reach out! We’re actively exploring how to support this and would love your feedback.

### Fetching real-time prices for multiple tokens
### SimpleHash request \(old\)
<CodeSnippet
  language="bash"
  code={`curl -X GET "<https://api.simplehash.com/api/v0/prices/fungible?token_ids=ethereum:0x>...,ethereum:0x..." \\\\
  -H "Authorization: Bearer YOUR_SIMPLEHASH_KEY"`}
/>
### Alchemy request \(new\)
<CodeSnippet
  language="bash"
  code={`curl --request GET \\\\
     --url '<https://api.g.alchemy.com/prices/v1/{api-key}/tokens/by-symbol?symbols=ETH&symbols=BTC>' \\\\
     --header 'accept: application/json'`}
/>
### Example response:
<CodeSnippet
  language="json"
  code={`{
  "data": [
    {
      "symbol": "ETH",
      "prices": [
        {
          "currency": "usd",
          "value": "2304.5082988224",
          "lastUpdatedAt": "2025-02-26T19:16:14Z"
        }
      ]
    },
    {
      "symbol": "BTC",
      "prices": [
        {
          "currency": "usd",
          "value": "84614.0666993729",
          "lastUpdatedAt": "2025-02-26T19:16:21Z"
        }
      ]
    }
  ]
}`}
/>
### **Fetching historical prices** \(🚀 **new in Alchemy!**\)

Docs: [https://www.alchemy.com/docs/data/prices-api/prices-api-endpoints/prices-api-endpoints/get-historical-token-prices](https://www.alchemy.com/docs/data/prices-api/prices-api-endpoints/prices-api-endpoints/get-historical-token-prices)

📌 **Alchemy supports historical price data \(not available in SimpleHash\).**

### Alchemy request:
<CodeSnippet
  language="bash"
  code={`curl --request POST \\\\
     --url <https://api.g.alchemy.com/prices/v1/{api-key}/tokens/historical> \\\\
     --header 'accept: application/json' \\\\
     --header 'content-type: application/json' \\\\
     --data '
{
  "symbol": "ETH",
  "startTime": "2024-01-01T00:00:00Z",
  "endTime": "2024-01-31T23:59:59Z",
  "interval": "1d"
}
'`}
/>
### Example response:
<CodeSnippet
  language="json"
  code={`{
  "symbol": "ETH",
  "currency": "usd",
  "data": [
    {
      "value": "2279.941008569",
      "timestamp": "2024-01-01T00:00:00Z"
    },
    {
      "value": "2350.0262860085",
      "timestamp": "2024-01-02T00:00:00Z"
    },
    {
      "value": "2360.7821195891",
      "timestamp": "2024-01-03T00:00:00Z"
    },
    ...
  ]
}`}
/>
## Start your migration to Alchemy
We understand migrating services can be complex, but **we are here to make it easy** with dedicated support, feature parity, and expanded capabilities.

**👋 If there’s a feature you need, let us know!** Contact via [this email](mailto: data-services-product@alchemy.com) or dm us on telegram @mihiralchemy.

## Frequently asked questions

### Why is migration from SimpleHash necessary?

SimpleHash is sunsetting its services on March 27, 2025, requiring users to migrate fungible token data to alternative providers.

### What fungible token capabilities do we provide?

We provide real-time balances for ERC-20 and other tokens, token metadata (name, symbol, decimals, contract address), and multi-chain support for all major blockchains.

### How do I fetch token balances?

Use a POST request to `https://eth-mainnet.g.alchemy.com/v2/{apiKey}` with the `alchemy_getTokenBalances` method, passing the wallet address in the params.

### How do I get token metadata?

Use a POST JSON-RPC call to `alchemy_getTokenMetadata` with the contract address, which returns decimals, name, symbol, and logo information.

### Do you support token pricing like SimpleHash did?

Yes, our Prices API provides real-time token prices by making GET requests to `https://api.g.alchemy.com/prices/v1/{api-key}/tokens/by-symbol` with token symbols as parameters.

### What's the difference between SimpleHash and our price data sources?

We aggregate data from various reputable sources for a holistic view, while SimpleHash focused on DEX-sourced prices specifically.

### Can I access historical token prices?

Yes, we support historical price data through POST requests to `/tokens/historical` with parameters for symbol, start/end times, and interval, a feature not available in SimpleHash.

### Where can I get help with my migration?

Contact data-services-product@alchemy.com with any questions or feature requests, or reach out via Telegram @mihiralchemy for migration support.
