Skip to content
Indexer AccessAPI reference

Pools

Pool identity, swaps, ticks, candles, liquidity and rolling statistics, including Uniswap V4.

Everything keyed by a pool. V4 pools are keyed by manager address plus pool id rather than a pool address, so they have their own parallel route set. Liquidity is protocol-native: V2 reserves and concentrated-liquidity depth are different measurements and are not merged.

20 routes. Every path below is served under /index/v1/{chain}, and every request carries an x-api-key header, so those two are not repeated per route. The shared contract for pagination, snapshots, precision and absence is in Read API.

Pools By Currency

GET /currencies/{currency}/pools

Pools holding a given currency on either side.

ParameterInRequiredNotes
currencypathyes0x-prefixed 20-byte hex address.
cursorquerynoOpaque page cursor. See Pagination.
limitquerynoPage row cap. See Pagination for the shared contract; the exact default and maximum for this route are on the schema.
orderquerynoSort direction: this route's accepted values and default are on the schema (enum/default); a route whose backing index has no reverse walk accepts only asc. See Pagination for the shared contract.

Pool

GET /pools/{address}

Pool identity: protocol, both currencies, fee and tick spacing, factory coordinate, embedded stats.

ParameterInRequiredNotes
addresspathyes0x-prefixed 20-byte hex address.

Pool ATH

GET /pools/{address}/ath

All-time high price for the pool.

ParameterInRequiredNotes
addresspathyes0x-prefixed 20-byte hex address.

Pool ATL

GET /pools/{address}/atl

All-time low, same shape.

ParameterInRequiredNotes
addresspathyes0x-prefixed 20-byte hex address.

Pool Liquidity

GET /pools/{address}/liquidity

Exact protocol-native liquidity: V2 reserves, or V3 active depth at the current tick; plus liquidityUsd (V2 reserves, or V3 current-tick-spacing range amounts, each side through its own USD mark; null with a reason when a side is unpriced) and usdMarks.

ParameterInRequiredNotes
addresspathyes0x-prefixed 20-byte hex address.

Pool OHLCV

GET /pools/{address}/ohlcv

1m/1h/1d candles with two-sided volume and rational OHLC.

ParameterInRequiredNotes
addresspathyes0x-prefixed 20-byte hex address.
framequeryyes1s, 30s, 1m, 1h, or 1d candle width. 1s/30s rows exist only for a pool with durable fine-candle retention; see the response's own fineSeriesAvailable.
fromqueryyesInclusive start of the unix-second range the candle series covers, aligned down to its frame's own bucket width. Must be <= to.
toqueryyesInclusive end of the unix-second range the candle series covers, aligned down to its frame's own bucket width. The requested span is capped at a fixed number of candle buckets.
cursorquerynoOpaque page cursor. See Pagination.
limitquerynoPage row cap. See Pagination for the shared contract; the exact default and maximum for this route are on the schema.
orderquerynoSort direction: this route's accepted values and default are on the schema (enum/default); a route whose backing index has no reverse walk accepts only asc. See Pagination for the shared contract.

Pool Stats

GET /pools/{address}/stats

Rolling 5m/1h/4h/24h statistics for the pool.

ParameterInRequiredNotes
addresspathyes0x-prefixed 20-byte hex address.

Pool Swaps

GET /pools/{address}/swaps

Exact swaps for the pool with full block, transaction and log coordinates.

ParameterInRequiredNotes
addresspathyes0x-prefixed 20-byte hex address.
cursorquerynoOpaque page cursor. See Pagination.
limitquerynoPage row cap. See Pagination for the shared contract; the exact default and maximum for this route are on the schema.
orderquerynoSort direction: this route's accepted values and default are on the schema (enum/default); a route whose backing index has no reverse walk accepts only asc. See Pagination for the shared contract.

Pool Ticks

GET /pools/{address}/ticks

Per-trade tick rows enriched with transaction context.

ParameterInRequiredNotes
addresspathyes0x-prefixed 20-byte hex address.
cursorquerynoOpaque page cursor. See Pagination.
limitquerynoPage row cap. See Pagination for the shared contract; the exact default and maximum for this route are on the schema.
orderquerynoSort direction: this route's accepted values and default are on the schema (enum/default); a route whose backing index has no reverse walk accepts only asc. See Pagination for the shared contract.

