Skip to main content
POST
/
v1
/
pools
/
search
Search liquidity pools
curl --request POST \
  --url https://api.hydric.org/v1/pools/search \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "tokensA": [
    {
      "chainId": 1,
      "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
    },
    {
      "chainId": 1,
      "address": "0x6B175474E89094C44Da98b954EedeAC495271d0F"
    },
    {
      "chainId": 8453,
      "address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
    }
  ],
  "basketsA": [
    {
      "basketId": "usd-stablecoins",
      "chainIds": [
        1,
        8453
      ]
    }
  ],
  "tokensB": [
    {
      "chainId": 1,
      "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
    },
    {
      "chainId": 8453,
      "address": "0x4200000000000000000000000000000000000006"
    }
  ],
  "basketsB": [
    {
      "basketId": "usd-stablecoins",
      "chainIds": [
        1,
        8453
      ]
    }
  ],
  "filters": {
    "minimumTotalValueLockedUsd": 10000,
    "blockedPoolTypes": [],
    "blockedProtocols": [],
    "protocols": [],
    "poolTypes": []
  },
  "config": {
    "limit": 10,
    "orderBy": {
      "field": "tvl",
      "direction": "desc",
      "timeframe": "24h"
    },
    "cursor": "",
    "parseWrappedToNative": "AUTO",
    "useWrappedForNative": true
  }
}
'
{
  "statusCode": 200,
  "timestamp": "2026-01-11T00:00:00.000Z",
  "path": "/pools",
  "traceId": "req_123abc",
  "data": {
    "pools": [
      {
        "address": "0x8ad599c3a01ae48104127aeeb893430d0bc41221",
        "tokens": [
          {
            "chainId": 1,
            "address": "0x0000000000000000000000000000000000000000",
            "decimals": 18,
            "name": "Ether",
            "symbol": "ETH",
            "logoUrl": "https://cdn.jsdelivr.net/gh/atomiclabs/cryptocurrency-icons@1a63530be6e374711a8554f31b17e4cb92c25fa5/128/color/eth.png"
          },
          {
            "chainId": 1,
            "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
            "decimals": 18,
            "name": "USDC",
            "symbol": "USDC",
            "logoUrl": "https://cdn.jsdelivr.net/gh/atomiclabs/cryptocurrency-icons@1a63530be6e374711a8554f31b17e4cb92c25fa5/128/color/usdc.png"
          }
        ],
        "balance": {
          "totalValueLockedUsd": 3001.32,
          "tokens": [
            {
              "amount": 1,
              "amountUsd": 1500.11,
              "token": {
                "chainId": 1,
                "address": "0x0000000000000000000000000000000000000000",
                "decimals": 18,
                "name": "Ether",
                "symbol": "ETH",
                "logoUrl": "https://cdn.jsdelivr.net/gh/atomiclabs/cryptocurrency-icons@1a63530be6e374711a8554f31b17e4cb92c25fa5/128/color/eth.png"
              }
            },
            {
              "amount": 1500.11,
              "amountUsd": 1501.21,
              "token": {
                "chainId": 1,
                "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
                "decimals": 18,
                "name": "USDC",
                "symbol": "USDC",
                "logoUrl": "https://cdn.jsdelivr.net/gh/atomiclabs/cryptocurrency-icons@1a63530be6e374711a8554f31b17e4cb92c25fa5/128/color/usdc.png"
              }
            }
          ]
        },
        "chainId": 1,
        "createdAtTimestamp": 1768429616,
        "feeTier": {
          "feeTierPercentage": 0.4,
          "isDynamic": false
        },
        "type": "V3",
        "stats": {
          "stats24h": {
            "feesUsd": 12450.55,
            "swapVolumeUsd": 4124500.22,
            "yield": 12.5,
            "netInflowUsd": 450000,
            "liquidityVolumeUsd": 120000
          },
          "stats7d": {
            "feesUsd": 85400.12,
            "swapVolumeUsd": 28450100.45,
            "yield": 11.2,
            "netInflowUsd": 1200000,
            "liquidityVolumeUsd": 850000
          },
          "stats30d": {
            "feesUsd": 345200.55,
            "swapVolumeUsd": 115045000.11,
            "yield": 10.8,
            "netInflowUsd": 5400000,
            "liquidityVolumeUsd": 3200000
          },
          "stats90d": {
            "feesUsd": 1120400.88,
            "swapVolumeUsd": 375200400.55,
            "yield": 10.5,
            "netInflowUsd": 12500000,
            "liquidityVolumeUsd": 9800000
          }
        },
        "protocol": {
          "id": "uniswap-v3",
          "logoUrl": "https://cryptologos.cc/logos/uniswap-uni-logo.png",
          "name": "Uniswap V3",
          "url": "https://app.uniswap.org"
        },
        "metadata": {
          "latestSqrtPriceX96": "1564073352721610496185854744476",
          "tickSpacing": 60,
          "latestTick": "201235",
          "positionManagerAddress": "0xC36442b4a4522E871399CD717aBDD847Ab11FE88"
        }
      }
    ],
    "filters": {
      "blockedPoolTypes": [
        "V3"
      ],
      "blockedProtocols": [
        "uniswap-v3"
      ],
      "minimumTotalValueLockedUsd": 10000,
      "protocols": [],
      "poolTypes": []
    },
    "nextCursor": "Y3Vyc29yXzE2NjMwMDAwMDA="
  }
}

