# Get Pool by Token Addresses

Liquidity Pools are smart contract based vaults that are associated with specific <mark style="color:yellow;">liquidity token pairs</mark>. With SHYFT's GraphQL APIs, we can query Liquidity Pools based on the tokens associated with them for Meteora DLMM. The liquidity pairs are denoted by the following fields: `tokenXMint` and `tokenYMint`.

You can directly copy paste the following on <mark style="color:yellow;">replit</mark> and see it in action.

#### Fetch Pool for a Liquidity Pair (SOL-USDC)

{% tabs %}
{% tab title="Code Snippet" %}
{% code overflow="wrap" %}

```javascript
async function getLBPairByTokenPair(tokenAddressX, tokenAddressY) {
  const SHYFT_API_KEY = "YOUR_SHYFT_API_KEY";
  //get Pools involving a specific liquidity pair
  const operationsDoc = `
	query MyQuery {
		meteora_dlmm_LbPair(
		where: {tokenXMint: {_in: ${JSON.stringify([tokenAddressX, tokenAddressY])}}, tokenYMint: {_in: ${JSON.stringify([tokenAddressX, tokenAddressY])}}}
		) {
			activationPoint
                        activationType
                        activeId
                        baseKey
                        binStep
                        creator
                        creatorPoolOnOffControl
                        lastUpdatedAt
                        oracle
                        padding4
                        pairType
                        parameters
                        preActivationDuration
                        preActivationSwapAddress
                        protocolFee
                        requireBaseFactorSeed
                        reserveX
                        reserveY
                        status
                        tokenMintXProgramFlag
                        tokenMintYProgramFlag
                        tokenXMint
                        tokenYMint
		}
	}
