Skip to content
Liquidity Lens

Poolscope, Pool earnings and flow analytics

API docs

Every tracked pool of a token pair with its fee model, TVL and liquidity near the price. Exact hourly fees and volumes for any pool. Each pool's flow split into aggregator, bot, organic and unclassified traffic.

Base URL https://llens.abanchev.com/api/v1. Authentication, deadlines, metering and errors are on Getting started. See the Poolscope live demo.

Example values are illustrative. Token addresses are real Base contracts; amounts are raw integer units as decimal strings.

GET/api/v1/ext/market/pair-pools

Every pool of a pair

Every tracked pool of a token pair at the latest block: DEX, family, fee model, reserves, TVL, liquidity within ±0.1 %, ±0.5 % and ±1 % of mid, and exact 7-day fees.

Cost
50 CU + 1 CU per pool
Headers
Send your key in x-api-key and a compute budget in x-compute-budget-ms (1 to 5000 ms; the example uses 2000).
QueryRequiredDescription
chainIdyes8453 (Base) or 146 (Sonic).
tokenAyesOne token of the pair.
tokenByesThe other token.
minBlocknoAnswer only from this block or later; 409 when our indexed state has not reached it yet.

inRange amounts are what the pool holds between its mid price and each band edge, computed with the pool's own price math.

curl -s "https://llens.abanchev.com/api/v1/ext/market/pair-pools?chainId=8453&tokenA=0x4200000000000000000000000000000000000006&tokenB=0x833589fcd6edb6e08f4c7c32d4f71b54bda02913" \
  -H "x-api-key: $LL_API_KEY" \
  -H "x-compute-budget-ms: 2000"
Example response
{
  "chainId": "8453",
  "sequence": "1843207",
  "blockNumber": "52914031",
  "blockHash": "0x7c1e5f0b9a2d43e8c6f1a0b7d9e2c4f6a8b0d1e3f5a7c9b2d4e6f8a0c2e4b6d8",
  "stateDigest": "4b9e0c7f2a1d3e5b8c6a9f0d2e4b7c1a3f5e8d0b2c4a6e9f1d3b5c7a0e2f4d6b",
  "blockTimestamp": "1792419821",
  "stateAgeMs": 412,
  "canonicalStable": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
  "tokenA": "0x4200000000000000000000000000000000000006",
  "tokenB": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
  "pools": [
    {
      "pool": "0xd0b53d9277642d899df5c87a3966a349a798f224",
      "dex": "Uniswap v3",
      "family": "univ3",
      "token0": "0x4200000000000000000000000000000000000006",
      "token1": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
      "decimals0": 18,
      "decimals1": 6,
      "feeModel": {
        "kind": "static",
        "feeZeroToOneBps": "5",
        "feeOneToZeroBps": "5",
        "reason": null
      },
      "reserves": {
        "amount0": "2412881934772001827733",
        "amount1": "5904127733812"
      },
      "inRange": [
        {
          "bandBps": 10,
          "amount0": "158204411902884511744",
          "amount1": "414992881403"
        },
        {
          "bandBps": 50,
          "amount0": "611930277018322041856",
          "amount1": "1602208114570"
        },
        {
          "bandBps": 100,
          "amount0": "902417730551930634240",
          "amount1": "2361830902216"
        }
      ],
      "unavailable": null,
      "tvlUsd": "12222004.28",
      "tvlUnavailable": null,
      "fees7d": {
        "fees0": "41205118930214471680",
        "fees1": "107912440912",
        "swaps": 61840,
        "computedHours": 168,
        "from": "2026-10-12T14:00:00.000Z"
      }
    },
    {
      "pool": "0xb2cc224c1c9fee385f8ad6a55b4d94e92359dc59",
      "dex": "Aerodrome Slipstream",
      "family": "slipstream",
      "token0": "0x4200000000000000000000000000000000000006",
      "token1": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
      "decimals0": 18,
      "decimals1": 6,
      "feeModel": {
        "kind": "dynamic",
        "feeZeroToOneBps": "4.5",
        "feeOneToZeroBps": "4.5",
        "reason": "current-fee-of-a-dynamic-fee-pool"
      },
      "reserves": {
        "amount0": "6120774410200019312640",
        "amount1": "14833190277418"
      },
      "inRange": [
        {
          "bandBps": 10,
          "amount0": "611207741020001931264",
          "amount1": "1600443290112"
        },
        {
          "bandBps": 50,
          "amount0": "2004113908210771443712",
          "amount1": "5247730118804"
        },
        {
          "bandBps": 100,
          "amount0": "2988201554871200563200",
          "amount1": "7824409118230"
        }
      ],
      "unavailable": null,
      "tvlUsd": "30860195.66",
      "tvlUnavailable": null,
      "fees7d": {
        "fees0": "118440271934017310720",
        "fees1": "310115288140",
        "swaps": 214411,
        "computedHours": 168,
        "from": "2026-10-12T14:00:00.000Z"
      }
    },
    {
      "pool": "0xcdac0d6c6c59727a65f871236188350531885c43",
      "dex": "Aerodrome v2",
      "family": "solidly-v2",
      "token0": "0x4200000000000000000000000000000000000006",
      "token1": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
      "decimals0": 18,
      "decimals1": 6,
      "feeModel": {
        "kind": "static",
        "feeZeroToOneBps": "30",
        "feeOneToZeroBps": "30",
        "reason": null
      },
      "reserves": {
        "amount0": "803311902117480263680",
        "amount1": "2103418877410"
      },
      "inRange": [
        {
          "bandBps": 10,
          "amount0": "401455890211304448",
          "amount1": "1051446918"
        },
        {
          "bandBps": 50,
          "amount0": "2003788201117392896",
          "amount1": "5251972011"
        },
        {
          "bandBps": 100,
          "amount0": "3994613190027460608",
          "amount1": "10490762018"
        }
      ],
      "unavailable": null,
      "tvlUsd": "4206808.20",
      "tvlUnavailable": null,
      "fees7d": {
        "fees0": "2914002711840092160",
        "fees1": "7630127440",
        "swaps": 3922,
        "computedHours": 168,
        "from": "2026-10-12T14:00:00.000Z"
      }
    }
  ]
}
GET/api/v1/ext/market/pool-hours