Pool Bars

GET /pools/{address}/ticks/bars

N-trade or N-volume bars folded over the tick sequence.

ParameterInRequiredNotes
addresspathyes0x-prefixed 20-byte hex address.
rulequeryyesrule is exactly trade or volume; size is its decimal-string threshold: a plain trade count for rule=trade, an exact base-unit quote quantity for rule=volume (large enough that a plain integer query type would not always hold it). The cursor is the same tick coordinate the swap and tick routes use, since a bar page resumes the identical underlying walk.
sizequeryyesrule is exactly trade or volume; size is its decimal-string threshold: a plain trade count for rule=trade, an exact base-unit quote quantity for rule=volume (large enough that a plain integer query type would not always hold it). The cursor is the same tick coordinate the swap and tick routes use, since a bar page resumes the identical underlying walk.
cursorquerynoOpaque page cursor. See Pagination.
limitquerynoPage row cap. See Pagination for the shared contract; the exact default and maximum for this route are on the schema.
orderquerynoSort direction: this route's accepted values and default are on the schema (enum/default); a route whose backing index has no reverse walk accepts only asc. See Pagination for the shared contract.

New Pools

GET /pools/new

Newest-first feed of registered pools, by creation coordinate.

ParameterInRequiredNotes
cursorquerynoOpaque page cursor. See Pagination.
limitquerynoPage row cap. See Pagination for the shared contract; the exact default and maximum for this route are on the schema.
orderquerynoSort direction: this route's accepted values and default are on the schema (enum/default); a route whose backing index has no reverse walk accepts only asc. See Pagination for the shared contract.
GET /pools/search

Bounded, filtered pool discovery anchored on one currency, in pool-identity order by default (sort=pool_identity). sort=volume_24h (requires token, descending only) ranks the token's markets by trailing-24h volume exactly as /tokens/{address}/pools/ranked does (quote-native under quote, else USD with unpriced pools last), with the same refinement filters and allowScan rule; rows add rank, quoteAsset, rankedVolume24hQuote, rankedVolume24hUsd, and the page adds rankingBasis, membership and usdMarks. sort=liquidity is refused (400); the USD-liquidity ranking is /tokens/{address}/pools/ranked?sort=liquidity.

ParameterInRequiredNotes
allowScanquerynoRequired only when a refinement filter (fee_tier, protocol, created_from, created_to) makes the indexed walk examine rows that are not returned. An unfiltered anchor-currency page and an unfiltered token+quote pair page are both indexed.
tokenquerynotoken/quote name the pool's two currencies (either or both may be given; at least one is required as the anchor currency the walk is indexed on). fee_tier/protocol/created_from/created_to refine that walk. factory is not accepted; see its row below.
quotequerynotoken/quote name the pool's two currencies (either or both may be given; at least one is required as the anchor currency the walk is indexed on). fee_tier/protocol/created_from/created_to refine that walk. factory is not accepted; see its row below.
fee_tierquerynotoken/quote name the pool's two currencies (either or both may be given; at least one is required as the anchor currency the walk is indexed on). fee_tier/protocol/created_from/created_to refine that walk. factory is not accepted; see its row below.
protocolquerynotoken/quote name the pool's two currencies (either or both may be given; at least one is required as the anchor currency the walk is indexed on). fee_tier/protocol/created_from/created_to refine that walk. factory is not accepted; see its row below.
factoryquerynoAlways rejected with a 400: this store does not retain which factory emitted a pool's identity, so there is no value to filter or report on. The field exists only so the rejection is specific rather than a generic "unknown field" error. Supported filters: token, quote, fee_tier, protocol, created_from, created_to.
created_fromquerynotoken/quote name the pool's two currencies (either or both may be given; at least one is required as the anchor currency the walk is indexed on). fee_tier/protocol/created_from/created_to refine that walk. factory is not accepted; see its row below.
created_toquerynotoken/quote name the pool's two currencies (either or both may be given; at least one is required as the anchor currency the walk is indexed on). fee_tier/protocol/created_from/created_to refine that walk. factory is not accepted; see its row below.
cursorquerynoOpaque page cursor. See Pagination.
limitquerynoPage row cap. See Pagination for the shared contract; the exact default and maximum for this route are on the schema.
orderquerynoSort direction: this route's accepted values and default are on the schema (enum/default); a route whose backing index has no reverse walk accepts only asc. See Pagination for the shared contract.

