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

# Get Pool Reserves

> Get current reserves for one or many pools

Below are the common methods to get the current liquidity reserves:

* [Get a pool reserves via REST API](/v/developer/saucerswap-v1/liquidity-operations/get-pool-reserves#get-pool-reserves-via-rest-api)
* [Get a pool reserves via JSON RPC](/v/developer/saucerswap-v1/liquidity-operations/get-pool-reserves#get-pool-reserves-via-json-rpc)

<Tip>
  Getting the reserves data for a liquidity pool using SaucerSwap's REST API is also a suitable alternative. For more information, see [Get liquidi](/v/developer/saucerswap-v1/liquidity-operations/get-pool-reserves)[ty pool reserves (V1)](/v/developer/saucerswap-v1/liquidity-operations/get-pool-reserves). The pool metadata includes the reserve data.
</Tip>

<Tip>
  To track updates to liquidity pool reserves in near real-time, see [Track LP updates (V1)](/v/developer/saucerswap-v1/liquidity-operations/track-pool-updates).
</Tip>

## Get Pool Reserves via REST API

Fetch all HTS token balances for a pool via Mirror Node's REST API.

### Code Overview

<Tabs>
  <Tab title="REST API">
    **Resources:**

    * [SaucerSwap deployed contract IDs](/developerx/contract-deployments)
    * [Hedera REST API](https://docs.hedera.com/hedera/sdks-and-apis/rest-api)

    ```typescript Typescript theme={null}
    const apiUrl = `/api/v1/accounts/${poolContractId}/tokens`;  
    const response = await axios.get(`${mirrorNodeBaseUrl}${apiUrl}`);
    const tokens = response.data.tokens;

    for (const token of tokens ) {
      console.log(`Token id: ${token.token_id}, Reserve: ${token.balance}`);
    }
    ```
  </Tab>
</Tabs>

***

## Get Pool Reserves via JSON RPC

Fetch all HTS token balances for a pool using the getReserves() solidity function via Mirror Node's JSON RPC Relay.

Function name: **getReserves**

⛽ *No gas cost*

<CodeGroup>
  ```solidity IUniswapV2Pair.sol theme={null}
  function getReserves() external view returns (
    uint112 reserve0, 
    uint112 reserve1, 
    uint32 blockTimestampLast
  );
  ```

  ```solidity UniswapV2Pair.sol theme={null}
  function getReserves()
    public
    view
    returns (
      uint112 _reserve0,
      uint112 _reserve1,
      uint32 _blockTimestampLast
    )
  {
    _reserve0 = reserve0;
    _reserve1 = reserve1;
    _blockTimestampLast = blockTimestampLast;
  }
  ```
</CodeGroup>

### 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 Pair's getReserves() function
    const interfaces = new ethers.Interface(abi);

    const poolContract = new ethers.Contract(poolAddress, interfaces.fragments, provider);
    const result = await poolContract.getReserves();
    const reserve0 = result.reserve0; //in token's smallest unit
    const reserve1 = result.reserve1; //in token's smallest unit
    const block = result.blockTimestampLast;
    ```
  </Tab>
</Tabs>