Hourly pool facts

Per hour with swaps: swap counts, raw volumes in and out per token, exact gross fees, the fee model used and the effective fee in bps. Registered pools add an hourly TVL and in-range sample.

Cost
50 CU
Headers
Send your key in x-api-key.
QueryRequiredDescription
chainIdyes8453 (Base) or 146 (Sonic).
poolyesPool address.
fromyesFirst hour, inclusive (ISO, hour-aligned).
tonoLast hour, at most 14 days after from.

A fee that cannot be computed exactly is null, and feeUnavailable says why. Page with nextFrom; computedThroughHour shows how far the hourly roll-up has run.

curl -s "https://llens.abanchev.com/api/v1/ext/market/pool-hours?chainId=8453&pool=0xd0b53d9277642d899df5c87a3966a349a798f224&from=2026-10-19T13:00:00Z" \
  -H "x-api-key: $LL_API_KEY"
Example response
{
  "chainId": "8453",
  "pool": "0xd0b53d9277642d899df5c87a3966a349a798f224",
  "from": "2026-10-19T13:00:00.000Z",
  "to": "2026-10-19T13:00:00.000Z",
  "computedThroughHour": "2026-10-19T13:00:00.000Z",
  "nextFrom": null,
  "rows": [
    {
      "hour": "2026-10-19T13:00:00.000Z",
      "poolId": 418221,
      "poolAddress": "0xd0b53d9277642d899df5c87a3966a349a798f224",
      "dex": "Uniswap v3",
      "family": "univ3",
      "token0": "0x4200000000000000000000000000000000000006",
      "token1": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
      "swaps": 412,
      "swapsIn0": 230,
      "swapsIn1": 182,
      "volumeIn0": "812400000000000000000",
      "volumeIn1": "1905331220000",
      "volumeOut0": "727640118230011904000",
      "volumeOut1": "2126118934117",
      "fees0": "406200000000000000",
      "fees1": "952665610",
      "feeModel": "concentrated-replay",
      "feeUnavailable": null,
      "effectiveFeeBps0": "5.000000",
      "effectiveFeeBps1": "5.000000",
      "sample": {
        "blockNumber": "52912231",
        "reserve0": "2409117734002181937152",
        "reserve1": "5913441902330",
        "tvlUsd": "12221410.07",
        "inRange": [
          {
            "bandBps": 10,
            "amount0": "157993201447018446848",
            "amount1": "415510274402"
          },
          {
            "bandBps": 50,
            "amount0": "611004511290418167808",
            "amount1": "1603310441208"
          },
          {
            "bandBps": 100,
            "amount0": "901220014773810282496",
            "amount1": "2364102207761"
          }
        ],
        "unavailable": null
      }
    }
  ]
}
POST/api/v1/ext/market/registrations

