πŸ—οΈERC20 Holders

Learn how to fetch ERC20 token holders of a specific contract address(es) and how to use the same query to check whether a given user holds a specific ERC20 token.

Airstack provides easy-to-use ERC20 token APIs for enriching Web3 applications with onchain and offchain ERC20 token data from Ethereum, Base, Degen Chain, and other Airstack-supported chains.

Table Of Contents

In this guide you will learn how to use Airstack to:

Pre-requisites

  • An Airstack account

  • Basic knowledge of GraphQL

Get Started

JavaScript/TypeScript/Python

If you are using JavaScript/TypeScript or Python, Install the Airstack SDK:

React

npm install @airstack/airstack-react

Node

npm install @airstack/node

Then, add the following snippets to your code:

import { init, useQuery } from "@airstack/airstack-react";

init("YOUR_AIRSTACK_API_KEY");

const query = `YOUR_QUERY`; // Replace with GraphQL Query

const Component = () => {
  const { data, loading, error } = useQuery(query);

  if (data) {
    return <p>Data: {JSON.stringify(data)}</p>;
  }

  if (loading) {
    return <p>Loading...</p>;
  }

  if (error) {
    return <p>Error: {error.message}</p>;
  }
};

Other Programming Languages

To access the Airstack APIs in other languages, you can use https://api.airstack.xyz/gql as your GraphQL endpoint.

πŸ€– AI Natural Language​

Airstack provides an AI solution for you to build GraphQL queries to fulfill your use case easily. You can find the AI prompt of each query in the demo's caption or title for yourself to try.

Get ERC20 Token Holders

You can use Airstack to fetch ERC20 token holders of a given contract address(es) by using the TokenBalances API and providing the token contract address(es) to tokenAddress input:

Try Demo

Code

query MyQuery {
  TokenBalances(
    input: {
      filter: {
        tokenAddress: { _in: ["0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"] }
      }
      blockchain: ethereum
      limit: 200
    }
  ) {
    TokenBalance {
      owner {
        addresses
        domains {
          name
          isPrimary
        }
        socials {
          dappName
          profileName
          userAssociatedAddresses
        }
        xmtp {
          isXMTPEnabled
        }
      }
    }
    pageInfo {
      nextCursor
      prevCursor
    }
  }
}

Check If User Hold A Specific ERC20 Token

You can use Airstack to check if a user hold a given ERC20 token by using the TokenBalances API.

For inputs, provide the token contract address(es) to tokenAddress and user's 0x address, ENS domain, cb.id, Lens profile, or Farcaster fname/fid to owner as an input:

Try Demo

Code

query MyQuery {
  TokenBalances(
    input: {
      filter: {
        tokenAddress: { _eq: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" }
        owner: { _eq: "0xdef1c0ded9bec7f1a1670819833240f027b25eff" }
      }
      blockchain: ethereum
    }
  ) {
    TokenBalance {
      owner {
        addresses
        domains {
          name
          isPrimary
        }
        socials {
          dappName
          profileName
          userAssociatedAddresses
        }
        xmtp {
          isXMTPEnabled
        }
      }
    }
  }
}

If the given user hold the specified ERC20 token, then TokenBalances will have non-null value as a response. Otherwise, the API will return null.

Developer Support

If you have any questions or need help regarding fetching ERC20 holders data, please join our Airstack's Telegram group.

More Resources

Last updated

Was this helpful?