V4 Pool

GET /pools/v4/{manager}/{pool_id}

V4 pool identity, keyed by manager address and pool id rather than a pool address.

ParameterInRequiredNotes
managerpathyesThe V4 pool manager contract. Many distinct pools share one manager address: this alone does not identify a pool, pair it with pool_id below. Obtain both together from a real pool's contract/poolId fields via GET /pools/search or GET /pools/new (filter or scan for "protocol":"v4"); a V4 manager address cannot be looked up through the plain GET /pools/{address} route.
pool_idpathyesStored V4 pool identity key, hex. Obtain a real one from pools/search or pools/new's poolId field, paired with the same pool's contract as manager above: V4 pools cannot be looked up via the plain /pools/{address} route.

V4 Pool Liquidity

GET /pools/v4/{manager}/{pool_id}/liquidity

V4 liquidity observation, plus liquidityUsd as for V3.

ParameterInRequiredNotes
managerpathyesThe V4 pool manager contract. Many distinct pools share one manager address: this alone does not identify a pool, pair it with pool_id below. Obtain both together from a real pool's contract/poolId fields via GET /pools/search or GET /pools/new (filter or scan for "protocol":"v4"); a V4 manager address cannot be looked up through the plain GET /pools/{address} route.
pool_idpathyesStored V4 pool identity key, hex. Obtain a real one from pools/search or pools/new's poolId field, paired with the same pool's contract as manager above: V4 pools cannot be looked up via the plain /pools/{address} route.

V4 Pool OHLCV

GET /pools/v4/{manager}/{pool_id}/ohlcv

V4 candles.

ParameterInRequiredNotes
managerpathyesThe V4 pool manager contract. Many distinct pools share one manager address: this alone does not identify a pool, pair it with pool_id below. Obtain both together from a real pool's contract/poolId fields via GET /pools/search or GET /pools/new (filter or scan for "protocol":"v4"); a V4 manager address cannot be looked up through the plain GET /pools/{address} route.
pool_idpathyesStored V4 pool identity key, hex. Obtain a real one from pools/search or pools/new's poolId field, paired with the same pool's contract as manager above: V4 pools cannot be looked up via the plain /pools/{address} route.
framequeryyes1s, 30s, 1m, 1h, or 1d candle width. 1s/30s rows exist only for a pool with durable fine-candle retention; see the response's own fineSeriesAvailable.
fromqueryyesInclusive start of the unix-second range the candle series covers, aligned down to its frame's own bucket width. Must be <= to.
toqueryyesInclusive end of the unix-second range the candle series covers, aligned down to its frame's own bucket width. The requested span is capped at a fixed number of candle buckets.
cursorquerynoOpaque page cursor. See Pagination.
limitquerynoPage row cap. See Pagination for the shared contract; the exact default and maximum for this route are on the schema.
orderquerynoSort direction: this route's accepted values and default are on the schema (enum/default); a route whose backing index has no reverse walk accepts only asc. See Pagination for the shared contract.

V4 Pool Stats

GET /pools/v4/{manager}/{pool_id}/stats

V4 rolling-window statistics.

ParameterInRequiredNotes
managerpathyesThe V4 pool manager contract. Many distinct pools share one manager address: this alone does not identify a pool, pair it with pool_id below. Obtain both together from a real pool's contract/poolId fields via GET /pools/search or GET /pools/new (filter or scan for "protocol":"v4"); a V4 manager address cannot be looked up through the plain GET /pools/{address} route.
pool_idpathyesStored V4 pool identity key, hex. Obtain a real one from pools/search or pools/new's poolId field, paired with the same pool's contract as manager above: V4 pools cannot be looked up via the plain /pools/{address} route.

V4 Pool Swaps

GET /pools/v4/{manager}/{pool_id}/swaps

V4 swaps.