Register a pool for samples

Adds a pool to your organization's hourly TVL and in-range liquidity sample, from the next hour on. Remove it with /ext/market/registrations/remove.

Cost
0 CU (up to 50 pools per organization)
Headers
Send your key in x-api-key.
BodyRequiredDescription
chainIdyes8453 (Base) or 146 (Sonic).
poolyesPool address.
curl -s -X POST "https://llens.abanchev.com/api/v1/ext/market/registrations" \
  -H "x-api-key: $LL_API_KEY" \
  -H "content-type: application/json" \
  -d '{"chainId":"8453","pool":"0xd0b53d9277642d899df5c87a3966a349a798f224"}'
Example response
{
  "chainId": "8453",
  "pool": "0xd0b53d9277642d899df5c87a3966a349a798f224",
  "registered": true,
  "used": 7,
  "cap": 50
}
GET/api/v1/ext/traffic/series

Traffic mix of a pool

Hourly swaps, raw amounts and USD of one pool in four buckets: aggregator, bot (MEV and other bots), organic (including DEX routers) and unclassified. No wallet addresses.

Cost
50 CU
Headers
Send your key in x-api-key.
QueryRequiredDescription
chainIdyes8453 (Base) or 146 (Sonic).
poolyesPool address.
fromyesExclusive cursor: an hour start in unix seconds.
tonoInclusive end; at most 336 hours after from.

attributedThroughHour is the last attributed hour; hours after it have no rows yet.

curl -s "https://llens.abanchev.com/api/v1/ext/traffic/series?chainId=8453&pool=0xd0b53d9277642d899df5c87a3966a349a798f224&from=1792411200" \
  -H "x-api-key: $LL_API_KEY"
Example response
{
  "chainId": "8453",
  "pool": "0xd0b53d9277642d899df5c87a3966a349a798f224",
  "tokens": [
    {
      "address": "0x4200000000000000000000000000000000000006",
      "symbol": "WETH",
      "decimals": 18
    },
    {
      "address": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
      "symbol": "USDC",
      "decimals": 6
    }
  ],
  "from": "1792411200",
  "to": "1792414800",
  "attributedThroughHour": "1792414800",
  "hours": [
    {
      "hour": "1792414800",
      "aggregator": {
        "swaps": "171",
        "unpricedSwaps": "0",
        "amountsIn": [
          "402310000000000000000",
          "871220410000"
        ],
        "volumeUsd": "1924633.120412"
      },
      "bot": {
        "swaps": "164",
        "unpricedSwaps": "0",
        "amountsIn": [
          "318900000000000000000",
          "802114330000"
        ],
        "volumeUsd": "1637137.811900"
      },
      "organic": {
        "swaps": "52",
        "unpricedSwaps": "0",
        "amountsIn": [
          "71190000000000000000",
          "190334120000"
        ],
        "volumeUsd": "376742.900771"
      },
      "unclassified": {
        "swaps": "25",
        "unpricedSwaps": "0",
        "amountsIn": [
          "20000000000000000000",
          "41662360000"
        ],
        "volumeUsd": "94030.761113"
      }
    }
  ]
}
GET/api/v1/ext/traffic/pools

Pools by volume, with traffic mix

Up to 100 pools ranked by USD volume over the latest hours, each with its share per traffic bucket.

Cost
50 CU
Headers
Send your key in x-api-key.
QueryRequiredDescription
chainIdyes8453 (Base) or 146 (Sonic).
hoursno168 (7 days) by default, at most 336.

Available by arrangement.

