Builder Methods Reference

:::note[Range Limits] The API enforces range limits. JSON and CSV: max 10,000 blocks or 1 day. Parquet: max 100,000 blocks or 7 days (1,000,000 for ARB). Exceeding these limits returns a 400 error. :::

Common Methods (all protocols)

MethodDescription
.network(net)Set network (ETH, ARB, BASE, OP, POLYGON, etc.)
.start_block(n)Set starting block number
.end_block(n)Set ending block number
.block_range(start, end)Set both start and end blocks
.start_time(ts)Set starting time (ISO format or Unix timestamp)
.end_time(ts)Set ending time (ISO format or Unix timestamp)
.time_range(start, end)Set both start and end times
.verbose()Include all metadata fields
.with_value()Enrich events with USD value data (value_usd column)
.my_wallets()Filter events involving your saved wallet addresses

Wallet Label Management

Manage wallet labels via client.wallets. The upsert endpoint accepts Parquet only (the client auto-converts DataFrames). Labels and categories are list columns (arrays of strings).

MethodDescription
client.wallets.upsert(df)Bulk upsert labels from a DataFrame. labels and categories must be list columns (e.g., ["exchange", "cex"]). Auto-serialized to Parquet. Max 1M rows.
client.wallets.list()List all labels in your namespace
client.wallets.get(address)Look up a single address label
client.wallets.delete(address)Delete a label by address

Protocol-Specific Parameters

MethodProtocolsDescription
.token(*symbols)ERC20Token symbol(s) (USDT, USDC) or contract address. Accepts multiple known symbols for multi-token queries (multi-value).
.sender(*addrs)ERC20, NativeFilter by sender address (multi-value)
.receiver(*addrs)ERC20, NativeFilter by receiver address (multi-value)
.involving(*addrs)AllFilter by any involved address (multi-value)
.from_address(*addrs)ERC20, NativeAlias for .sender()
.to_address(*addrs)ERC20, NativeAlias for .receiver()
.min_amount(amt)ERC20, NativeMinimum transfer amount
.max_amount(amt)ERC20, NativeMaximum transfer amount
.eth_market_type(type)AAVEMarket type for ETH: ‘Core’, ‘Prime’, ‘EtherFi’
.symbol0(sym)UniswapFirst token symbol (required)
.symbol1(sym)UniswapSecond token symbol (required)
.fee(tier)UniswapFee tier: 100, 500, 3000, 10000 (required)

Tron Methods

MethodDescription
client.tron.trc20.transfers(*tokens)Start a TRC20 transfer query. Chain .aggregate(group_by, period) for bucketed sums.
client.tron.native.transfers()Start a native TRX transfer query. Chain .aggregate(group_by, period) for bucketed sums.

Tron transfer builders support .aggregate() — see the Aggregate Methods section. Aggregate responses return rows of {time | block_number, token, agg_amount, count} under the events key.

Bitcoin Methods

MethodDescription
client.bitcoin.native.transfers()Start a native BTC transfer query. Chain .aggregate(group_by, period) for bucketed sums.

Bitcoin transfer builders also support .aggregate() — see the Aggregate Methods section. For Bitcoin the time column is returned as epoch seconds when grouping by time.

Binance Methods

MethodBuilderDescription
client.exchange.binance.trades(token)TradeStart a raw trades query
client.exchange.binance.ohlcv(token)TradeStart an OHLCV candle query
client.exchange.binance.book_depth()ExchangeDataStart a book depth query (365-day max)
client.exchange.binance.open_interest()ExchangeDataStart an open interest query
client.exchange.binance.funding_rate()ExchangeDataStart a funding rate query
client.exchange.binance.long_short_ratios()ExchangeDataStart a long/short ratios query

Hyperliquid Methods

MethodBuilderDescription
client.exchange.hyperliquid.trades(token)TradeStart a raw trades query
client.exchange.hyperliquid.ohlcv(token)TradeStart an OHLCV candle query
client.exchange.hyperliquid.fills()ExchangeDataStart a fills query
client.exchange.hyperliquid.positions()ExchangeDataStart a positions query
client.exchange.hyperliquid.funding()ExchangeDataStart a funding query

Trade builder methods:

MethodDescription
.token(symbol)Set token symbol (e.g. “BTC”)
.window(size)Set OHLCV window: 1m, 5m, 15m, 30m, 1h, 4h, 1d
.start_time(ts)Set start time (ISO 8601 or Unix)
.end_time(ts)Set end time
.time_range(start, end)Set both start and end times

Exchange data builder methods:

MethodDescription
.token(symbol)Set token symbol (e.g. “BTC”)
.start_time(ts)Set start time (ISO 8601 or Unix)
.end_time(ts)Set end time
.time_range(start, end)Set both start and end times

Exchange data endpoints return CSV/Parquet only. Calling .as_dict() will raise an error.

Address Label & Category Filters

Filter events by entity names or categories using the labels database. Available on all protocols.

MethodProtocolsDescription
.involving_label(label)AllFilter where any involved address matches a label substring (e.g., “Binance”)
.involving_category(cat)AllFilter where any involved address matches a category (e.g., “exchange”)
.sender_label(label)ERC20, NativeFilter sender by label substring
.sender_category(cat)ERC20, NativeFilter sender by category
.receiver_label(label)ERC20, NativeFilter receiver by label substring
.receiver_category(cat)ERC20, NativeFilter receiver by category

Multi-value support: Pass multiple values as separate arguments (e.g., .sender_label("Binance", "Coinbase")) or as a comma-separated string (e.g., .sender_label("Binance,Coinbase")). Both forms are equivalent.

Mutual exclusivity: Within each slot (involving/sender/receiver), only one of address/label/category can be set. involving* filters cannot be combined with sender*/receiver* filters.

Aggregate Methods

MethodDescription
.aggregate(group_by, period)Transition to aggregate query. group_by: "time" or "block"/"block_number". period: bucket size (e.g. "1h", "1d", "100b", or integer block count for Tron/BTC). Returns an AggregateQueryBuilder (EVM) or EventsAggregateQueryBuilder (Tron/BTC) that supports all the same terminal and filter methods.
client.aggregate_schema(protocol)Get available aggregate fields for a protocol (e.g. "erc20", "aave_v3", "tron/trc20", "btc/native").

Supported on EVM (all 23 protocols), Tron (trc20, native), and Bitcoin (native). Aggregate queries accept all filters from the raw endpoint and share the same range limits. Quota cost is halved (block_range × 0.5, min 100).

Terminal Methods

MethodDescription
.as_df()Execute and return pandas DataFrame
.as_df("polars")Execute and return polars DataFrame
.as_file(path)Execute and save to file (format from extension)
.as_file(path, format="csv")Execute and save with explicit format
.as_dict()Execute and return list of dicts (JSON, 10K block limit)
.as_link()Execute and return download link (CSV, 1hr expiry)
.as_link(format="parquet")Execute and return download link (Parquet)
.calculate_cost()Calculate query cost without executing (no quota deducted)