# Relative Volume (RVOL) API
> Which markets are trading on abnormal volume right now — the first scan a day-trader runs to find what is "in play" — computed live from Yahoo Finance daily volume, no key, nothing stored. Price tells you where a market is; volume tells you whether anyone cares. A stock drifting on half its normal volume is noise; the same stock on three times its average is a market reacting to something — earnings, news, a breakout — and that is where the opportunity and the risk live. Relative volume (RVOL) is today's volume divided by its recent average: 1.0 is a normal day, 2.0 is double, and anything above signals unusual participation. For each instrument this API returns today's volume, its 20- and 50-day average volume, the RVOL against each, where today's volume sits as a percentile of the window, the dollar (notional) volume for liquidity, and whether volume is trending up or down. The asset endpoint returns one instrument's full volume profile; the screener endpoint ranks the universe by RVOL, putting the names trading on the most unusual volume — the ones in play — at the top. This is the relative-volume / unusual-activity cut — distinct from the bring-your-own-series volume-indicator tools (OBV, MFI), the crypto volume-by-price profile, the order-flow tape and the price APIs. It is the volume that is out of the ordinary.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/rvol-api/..."
```

## Pricing
- **Free** (Free) — 695 calls/Mo, 2 req/s
- **Starter** ($12/Mo) — 15,800 calls/Mo, 6 req/s
- **Pro** ($35/Mo) — 84,500 calls/Mo, 16 req/s
- **Mega** ($78/Mo) — 482,000 calls/Mo, 40 req/s

## Endpoints

### Screener

#### `GET /v1/screener` — Rank the universe by RVOL, volume percentile or dollar volume

**Parameters:**
- `metric` (query, optional, string) — rvol, volume_percentile or dollar_volume Example: `rvol`
- `window` (query, optional, string) — Lookback in trading days (60-500) Example: `90`
- `class` (query, optional, string) — index, sector, commodity, bond, stock, crypto or all Example: `all`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/rvol-api/v1/screener?metric=rvol&window=90&class=all"
```

**Response:**
```json
{
    "data": {
        "note": "Ranked by rvol over window_days of daily volume. RVOL is today's volume divided by the prior 20- (or 50-) day average: 1.0 normal, 2.0 double, 3.0+ extreme. volume_percentile places today's volume in the window. dollar_volume is volume x close. Read fresh per call, nothing cached.",
        "class": "all",
        "count": 22,
        "metric": "rvol",
        "source": "Yahoo Finance",
        "results": [
            {
                "name": "Gold ETF",
                "rank": 1,
                "read": "elevated volume",
                "class": "commodity",
                "symbol": "GLD",
                "rvol_20": 1.87,
                "rvol_50": 1.77,
                "available": true,
                "volume_trend": "falling",
                "dollar_volume": 4852372452,
                "volume_percentile": 73.3
            },
            {
                "name": "Crude Oil ETF",
                "rank": 2,
                "read": "elevated volume",
                "class": "commodity",
                "symbol": "USO",
                "rvol_20": 1.7,
                "rvol_50": 0.74,
                "available": true,
                "volume_trend": "falling",
                "dollar_volume": 1557528956,
                "volume_percentile": 48.9
            },
            {
                "name": "S&P 500 ETF",
                "rank": 3,
                "read": "elevated volume",
                "class": "index",
                "symb
…(truncated, see openapi.json for full schema)
```

### Asset

#### `GET /v1/asset` — Full volume profile of one instrument