`; //you can cherrypick the fields as per your requirement
  const result = await fetch(
    `https://programs.shyft.to/v0/graphql/accounts?api_key=${SHYFT_API_KEY}&network=mainnet-beta`, //SHYFT's GQL endpoint
    {
      method: "POST",
      body: JSON.stringify({
        query: operationsDoc,
        variables: {},
        operationName: "MyQuery",
      }),
    }
  );

  const { errors, data } = await result.json();

  console.dir(data, { depth: null });
}
getLBPairByTokenPair("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", "So11111111111111111111111111111111111111112");
//fetching Pools for SOL-USDC pair
```

{% endcode %}
{% endtab %}

{% tab title="Response" %}

```json
{
  "data": {
    "meteora_dlmm_LbPair": [
      {
        "_lamports": 7182720,
        "activationSlot": 0,
        "activeId": -2220,
        "baseKey": "11111111111111111111111111111111",
        "binStep": 10,
        "feeOwner": "6WaLrrRfReGKBYUSkmx2K6AuT21ida4j8at2SUiZdXu8",
        "lastUpdatedAt": 0,
        "maxSwappedAmount": 0,
        "oracle": "4zmHnG4DD693gSrojYKwzAHNG1YKydBXK2oVdxypBC7B",
        "pairType": 0,
        "protocolFee": {
          "amountX": "0",
          "amountY": "0"
        },
        "reserveX": "Dp7VdsZ2N6sxsrezjt1EMHkELBfaAYSVJXVR753zdYJV",
        "reserveY": "CZULKXqq1fPYs8xwQGMamZm1pHH5nVnRZzmm5RLnQ33r",
        "status": 0,
        "swapCapDeactivateSlot": 0,
        "tokenXMint": "So11111111111111111111111111111111111111112",
        "tokenYMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
      },
      {
        "_lamports": 7182720,
        "activationSlot": 0,
        "activeId": -258,
        "baseKey": "11111111111111111111111111111111",
        "binStep": 80,
        "feeOwner": "6WaLrrRfReGKBYUSkmx2K6AuT21ida4j8at2SUiZdXu8",
        "lastUpdatedAt": 0,
        "maxSwappedAmount": 0,
        "oracle": "FU4BG5pwU77dFecQ5t7sd3jsdEgwiWEyxqCfufJK4HVa",
        "pairType": 0,
        "protocolFee": {
          "amountX": "0",
          "amountY": "0"
        },
        "reserveX": "CN8k1PtzJz2mGGdf5puwV14Dh1skMRkT42sSvhesf3nT",
        "reserveY": "4FkX872Wbo6NK7eNEmMnDRMJnwbu6tQsE6utb5fbDbzv",
        "status": 0,
        "swapCapDeactivateSlot": 0,
        "tokenXMint": "So11111111111111111111111111111111111111112",
        "tokenYMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
      },
      {
        "_lamports": 9393934,
        "activationSlot": 0,
        "activeId": -1282,
        "baseKey": "11111111111111111111111111111111",
        "binStep": 16,
        "feeOwner": "6WaLrrRfReGKBYUSkmx2K6AuT21ida4j8at2SUiZdXu8",
        "lastUpdatedAt": 0,
        "maxSwappedAmount": 0,
        "oracle": "HQQU6RBgoJqtCW26FSkwanSnxQgYfkxUEcFRR1ThU3Me",
        "pairType": 0,
        "protocolFee": {
          "amountX": "0",
          "amountY": "0"
        },
        "reserveX": "5Ys4iNr3MVhXYdtoHtCjcYvMq34MjnkFynaxNihy71M4",
        "reserveY": "2GHtKmEEEX2vwqD3btyNUUibhE3DvowojCpLH178t7Pk",
        "status": 0,
        "swapCapDeactivateSlot": 0,
        "tokenXMint": "So11111111111111111111111111111111111111112",
        "tokenYMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
      }
    ] //response shortened for visibility
  }
}
```

{% endtab %}
{% endtabs %}

#### Fetch Pool for a particular Token (USDC)

{% tabs %}
{% tab title="Code Snippet" %}
{% code overflow="wrap" %}

```javascript
async function getLBPairBySingleToken(tokenAddress) {
  const SHYFT_API_KEY = "YOUR_SHYFT_API_KEY";
  //get all Lb Pairs for meteora DLMM
  const operationsDoc = `
	query MyQuery {
		meteora_dlmm_LbPair(
		where: {_or: [{_or: {tokenXMint: {_eq: ${JSON.stringify(
        tokenAddress
      )}}}}, {_or: {tokenYMint: {_eq: ${JSON.stringify(tokenAddress)}}}}]}
			) {
			oracle
			pairType
			reserveX
			reserveY
			status
			tokenXMint
			tokenYMint
			lastUpdatedAt
			}
		}
	`; //you can cherrypick the fields as per your requirement
  const result = await fetch(
    `https://programs.shyft.to/v0/graphql/accounts?api_key=${SHYFT_API_KEY}&network=mainnet-beta`, //SHYFT's GQL endpoint
    {
      method: "POST",
      body: JSON.stringify({
        query: operationsDoc,
        variables: {},
        operationName: "MyQuery",
      }),
    }
  );

  const { errors, data } = await result.json();

  console.dir(data, { depth: null });
}
getLBPairBySingleToken("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v");
//getting pools involving USDC token
```

{% endcode %}
{% endtab %}

{% tab title="Response" %}

```javascript
{
  meteora_dlmm_LbPair: [
    {
      oracle: '4BndseYHGHfcL18oHV8Hamepk2vofdZMDdhNN93txadi',
      pairType: 0,
      reserveX: 'GzSch1VS18FJkczU3CW8Q4TkkoybX78pcj4Hr5XgUoXW',
      reserveY: '86VTDEiFyXupcd2rgH8RjWcvUxXwti32HHdm5FBMfvYi',
      status: 0,
      tokenXMint: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
      tokenYMint: 'A53BzB7297SXdF6mguQQ8kzqjVYt8pUeHW5m1i8pD6hf',
      lastUpdatedAt: 0
    },
    {
      oracle: 'Dw1cNqaZMLPZmgP4uAVUr3kG2EXeWqYTHpamHjYv5URq',
      pairType: 0,
      reserveX: '6c5aeVQH5EpzBh7cGt53AZSZCZaXYfQcJSFHugiqu2gA',
      reserveY: 'ByBUUpfBDviPKht1xAqGFiHUWkMSnfJBi3Xdg3osBme',
      status: 0,
      tokenXMint: 'EjmDTt8G3T725eFSV7oWmGD8J848guo3LZ1EB3RfwGSw',
      tokenYMint: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
      lastUpdatedAt: 0
    },
    {
      oracle: 'HxYW48yPED3dLfYYmWYCNYg4BKQpbGmEYPCZniMcrPhi',
      pairType: 0,
      reserveX: '2t4WCon8dNMv9WzqYuUs4eW8biFgrk7VXEqDyJfcds7i',
      reserveY: 'GktHQ6h4tGvFuc6m9M4gjCXoPnv76PmMSw83xYQ15GTy',
      status: 0,
      tokenXMint: '25hAyBQfoDhfWx9ay6rarbgvWGwDdNqcHsXS3jQ3mTDJ',
      tokenYMint: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
      lastUpdatedAt: 0
    }
  ] //response shortend for visibility
}
```

{% endtab %}
{% endtabs %}

Please note that the above query fetches all pools involving USDC as tokenXMint as well as tokenYMint in a single GraphQL request.
