♦️NFT

Learn how to fetch NFT holders of a specific NFT and NFT collection(s) and how to use the same query to check whether a given user holds a specific NFT collection.

Airstack provides easy-to-use NFT APIs for enriching Web3 applications with onchain and offchain NFT 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.

Get NFT Holder(s) of A Specific NFT

You can use Airstack to fetch NFT holder(s) of a specifc NFT on Ethereum, Base, Zora, or other Airstack-supported chains by using the TokenBalances API and providing the NFT collection address(es) to tokenAddress and the token ID to tokenId as an input:

For ERC721 NFT, there's only 1 unique holder for each token ID.

For ERC1155 NFT, there can be multiple holders for a token ID.

Try Demo

Show me holder of @BoredApeYachtClub token ID 6891

Code

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

Get NFT Holders of NFT Collection(s)

You can use Airstack to fetch NFT holders of a given NFT collection(s) on Ethereum, Base, Zora, or other Airstack-supported chains by using the TokenBalances API and providing the NFT collection address(es) to tokenAddress input:

Try Demo

Show me holders of @BoredApeYachtClub

Code

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

Check If User Hold A Specific NFT Collection

You can use Airstack to check if a user hold a given NFT Collection on Ethereum, Base, Zora, or other Airstack-supported chains by using the TokenBalances API.

For inputs, provide the NFT collection 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

Check if 0x9831bb48e27a6b74260823c10d15b577e891a37b hold any @BoredApeYachtClub

Code

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

If the given user hold the specified NFT collection, 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 NFT holders data, please join our Airstack's Telegram group.

More Resources

Last updated

Was this helpful?