Skip to main content
GET
Maker vs taker fill breakdown per market

When to use

user-maker-taker is the single most diagnostic endpoint for analysing how an address transacts on Hyperliquid:
  • A high maker share with negative maker_fee is the textbook signature of a market maker — they’re providing liquidity and collecting rebates.
  • A high taker share with positive taker_fee is the signature of a taker bot or whale paying the spread for execution.
  • A mixed profile can indicate an arbitrageur, a basis trader, or a hybrid strategy.
The underlying signal is the crossed field on every Hyperliquid fill (crossed: true = taker, false = maker). No other commercial data provider exposes this aggregated per-address — Tardis ships raw fills only; Coinglass and Nansen ship clearinghouseState only; the HL /info API requires the consumer to reduce userFills themselves over potentially millions of rows.

Conventions

  • maker_fills / taker_fills are counts of HL fills.
  • maker_notional / taker_notional are USDC notional (price × size).
  • maker_fee is often negative — that’s the rebate HL pays to resting orders that get hit. taker_fee is positive (the fee takers pay).
  • pct_maker = maker_fills / total_fills, a number in [0, 1].
  • The response envelope’s total row sums all per-market rows.

Historical caveat (read carefully)

The underlying fills.crossed column was added to ClickHouse on 2026-05-21. Fills ingested before that timestamp default to crossed = false (maker) because we didn’t carry the field through the parser. Until the S3 backfill completes, queries spanning windows before 2026-05-21 will over-count maker fills. Backfill plan: hl-recovery --rebuild replays the S3 archive (HL public node data, back to 2025-07-27) through the updated parser to repopulate crossed on every historical fill.

Example

Authorizations

Authorization
string
header
required

Ironflow API key, format if_xxxx. Free keys at https://ironflow.sh/key. Optional on read endpoints.

Query Parameters

address
string

Wallet address filter (hex string, e.g. 0xabc123).

Example:

"0xabc123def456"

market
string

Market symbol (e.g. BTC-PERP, ETH-PERP). Omit to query all markets.

Example:

"BTC-PERP"

from
integer<int64>

Start time as Unix milliseconds. Defaults to 24 hours ago. Clamped to tier history window. On /v1/trades and /v1/fills, the time range (to - from) is limited per tier (no key 1h, free key 6h, Explorer 24h, Builder 7d, Enterprise unlimited; without market filter 4h for all tiers). Returns QUERY_WINDOW_EXCEEDED (400) if exceeded — paginate with narrower from/to windows.

Example:

1718313600000

to
integer<int64>

End time as Unix milliseconds. Defaults to now.

Example:

1718400000000

Response

Per-market maker/taker breakdown + totals row.

address
string
from
integer<int64>
to
integer<int64>
data
object[]
total
object