ParameterInRequiredNotes
managerpathyesThe V4 pool manager contract. Many distinct pools share one manager address: this alone does not identify a pool, pair it with pool_id below. Obtain both together from a real pool's contract/poolId fields via GET /pools/search or GET /pools/new (filter or scan for "protocol":"v4"); a V4 manager address cannot be looked up through the plain GET /pools/{address} route.
pool_idpathyesStored V4 pool identity key, hex. Obtain a real one from pools/search or pools/new's poolId field, paired with the same pool's contract as manager above: V4 pools cannot be looked up via the plain /pools/{address} route.
cursorquerynoOpaque page cursor. See Pagination.
limitquerynoPage row cap. See Pagination for the shared contract; the exact default and maximum for this route are on the schema.
orderquerynoSort direction: this route's accepted values and default are on the schema (enum/default); a route whose backing index has no reverse walk accepts only asc. See Pagination for the shared contract.

V4 Pool Ticks

GET /pools/v4/{manager}/{pool_id}/ticks

V4 per-trade ticks.

ParameterInRequiredNotes
managerpathyesThe V4 pool manager contract. Many distinct pools share one manager address: this alone does not identify a pool, pair it with pool_id below. Obtain both together from a real pool's contract/poolId fields via GET /pools/search or GET /pools/new (filter or scan for "protocol":"v4"); a V4 manager address cannot be looked up through the plain GET /pools/{address} route.
pool_idpathyesStored V4 pool identity key, hex. Obtain a real one from pools/search or pools/new's poolId field, paired with the same pool's contract as manager above: V4 pools cannot be looked up via the plain /pools/{address} route.
cursorquerynoOpaque page cursor. See Pagination.
limitquerynoPage row cap. See Pagination for the shared contract; the exact default and maximum for this route are on the schema.
orderquerynoSort direction: this route's accepted values and default are on the schema (enum/default); a route whose backing index has no reverse walk accepts only asc. See Pagination for the shared contract.

V4 Pool Bars

GET /pools/v4/{manager}/{pool_id}/ticks/bars

V4 trade or volume bars.

ParameterInRequiredNotes
managerpathyesThe V4 pool manager contract. Many distinct pools share one manager address: this alone does not identify a pool, pair it with pool_id below. Obtain both together from a real pool's contract/poolId fields via GET /pools/search or GET /pools/new (filter or scan for "protocol":"v4"); a V4 manager address cannot be looked up through the plain GET /pools/{address} route.
pool_idpathyesStored V4 pool identity key, hex. Obtain a real one from pools/search or pools/new's poolId field, paired with the same pool's contract as manager above: V4 pools cannot be looked up via the plain /pools/{address} route.
rulequeryyesrule is exactly trade or volume; size is its decimal-string threshold: a plain trade count for rule=trade, an exact base-unit quote quantity for rule=volume (large enough that a plain integer query type would not always hold it). The cursor is the same tick coordinate the swap and tick routes use, since a bar page resumes the identical underlying walk.
sizequeryyesrule is exactly trade or volume; size is its decimal-string threshold: a plain trade count for rule=trade, an exact base-unit quote quantity for rule=volume (large enough that a plain integer query type would not always hold it). The cursor is the same tick coordinate the swap and tick routes use, since a bar page resumes the identical underlying walk.
cursorquerynoOpaque page cursor. See Pagination.
limitquerynoPage row cap. See Pagination for the shared contract; the exact default and maximum for this route are on the schema.
orderquerynoSort direction: this route's accepted values and default are on the schema (enum/default); a route whose backing index has no reverse walk accepts only asc. See Pagination for the shared contract.

Pools By Token

GET /tokens/{currency}/pools

Pools where this address is one of the two currencies, in pool-identity order (not a ranking; includes pools where the address is the QUOTE). For a volume-ranked list of the token's own markets use /pools/ranked.

ParameterInRequiredNotes
currencypathyes0x-prefixed 20-byte hex address.
cursorquerynoOpaque page cursor. See Pagination.
limitquerynoPage row cap. See Pagination for the shared contract; the exact default and maximum for this route are on the schema.
orderquerynoSort direction: this route's accepted values and default are on the schema (enum/default); a route whose backing index has no reverse walk accepts only asc. See Pagination for the shared contract.

View this page as Markdown