Authorizations

Authorization
string
header
required

Use the docs sandbox API key for authentication: hydric_docs_4N4ocuirsN8Sh

Body

application/json

Search criteria and pagination config.

tokensA
object[]

Primary set of token addresses. The search engine returns pools containing at least one of these tokens.

  • Single Token Search: Provide 'tokensA' and omit 'tokensB' (or alternatively use 'basketsA').
  • Pair Search: Used in conjunction with 'tokensB' or 'basketsB'.
  • Note: Token ordering does not affect search results.
Example:
[
{
"chainId": 1,
"address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
},
{
"chainId": 1,
"address": "0x6B175474E89094C44Da98b954EedeAC495271d0F"
},
{
"chainId": 8453,
"address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
}
]
basketsA
object[]

Primary set of token baskets. The search engine automatically resolves these baskets into tokens server-side. Returns pools containing at least one token from any of the provided baskets.

  • Behaviour: This joins with tokensA, so if you pass tokensA and basketsA, the search engine will return pools containing at least one token from tokensA OR at least one token from basketsA.
  • Note: Either 'tokensA' or 'basketsA' must be provided.
tokensB
object[]

Secondary set of token identifiers used to narrow the search to specific pairs.

  • Relationship: Returns pools containing (one token from 'tokensA'/'basketsA') AND (one token from 'tokensB'/'basketsB').
  • Broad Search: If omitted, the search returns any pool containing a token from 'tokensA'/'basketsA'.
  • Note: Evaluation is order-independent.
Example:
[
{
"chainId": 1,
"address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
},
{
"chainId": 8453,
"address": "0x4200000000000000000000000000000000000006"
}
]
basketsB
object[]

Secondary set of token baskets used to narrow the search to specific pairs. This cannot be used alone, needs either tokensA or basketsA.

  • Relationship: Returns pools that contain at least one token from 'tokensA'/'basketsA' AND at least one token from 'tokensB'/'basketsB'.
filters
object

Filters based on pool attributes like TVL and protocol types.

Example:
{
"minimumTotalValueLockedUsd": 10000,
"blockedPoolTypes": [],
"blockedProtocols": [],
"protocols": [],
"poolTypes": []
}
config
object

Configuration for the search such as limit, cursor, etc.

Response

Successfully retrieved a list of matching liquidity pools.

Global Success Response that every endpoint returns if the request was successful (not errors).

statusCode
number
required

HTTP status code.

Example:

200

timestamp
string
required

ISO 8601 Timestamp.

Example:

"2026-01-11T00:00:00.000Z"

path
string
required

Request Path.

Example:

"/pools"

traceId
string
required

Unique Trace ID for observability.

Example:

"req_123abc"

data
object
required

The requested data payload.