> ## Documentation Index
> Fetch the complete documentation index at: https://docs.saucerswap.finance/llms.txt
> Use this file to discover all available pages before exploring further.

# Check if a Pool Exists

> Check if the liquidity pool for a pair of HTS tokens exists on-chain

When adding a new or existing liquidity pool, the initial step is typically to verify if the liquidity pool already exists before determining the next course of action. The factory contract provides a method to retrieve the pool address, if it exists, as shown below.

<Tip>
  Checking if the liquidity pool exists using SaucerSwap's REST API is also a suitable alternative. For more information, see [Get V1 liquidity pools](/v/developer/saucerswap-v1/liquidity-operations/fetch-all-pools)
</Tip>

## Get the Existing Liquidity Pool if it Exists

⛽ *No gas cost*

Get the existing liquidity pool's CREATE2 EVM address if it exists. If the pool does not exist on-chain, a zero address will be returned.

Function name: **getPair**

| Parameter Name   | Description                     |
| ---------------- | ------------------------------- |
| *address tokenA* | EVM address of the first token  |
| *address tokenB* | EVM address of the second token |

<CodeGroup>
  ```solidity IUniswapV2Factory.sol theme={null}
  function getPair(
    address tokenA,
    address tokenB
  ) external view returns (address pair);
  ```
</CodeGroup>

<Note>
  The ordering of tokens for tokenA and tokenB does not matter.
</Note>

<Tip>
  When working with HBAR, use the wrapped HBAR token ID ([WHBAR](https://hashscan.io/mainnet/token/0.0.1456986)) for either tokenA or tokenB.
</Tip>

### Code Overview

<Tabs>
  <Tab title="JSON RPC">
    **Resources:**

    * [SaucerSwap deployed contract IDs](/developerx/contract-deployments)
    * [Ethers.js docs (v6)](https://docs.ethers.org/v6/)
    * [Hedera JSON RPC Relay](https://docs.hedera.com/hedera/core-concepts/smart-contracts/deploying-smart-contracts/json-rpc-relay)

    ```typescript Typescript theme={null}
    import * as ethers from 'ethers'; //V6

    //Set one of Hedera's JSON RPC Relay as the provider
    const provider = new ethers.JsonRpcProvider(hederaJsonRelayUrl, '', {
      batchMaxCount: 1, //workaround for V6
    });

    //load ABI data containing the Factory's getPair function
    const interfaces = new ethers.Interface(abi);

    const factoryContract = new ethers.Contract(factoryEvmAddress, interfaces.fragments, provider);
    const result = await factoryContract.getPair(tokenA, tokenB); //(tokenB, tokenA) will give same result
    const poolEvmAddress = result; //address pool
    ```
  </Tab>
</Tabs>

###
