1. API
  2. Screeners
  3. Relative value scan

Screeners API, GET /relative-value-scan

Whose IV is stretched versus SPY, and which pairs look rich against cheap?

Market-wide IV-to-SPY mean-reversion stretches, or rich-versus-cheap pairs. Returns names whose IV ratio to SPY is far from its one-year average (z-score above the threshold) with the direction, or a pairs view of rich against cheap names.

ProPlan and above, from $55/mo
1MCP tool that calls it
2026-09-08Sample captured from the live endpoint

The answer, in one call

Units first,
then the request.

iv_percentile 0 to 100; ratios unitless; z_score in standard deviations; vrp in points.

iv_spy_ratio is 30-day IV divided by SPY's; the average is one year.

curlBearer token from Account, then API Access
curl -H "Authorization: Bearer avmcp_YOUR_TOKEN" \
     "https://apexvol.com/api/mcp/data/relative-value-scan?limit=5"
Pythonrequests, nothing else
import requests

headers = {"Authorization": "Bearer avmcp_YOUR_TOKEN"}
params = {"limit": "5"}
r = requests.get("https://apexvol.com/api/mcp/data/relative-value-scan", headers=headers, params=params)
r.raise_for_status()
data = r.json()["data"]
print(data["total_matches"])
In Claude, Cursor or ChatGPTthrough the MCP server, no code
You

Which stocks have IV stretched relative to SPY?

The assistant calls scan_relative_value and answers from the JSON below.

Tokens come with every paid or trial plan. Sign in and create one under Account, then API Access, or start a trial. Your ticker, your budget.

GET /api/mcp/data/relative-value-scan?limit=5200, application/json, captured 2026-09-08
{
  "success": true,
  "data": {
    "results": [
      {
        "avg_opt_volume": 1062.0,
        "chg_1w": 0.09,
        "days_to_earnings": null,
        "direction": "rich",
        "iv_percentile": 98.0,
        "iv_spy_ratio": 18.6563,
        "iv_spy_ratio_avg_1y": 0.26,
        "market_cap": 105418148000.0,
        "price": 100.47,
        "sector": "N/A",
        "ticker": "SGOV",
        "vrp": 1.61,
        "z_score": 55.2216
      },
      {
        "avg_opt_volume": 16.0,
        "chg_1w": -1.32,
        "days_to_earnings": null,
        "direction": "rich",
        "iv_percentile": 43.0,
        "iv_spy_ratio": 3.8661,
        "iv_spy_ratio_avg_1y": 0.21,
        "market_cap": 549319000.0,
        "price": 8.23,
        "sector": "Real Estate",
        "ticker": "ILPT",
        "vrp": -22.38,
        "z_score": 13.4584
      },
      {
        "avg_opt_volume": 149.0,
        "chg_1w": 8.04,
        "days_to_earnings": null,
        "direction": "rich",
        "iv_percentile": 56.0,
        "iv_spy_ratio": 3.7184,
        "iv_spy_ratio_avg_1y": 0.21,
        "market_cap": 6150466000.0,
        "price": 2.15,
        "sector": "Utilities",
        "ticker": "CIG",
        "vrp": -31.59,
        "z_score": 12.9078
      }
    ],
    "threshold": 1.5,
    "total_matches": 5,
    "total_scanned": 5963
  }
}

Every response is wrapped as {"success": true, "data": {...}}. Lists in the sample are cut to a few rows so it fits on a page; the shape is exactly what your code receives.

Parameters

Bounded,
and the bounds are stated.

Out-of-range numbers are clamped to the documented range, never silently changed to something else. A missing required field returns 400 with the reason.

NameInDefaultRangeMeaning
viewquerymean_reversionmean_reversion or pairsWhich scan.
limitquery201 to 50Rows.
thresholdquery1.5z-scoreMinimum stretch.

Field by field

What each
number means.

results[].ticker, iv_spy_ratio, iv_spy_ratio_avg_1y, z_score, direction
The stretch.
results[].iv_percentile, vrp, days_to_earnings
Context.
total_matches, total_scanned, threshold
What ran.

Access, limits, errors

Before the
first call.

Plan
Pro Pro and above. Tokens are issued to paid and trial accounts from $55 a month; each endpoint follows the tier of its web feature. An endpoint above your plan answers 402 and names the plan it needs.
Auth
Bearer token, prefix avmcp_, created under Account, then API Access. Shown once, hashed at rest, rotates in one click. Always call https://apexvol.com, never www.
Limits
60 requests a minute and 1,000 an hour per token, plus a monthly allowance by plan. Every response carries the remaining counts in X-RateLimit-* headers; a 429 carries Retry-After in seconds.
Errors
401 no or revoked token; 429 Retry-After seconds; 403 Pro plan required; 424 data feed unavailable, retry. The full list with payload shapes is on the errors page.
Since
API 1.0. Units, bases and timestamps follow the conventions shared by every endpoint; changes are logged in the API changelog.
Machine-readable
This page as Markdown, the family as one file, the whole API as llms-full.txt or OpenAPI 3.1.

The same data, in plain English

Ask for it
in an MCP client.

Connect the ApexVol MCP server and the assistant calls scan_relative_value by name. One URL, a sign-in, no token to paste.

Prompts that hit this endpointcopy one into Claude, Cursor or ChatGPT
You

Which stocks have IV stretched relative to SPY?

You

Find rich-versus-cheap vol pairs.

You

Show relative-value stretches above 2 standard deviations.

More in the prompt library. Set the server up in Claude Desktop, Claude Code, Cursor, ChatGPT, VS Code, Windsurf or Gemini CLI.

Included with
every paid plan.

From $55 a month, tier-matched: your token queries the data your plan includes and Pro unlocks the full surface.

Real market data, not a sandbox. See it live on AAPL.

7 days free, cancel anytime Card required · no charge for 7 days
Start trial →