Get Pool Burn Percentage

Get percentage of LP burnt/locked for a given pool

Often people want to check how much LP has been burned for a particular liquidity pool or a token. We can see how easy it is to fetch this info with GraphQL APIs. We will be needing RPC here as well.

import { gql, GraphQLClient } from "graphql-request";
import * as solana from '@solana/web3.js';

const gqlEndpoint = ``;
const rpcEndpoint = ``

const graphQLClient = new GraphQLClient(gqlEndpoint, {
  method: `POST`,
  jsonSerializer: {
    parse: JSON.parse,
    stringify: JSON.stringify,

const connection = new solana.Connection(rpcEndpoint);

async function queryLpMintInfo(address: string) {
  // See how we are only querying what we need
  const query = gql`
    query MyQuery ($where: Raydium_LiquidityPoolv4_bool_exp) {
    where: $where
  ) {

  const variables = {
    where: {
      pubkey: {
        _eq: address,

  return await graphQLClient.request(query, variables);

This is taken from Raydium's FE code
function getBurnPercentage(lpReserve: number, actualSupply: number): number {
  const maxLpSupply = Math.max(actualSupply, (lpReserve - 1));
  const burnAmt = (maxLpSupply - actualSupply)
  console.log(`burn amt: ${burnAmt}`)
  return (burnAmt / maxLpSupply) * 100;

//This is Jup-Sol pool addres
const info = await queryLpMintInfo("7RJ5qmsgmvUKK5QtCLT9qHpQMegkiULppHRBNuWso12E");
const lpMint = info.Raydium_LiquidityPoolv4[0].lpMint

//Once we have the lpMint address, we need to fetch the current token supply and decimals
const parsedAccInfo = await connection.getParsedAccountInfo(new solana.PublicKey(lpMint));
const mintInfo = parsedAccInfo?.value?.data?.parsed?.info

//We divide the values based on the mint decimals
const lpReserve = info.Raydium_LiquidityPoolv4[0].lpReserve / Math.pow(10, mintInfo?.decimals)
const actualSupply = mintInfo?.supply / Math.pow(10, mintInfo?.decimals)
console.log(`lpMint: ${lpMint}, Reserve: ${lpReserve}, Actual Supply: ${actualSupply}`);

//Calculate burn percentage
const burnPct = getBurnPercentage(lpReserve, actualSupply)
console.log(`${burnPct} LP burned`);

In order to find LP burned for a token, instead of fetching by pool's pubkey you can fetch pools by baseMint, and then follow the above outlined approach.

Get Pools By Token Address

Last updated