curl -s "https://llens.abanchev.com/api/v1/ext/traffic/pools?chainId=8453&hours=168" \
  -H "x-api-key: $LL_API_KEY"
Example response
{
  "chainId": "8453",
  "from": "1791813600",
  "to": "1792418400",
  "attributedThroughHour": "1792414800",
  "pools": [
    {
      "pool": "0xb2cc224c1c9fee385f8ad6a55b4d94e92359dc59",
      "dex": "Aerodrome Slipstream",
      "symbols": [
        "WETH",
        "USDC"
      ],
      "swaps": "214411",
      "volumeUsd": "2021044387.551208",
      "aggregator": {
        "swaps": "70955",
        "volumeUsd": "880014211.004112",
        "swapsPct": "33.09",
        "volumePct": "43.54"
      },
      "bot": {
        "swaps": "118230",
        "volumeUsd": "961233019.117320",
        "swapsPct": "55.14",
        "volumePct": "47.56"
      },
      "organic": {
        "swaps": "19870",
        "volumeUsd": "152804410.209004",
        "swapsPct": "9.26",
        "volumePct": "7.56"
      },
      "unclassified": {
        "swaps": "5356",
        "volumeUsd": "26992747.220772",
        "swapsPct": "2.49",
        "volumePct": "1.33"
      }
    }
  ]
}
GET/api/v1/ext/market/pair-discovery

Pairs by aggregator demand

Token pairs ranked by aggregator volume over the latest 7 days against the 7 before, with the trend.

Cost
50 CU
Headers
Send your key in x-api-key.
QueryRequiredDescription
chainIdyes8453 (Base) or 146 (Sonic).
offsetnoPaging offset.
limitnoAt most 50.

Available by arrangement.

curl -s "https://llens.abanchev.com/api/v1/ext/market/pair-discovery?chainId=8453&limit=2" \
  -H "x-api-key: $LL_API_KEY"
Example response
{
  "chainId": "8453",
  "windowEnd": "1792418400",
  "total": 1841,
  "offset": 0,
  "nextOffset": 2,
  "pairs": [
    {
      "token0": "0x4200000000000000000000000000000000000006",
      "token1": "0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf",
      "symbol0": "WETH",
      "symbol1": "cbBTC",
      "swaps7d": "48211",
      "volume7dUsd": "412088104.220190",
      "volumePrev7dUsd": "377412900.118204",
      "volumeChangePct": "9.18"
    },
    {
      "token0": "0x4ed4e862860bed51a9570b96d89af5e1b0efefed",
      "token1": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
      "symbol0": "DEGEN",
      "symbol1": "USDC",
      "swaps7d": "3907",
      "volume7dUsd": "1844120.551003",
      "volumePrev7dUsd": "1333904.120771",
      "volumeChangePct": "38.25"
    }
  ]
}
GET/api/v1/ext/market/fee-lvr

Fees vs arbitrage loss (F/LVR)

For a pool, a pair or a token over 24–336 hours: fees per unit of active liquidity against the loss to arbitrage on the pair's reference price, gross and net of the documented LP share, the fees split into routed, direct and arbitrage flow, and whether LP fees cover the benchmark loss. A token gets per-pair dollar sums and one ratio of sums.

