> ## Documentation Index
> Fetch the complete documentation index at: https://artemis.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Sector leaderboards

> Rank every protocol in a sector by a metric with a single API call

`summarize=true` collapses a date range into one row per asset, which is exactly the shape a leaderboard needs.

* **One value per asset:** the `endDate` day's value, for every metric, whether it's `SUM`, `LAST` or `AVERAGE`
* **Plus movement:** a `<METRIC>_PCT_CHG` series showing how far that value moved since `startDate`
* **A comparison window, not a period total:** Hyperliquid's `PERP_VOLUME` over 2026-07-25 to 2026-08-01 summarizes to \$2.02B, the 2026-08-01 value; the eight daily values sum to \$59.64B

See [Core concepts](/docs/artemis-api/core-concepts) for the full behaviour.

## Lending, ranked by deposits

```bash theme={null}
curl -s "https://data-svc.artemisxyz.com/v2/data/LENDING_DEPOSITS,LENDING_LOANS?symbols=aave,comp,eul,fluid,hyperlend,jup,kmno,lista,lqty,morpho,qi,sky,spk,syrup,tydro,well,xvs&startDate=2026-07-25&endDate=2026-08-01&summarize=true&APIKey=$ARTEMIS_API_KEY"
```

| Protocol      | Deposits | Borrows  | Utilisation |
| ------------- | -------- | -------- | ----------- |
| Aave          | \$24.52B | \$10.60B | 43%         |
| Morpho        | \$10.35B | \$4.02B  | 39%         |
| Maker         | \$6.15B  | \$4.80B  | 78%         |
| Spark         | \$5.46B  | \$1.80B  | 33%         |
| Maple         | \$4.04B  | \$1.82B  | 45%         |
| Kamino        | \$2.25B  | \$0.92B  | 41%         |
| Jupiter       | \$2.03B  | \$0.75B  | 37%         |
| Compound      | \$1.75B  | \$0.57B  | 32%         |
| Venus         | \$1.41B  | \$0.38B  | 27%         |
| Fluid         | \$1.40B  | \$0.75B  | 53%         |
| Euler         | \$0.66B  | \$0.51B  | 77%         |
| HyperLend     | \$0.66B  | \$0.24B  | 37%         |
| Liquity       | \$0.14B  | \$0.03B  | 20%         |
| Benqi Finance | \$0.12B  | \$0.03B  | 28%         |
| Tydro         | \$0.11B  | \$0.05B  | 45%         |
| Moonwell      | \$0.07B  | \$0.03B  | 41%         |
| Lista         | \$0.06B  | \$0.04B  | 69%         |

## The Python version

```python theme={null}
import os
import requests

BASE = "https://data-svc.artemisxyz.com/v2/data"
KEY = os.environ["ARTEMIS_API_KEY"]


def leaderboard(metrics, symbols, start="2026-07-25", end="2026-08-01"):
    resp = requests.get(
        f"{BASE}/{','.join(metrics)}",
        params={
            "symbols": ",".join(symbols),
            "startDate": start,
            "endDate": end,
            "summarize": "true",
            "APIKey": KEY,
        },
        timeout=120,
    )
    resp.raise_for_status()

    rows = {}
    for s in resp.json()["series"]:
        if s["metric"].endswith("_PCT_CHG"):  # summarize adds one per metric
            continue
        if not isinstance(s["data"], list) or not s["data"]:
            continue
        # series_columns is ["label", "value"] here, so index 1 is the value
        rows.setdefault(s["display_name"], {})[s["metric"]] = s["data"][0][1]

    return sorted(
        rows.items(),
        key=lambda kv: kv[1].get(metrics[0]) or 0,
        reverse=True,
    )


LENDING = "aave comp eul fluid hyperlend jup kmno lista lqty morpho qi sky spk syrup tydro well xvs".split()

for name, vals in leaderboard(["LENDING_DEPOSITS", "LENDING_LOANS"], LENDING):
    dep = vals.get("LENDING_DEPOSITS") or 0
    bor = vals.get("LENDING_LOANS") or 0
    util = f"{100 * bor / dep:.0f}%" if dep else "n/a"
    print(f"{name:16} {dep/1e9:8,.2f}B {bor/1e9:8,.2f}B {util:>5}")
```

Want biggest movers rather than biggest absolute values? Sort by the `<METRIC>_PCT_CHG` series instead of skipping it. It's `(endDate / startDate − 1) × 100`, measured across the whole window.

## Perps, ranked by open interest

```bash theme={null}
curl -s "https://data-svc.artemisxyz.com/v2/data/OPEN_INTEREST,PERP_VOLUME?symbols=hype,aster,lit,apex,edgex,extended,ostium,paradex,gns,gmtrade,hyena,paragon,tradexyz,jup&startDate=2026-07-25&endDate=2026-08-01&summarize=true&APIKey=$ARTEMIS_API_KEY"
```

| Venue       | Open interest | Volume     |
| ----------- | ------------- | ---------- |
| Hyperliquid | \$10,170.4M   | \$2,016.5M |
| trade.xyz   | \$3,534.0M    | \$524.2M   |
| Aster       | \$1,902.3M    | \$834.7M   |
| Lighter     | \$869.7M      | \$509.2M   |
| edgeX       | \$274.8M      | \$74.0M    |
| Jupiter     | \$191.9M      | \$81.6M    |
| ApeX        | \$111.4M      | \$792.6M   |
| GMTrade     | \$69.1M       | \$56.3M    |
| Paradex     | \$36.9M       | \$3.4M     |
| HyENA       | \$4.9M        | \$0.9M     |
| Ostium      | \$4.6M        | \$0.6M     |
| Paragon     | \$2.5M        | \$1.5M     |

Twelve of the fourteen symbols rank on `OPEN_INTEREST`. Extended and Gains Network report `PERP_VOLUME` (\$176.9M and \$16.3M) with no open interest over this window, arriving as a well-formed `["Extended", null]` tuple, which is why `leaderboard()` guards against `None` as well as checking the type.

ApeX stands out: \$792.6M of volume against \$111.4M of open interest, turning its book over roughly seven times in a day. `OI_BY_VOLUME_RATIO` measures that directly. In this basket, Hyperliquid (5.04), Paradex (11.00), edgeX (3.71) and Lighter (1.71) return a value.

<Warning>
  Under `summarize=true` **every** figure here is the `endDate` day's value, open interest and volume alike. `summarize` ignores the declared `aggregation_type`, so the volume column is a single day's volume, not an eight-day total. If you want a period total, sum the daily series or use `granularity`.
</Warning>

## Build the symbol list automatically

Rather than hardcoding symbols, pull them from `/asset/`:

```python theme={null}
import requests

assets = requests.get("https://data-svc.artemisxyz.com/asset/", timeout=180).json()["assets"]

def sector_symbols(tag):
    return [
        a["symbol"]
        for a in assets
        if a.get("symbol")
        and any(g.get("value") == tag for g in (a.get("tags") or {}).get("groups") or [])
    ]

print(leaderboard(["LENDING_DEPOSITS"], sector_symbols("lending"))[:5])
```

This prints the same top five (Aave, Morpho, Maker, Spark, Maple).

* **19 symbols, not 17:** the sector query also returns `seam` (Seamless Protocol) and `sonne` (Sonne Finance)
* **Keep the `or 0` guard:** neither reports `LENDING_DEPOSITS` for this window, so a built list still needs the same handling as a hand-picked one

See [Finding assets and metrics](/docs/artemis-api/discovery) for more on sector queries.
