# 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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.shyft.to/solana-indexers/case-studies/meteora/get-pool-by-token-addresses.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