Cost
50 CU + 1 CU per pool
Headers
Send your key in x-api-key.
QueryRequiredDescription
chainIdyes8453 (Base) or 146 (Sonic).
poolnoOne pool (its pair's pools are returned with it).
tokenAnoA pair, with tokenB (either order).
tokenBnoThe pair's other token.
tokennoA token: every pair containing it, up to 100.
windowHoursno24 to 336 whole hours (72 by default).

Give exactly one of pool, tokenA + tokenB, or token. coverage is set only where the LP share is documented (LP-net F/LVR ≥ 1); with no documented share only the gross ratio is shown.

curl -s "https://llens.abanchev.com/api/v1/ext/market/fee-lvr?chainId=8453&tokenA=0x4200000000000000000000000000000000000006&tokenB=0x833589fcd6edb6e08f4c7c32d4f71b54bda02913&windowHours=72" \
  -H "x-api-key: $LL_API_KEY"
Example response
{
  "chainId": "8453",
  "subject": {
    "kind": "pair",
    "tokenA": "0x4200000000000000000000000000000000000006",
    "tokenB": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"
  },
  "from": "2026-10-19T19:00:00.000Z",
  "to": "2026-10-22T19:00:00.000Z",
  "windowHours": 72,
  "pools": [
    {
      "pool": "0x6c561b446416e1a00e8e93e221854d6ea4171372",
      "dex": "uniswap-v3",
      "kind": "concentrated",
      "tokenA": "0x4200000000000000000000000000000000000006",
      "tokenB": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
      "symbolA": "WETH",
      "symbolB": "USDC",
      "swaps": 25003,
      "fSwapShare": 1,
      "activeHours": 72,
      "volumeA": 105160,
      "volumeB": 256443000,
      "feesB": 769328,
      "volumeUsd": 256443000,
      "feeBps": 30,
      "feeTierBps": 30,
      "depthB": 3463740000,
      "depthUsd": 3463740000,
      "priceEnd": 2378.82,
      "liquidity": 35508700,
      "F": 0.0213091,
      "flows": {
        "routed": 0.00873674,
        "direct": 0.00383564,
        "arb": 0.00767128,
        "unclassified": 0.00106546,
        "splitShare": 1
      },
      "lvr": 0.0217992,
      "lvrB": 787549,
      "lvrUsd": 787549,
      "feesUsd": 769328,
      "ratio": 0.977519,
      "band": "uncovered",
      "ratioOwnPrice": 0.977519,
      "lvrSource": "reference",
      "referencePool": "0x6c561b446416e1a00e8e93e221854d6ea4171372",
      "sigmaHourlyBps": 49.4709,
      "lpShare": {
        "share": 0.833,
        "source": "Uniswap protocol-fee expansion (Base, 2026): 1/4 of the 0.01%/0.05% tiers, 1/6 of 0.3%/1%",
        "confidence": "medium"
      },
      "lpNetRatio": 0.814274,
      "lpNetBand": "uncovered",
      "breakEvenGross": 1.20048,
      "coverage": "does-not-cover",
      "flags": [
        "derived-l"
      ]
    },
    {
      "pool": "0x551a0e3d267bea87048f08cc94cc6035ad99221b",
      "dex": "solidly-v3",
      "kind": "concentrated",
      "tokenA": "0x4200000000000000000000000000000000000006",
      "tokenB": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
      "symbolA": "WETH",
      "symbolB": "USDC",
      "swaps": 3505,
      "fSwapShare": 1,
      "activeHours": 72,
      "volumeA": 6.35818,
      "volumeB": 15485,
      "feesB": 4.2924,
      "volumeUsd": 15485,
      "feeBps": 2.77197,
      "feeTierBps": 5,
      "depthB": 34348.4,
      "depthUsd": 34348.4,
      "priceEnd": 2382.53,
      "liquidity": 351.85,
      "F": 0.0121995,
      "flows": {
        "routed": 0.00707572,
        "direct": 0.000853966,
        "arb": 0.00378185,
        "unclassified": 0.000487981,
        "splitShare": 1
      },
      "lvr": 0.0217992,
      "lvrB": 7.67003,
      "lvrUsd": 7.67003,
      "feesUsd": 4.2924,
      "ratio": 0.559632,
      "band": "uncovered",
      "ratioOwnPrice": 0.553075,
      "lvrSource": "reference",
      "referencePool": "0x6c561b446416e1a00e8e93e221854d6ea4171372",
      "sigmaHourlyBps": 49.4709,
      "lpShare": {
        "share": 0.8,
        "source": "DEX fee split: 80% to LPs through an off-chain merkle rewarder, 20% protocol",
        "confidence": "high"
      },
      "lpNetRatio": 0.447705,
      "lpNetBand": "uncovered",
      "breakEvenGross": 1.25,
      "coverage": "does-not-cover",
      "flags": [
        "derived-l"
      ]
    }
  ],
  "token": null,
  "backfilling": false,
  "method": "F per unit of active liquidity over LVR on the pair's reference price; see the method field of a live answer"
}
Liquidity LensPrices are informational and instantaneous. They are not investment advice or a guarantee of execution.