Get Stakes for a Wallet

Fetch all stake accounts for a wallet.

Given a wallet address, you can easily find out how much Sol has been staked to which voter/validator.

Here's a code snippet which you can directly run in replit to see it in action.


const SHYFT_KEY = "YOUR-KEY"

async function fetchGraphQL(query, name, variables) {
  const result = await fetch(
    `https://programs.shyft.to/v0/graphql/?api_key=${SHYFT_KEY}`,
    {
      method: "POST",
      body: JSON.stringify({
        query: query,
        variables: variables,
        operationName: name
      })
    }
  );

  return await result.json();
}

async function fetchStakes(wallet:string) {

const query = `
  query StakesQuery($_contains: jsonb = "") {
    Stake_Program_Stake(where: {meta: {_contains: $_contains}}) {
      _lamports
      meta
      stake
      pubkey
    }
  }
`;

  const variables = {
    _contains: {
      authorized: {
        staker: "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM"
      }
    }
  }

  const { errors, data } = await fetchGraphQL(
    query,
    "StakesQuery",
    variables
  );

  if (errors) {
    // handle those errors like a pro
    console.error(errors);
  }

  // do something great with this precious data
  console.log(data);
}

fetchStakes("9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM");

Last updated