**Parameters:**
- `symbol` (query, required, string) — Universe symbol Example: `NVDA`
- `window` (query, optional, string) — Lookback in trading days (60-500) Example: `90`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/rvol-api/v1/asset?symbol=NVDA&window=90"
```

**Response:**
```json
{
    "data": {
        "name": "Nvidia",
        "note": "RVOL = today's volume / prior 20-day average volume (rvol_50 uses the 50-day). volume_percentile is where today's volume ranks in the window. dollar_volume = today's volume x close (notional liquidity). Read fresh per call, nothing cached.",
        "class": "stock",
        "reads": {
            "rvol": "normal volume",
            "trend": "20-day volume above 50-day — participation building"
        },
        "source": "Yahoo Finance",
        "symbol": "NVDA",
        "rvol_20": 0.88,
        "rvol_50": 0.97,
        "window_days": 90,
        "observations": 90,
        "today_volume": 157872000,
        "volume_trend": "rising",
        "avg_volume_20": 179067235,
        "avg_volume_50": 162349018,
        "dollar_volume": 32343235869,
        "volume_percentile": 32.2,
        "avg_dollar_volume_20": 38870693608
    },
    "meta": {
        "timestamp": "2026-06-12T10:34:40.445Z",
        "request_id": "e9ac8f65-2c49-4591-a876-7ea65cdc5d58"
    },
    "status": "ok",
    "message": "Asset volume profile retrieved successfully",
    "success": true
}
```

### Universe

#### `GET /v1/universe` — The volume-bearing universe and its classes

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/rvol-api/v1/universe"
```

**Response:**
```json
{
    "data": {
        "note": "The volume-bearing universe the screener ranks — ETFs, large-cap stocks and crypto (FX has no exchange volume). Pass class= to a screener call to rank within one class.",
        "count": 22,
        "assets": [
            {
                "name": "S&P 500 ETF",
                "class": "index",
                "symbol": "SPY"
            },
            {
                "name": "Nasdaq 100 ETF",
                "class": "index",
                "symbol": "QQQ"
            },
            {
                "name": "Russell 2000 ETF",
                "class": "index",
                "symbol": "IWM"
            },
            {
                "name": "Dow Jones ETF",
                "class": "index",
                "symbol": "DIA"
            },
            {
                "name": "Technology Sector",
                "class": "sector",
                "symbol": "XLK"
            },
            {
                "name": "Financials Sector",
                "class": "sector",
                "symbol": "XLF"
            },
            {
                "name": "Energy Sector",
                "class": "sector",
                "symbol": "XLE"
            },
            {
                "name": "Gold ETF",
                "class": "commodity",
                "symbol": "GLD"
            },
            {
                "name": "Silver ETF",
                "class": "commodity",
                "symbol": "SLV"
            },
            {
  
…(truncated, see openapi.json for full schema)
```

### Meta

#### `GET /v1/meta` — Service metadata

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/rvol-api/v1/meta"
```

**Response:**
```json
{
    "data": {
        "note": "metric is rvol (default), volume_percentile or dollar_volume. window is 60-500 trading days (default 90). class filters to index/sector/commodity/bond/stock/crypto (default all). RVOL = today's volume / prior 20-day average. FX is excluded (no exchange volume). Read fresh per call, nothing cached.",
        "source": "Yahoo Finance daily volume, live",
        "classes": [
            "index",
            "sector",
            "commodity",
            "bond",
            "stock",
            "crypto"
        ],
        "metrics": [
            "rvol",
            "volume_percentile",
            "dollar_volume"
        ],
        "service": "rvol-api",
        "endpoints": {
            "GET /v1/meta": "This document.",
            "GET /v1/asset": "Full volume profile of one instrument (symbol=NVDA, window=90).",
            "GET /v1/screener": "Rank the universe by RVOL, volume percentile or dollar volume (metric=rvol, window=90, class=all).",
            "GET /v1/universe": "The volume-bearing universe and its classes."
        },
        "description": "Relative volume (RVOL) & unusual activity — which markets are trading on abnormal volume right now, live from Yahoo Finance daily volume (no key, nothing stored). RVOL is today's volume over its recent average: 1.0 normal, 2.0 double, 3.0+ extreme. For each instrument it returns today's volume, the 20/50-day average, the RVOL against each, the volume percentile, the dollar volume and whet
…(truncated, see openapi.json for full schema)
```


---
Marketplace page: https://www.oanor.com/api/rvol-api
OpenAPI spec: https://www.oanor.com/api/rvol-api/openapi.json
