> For the complete documentation index, see [llms.txt](https://docs.aqua.network/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.aqua.network/developers/code-examples/get-pools-info.md).

# Get pools info

Every read on this page works without a signer — construct the client with a network alone. Pool data is also displayed in the app, on each pool's page.

{% hint style="info" %}
This page uses the [official SDKs](/developers/integrating-with-aquarius.md#official-sdks). For the raw read functions — `get_pools`, `get_info`, `get_reserves`, and the rest — see [Aquarius Soroban Functions](https://github.com/AquariusDeFi/gitbook-docs/tree/master/developers/aquarius-soroban-functions.md); the REST alternative is the [Backend API](/developers/reference/backend-api.md).
{% endhint %}

### Pools for a pair

{% tabs %}
{% tab title="Python" %}

```python
from aquarius import AquariusClient, Asset, XLM

AQUA = Asset.classic("AQUA", "GBNZILSTVQZ4R7IKQDGHYGY2QXL5QOFJYQMXPKWRRM5PAV7Y4M67AQUA")

aqua = AquariusClient(network="mainnet")   # reads need no signer

for pool in aqua.pools_for_pair(XLM, AQUA):
    print(pool.type, pool.fee_bps, pool.address, pool.token_labels)
```

{% endtab %}

{% tab title="JavaScript" %}

```javascript
import { AquariusClient, Asset, XLM } from "@aquariusdefi/sdk";

const AQUA = Asset.classic("AQUA", "GBNZILSTVQZ4R7IKQDGHYGY2QXL5QOFJYQMXPKWRRM5PAV7Y4M67AQUA");

const aqua = new AquariusClient({ network: "mainnet" });   // reads need no signer

for (const pool of await aqua.pools.forPair(XLM, AQUA)) {
  console.log(pool.type, pool.feeBps, pool.address, pool.tokenLabels);
}
```

{% endtab %}
{% endtabs %}

Each `Pool` carries:

| Attribute                      | Meaning                                                  |
| ------------------------------ | -------------------------------------------------------- |
| `type`                         | `volatile`, `stable`, or `concentrated`                  |
| `fee_bps` / `feeBps`           | Swap fee in basis points (30 = 0.3%)                     |
| `address`                      | The pool's contract address                              |
| `pool_hash` / `poolHash`       | The pool hash identifying it inside the router           |
| `tokens`                       | Token contract IDs, in the contract's sorted order       |
| `token_labels` / `tokenLabels` | Human-readable names, for example `native`, `AQUA:GBNZ…` |

### Reserves and share totals

{% tabs %}
{% tab title="Python" %}

```python
pool = aqua.pools_for_pair(XLM, AQUA)[0]

pool.reserves()               # base units per token, in sorted-token order
pool.total_shares()           # total pool share supply
pool.share_balance("G...")    # one account's shares
pool.pending_rewards("G...")  # one account's accrued AQUA, in stroops
```

{% endtab %}

{% tab title="JavaScript" %}

```javascript
const pool = (await aqua.pools.forPair(XLM, AQUA))[0];

await pool.reserves();               // base units per token, in sorted-token order
await pool.totalShares();            // total pool share supply
await pool.shareBalance("G...");     // one account's shares
await pool.pendingRewards("G...");   // one account's accrued AQUA, in stroops
```

{% endtab %}
{% endtabs %}

### Positions

Every pool where an account holds shares, in one call:

{% tabs %}
{% tab title="Python" %}

```python
for position in aqua.positions("G..."):
    print(position.pool.type, position.pool.fee_bps, position.shares)
```

{% endtab %}

{% tab title="JavaScript" %}

```javascript
for (const position of await aqua.positions("G...")) {
  console.log(position.pool.type, position.pool.feeBps, position.shares);
}
```

{% endtab %}
{% endtabs %}

Positions are backed by the indexer: a deposit that confirmed moments ago can take a few seconds to appear. Share amounts are read from the chain.

### The REST alternative

For dashboards and indexers that want pool data without touching the chain, the [Backend API](/developers/reference/backend-api.md) serves the same information over REST — pool lists with type and fee, an account's pools, and volume statistics. The full machine-readable spec is at [amm-api.aqua.network/api/schema/redoc](https://amm-api.aqua.network/api/schema/redoc/).
