- API
- Greeks API
Greeks API
Greeks,
already computed.
Look a contract up by its delta instead of its strike. Pull a heatmap of any Greek across the whole surface. Sum a book. The Greeks arrive on the row, so nothing has to be re-derived.
A real response
This is what
comes back.
Captured from the live endpoint on 2026-09-08, lists cut to a few rows so it fits on a page. The shape is exactly what your code receives. Run it on your own ticker from the endpoint page.
{
"aggregates": {
"charm": {
"by_expiration": [
-92401.1106,
-242908.5109,
-7145.8524
],
"by_strike": [
5190.4907,
76.8262,
9861.3066
]
},
"delta": {
"by_expiration": [
3546428.01,
10557890.51,
727504.27
],
"by_strike": [
1090601.21,
15281.14,
2807343.01
]
},
"gamma": {
"by_expiration": [
375676.8438,
725053.3309,
53555.5989
],
"by_strike": [
251.0156,
2.0766,
1635.0796
]
},
"rho": {
"by_expiration": [
108122.08,
337183.04,
38718.26
],
"by_strike": [
71678.42,
670.55,
198218.26
]
},
"theta": {
"by_expiration": [
-2007981.62,
-4739399.08,
-290533.85
],
"by_strike": [
-4464.65,
-29.7,
-22074.51
]
},
"vanna": {
"by_expiration": [
657303.858,
4607537.5648,
228262.6166
],
"by_strike": [
-145440.2013,
-1200.6728,
-370078.0536
]
},
"vega": {
"by_expiration": [
725724.59,
2246953.63,
211792.29
],
"by_strike": [
2597.99,
13.2,
12797.51
]
}
},
"as_of": "2026-09-08T07:49:22.291337+00:00",
"data_points": 192,
"earnings_date": null,
"expirations": [
"Sep 09 (1 DTE)",
"Sep 11 (3 DTE)",
"Sep 14 (6 DTE)"
],
"expirations_raw": [
"2026-09-09",
"2026-09-11",
"2026-09-14"
],
"greek_matrices": {
"charm": [
[
0.035,
0.0008,
0.0367
],
[
0.0242,
0.0287,
0.0065
],
[
0.0158,
null,
0.0059
]
],
"delta": [
[
0.9998,
0.9998,
0.9998
],
[
1.0,
1.0,
1.0
],
[
0.9976,
null,
0.9923
]
],
"gamma": [
[
0.0,
0.0,
0.0
],
[
0.0,
0.0,
0.0
],
[
0.0007,
null,
0.0014
]
],
"iv": [
[
1.9166,
1.0773,
1.6971
],
[
1.4744,
1.5669,
0.85
],
[
1.4007,
null,
0.6896
]
],
"rho": [
[
0.0253,
0.0257,
0.026
],
[
0.0,
0.0,
0.0
],
[
0.0077,
null,
0.0157
]
],
"theta": [
[
-0.0,
-0.0,
-0.0
],
[
-0.0,
-0.0,
-0.0
],
[
-0.0055,
null,
-0.017
]
],
"vanna": [
[
-0.0366,
-0.0016,
-0.0433
],
[
-0.099,
-0.1104,
-0.0459
],
[
-0.1363,
null,
-0.1033
]
],
"vega": [
[
0.0,
0.0,
0.0
],
[
0.0,
0.0,
0.0
],
[
0.003,
null,
0.0073
]
]
},
"greek_matrix": [
[
0.9998,
0.9998,
0.9998
],
[
1.0,
1.0,
1.0
],
[
0.9976,
null,
0.9923
]
],
"greek_type": "delta",
"levels": {
"max_pain": 222.5,
"max_pain_expiration": "2026-09-09",
"oi_call_wall": 240.0,
"oi_put_wall": 200.0
},
"option_type": "calls",
"stock_price": 230.3,
"strikes": [
185.0,
187.5,
190.0
],
"ticker": "NVDA"
}
Every response is wrapped as {"success": true, "data": {...}}. Errors use the same envelope with an error string and a status code that means what it says.
Call it three ways. Same token, same JSON.
curl -H "Authorization: Bearer avmcp_YOUR_TOKEN" \
"https://apexvol.com/api/mcp/data/greeks-heatmap/NVDA"
import requests
headers = {"Authorization": "Bearer avmcp_YOUR_TOKEN"}
r = requests.get("https://apexvol.com/api/mcp/data/greeks-heatmap/NVDA", headers=headers)
r.raise_for_status()
data = r.json()["data"]
print(data["greek_type"])
Where is gamma concentrated on NVDA across the next 4 expirations?
The assistant calls get_greeks_heatmap and answers from the JSON above.More prompts for this family in the prompt library. Set the server up in Claude Desktop, Claude Code, Cursor, ChatGPT, VS Code, Windsurf or Gemini CLI.
The family
3 endpoints,
one prefix.
All under https://apexvol.com/api/mcp/data. Each card opens a page with the parameters and their bounds, every response field, a real captured response and a console that runs it on your ticker.
GET /charm/{ticker}
How much delta will dealers shed on SPY overnight from charm?
Charm exposure by strike: the delta that decays into tomorrow.
Pro
GET /greeks-heatmap/{ticker}
Where are NVDA's gamma and vega concentrated across strikes and expirations?
Per-contract Greeks as strike-by-expiration matrices, with the OI walls and max pain.
Basic
GET /third-order-greeks/{ticker}
How fast do SPY's gamma and vega change as spot and vol move?
Speed, zomma, color, vomma and ultima by strike, with definitions.
Pro
Field by field
What each
number means.
target_delta, actual_delta- What you asked for and the nearest listed contract's real delta.
strike, expiration, option_type- The contract that matched.
iv, iv_pct, iv_units- The contract's implied volatility as a decimal and in percentage points, with the unit stated.
bid, ask, mid- The live quote for that contract.
stock_price- The underlying at the time of the call, so moneyness is reproducible.
The same data, in plain English
3 MCP tools
wrap this family.
Connect the ApexVol MCP server and an assistant can call these by name. One URL, a sign-in, no token to paste.
- get_greeks_heatmap
- get_charm_exposure
- get_third_order_greeks
Set it up in:
What people build
Three things
this is for.
Access
- Auth
- Bearer token, prefix
avmcp_, created under Account, then API Access. Shown once, hashed at rest, rotates in one click. - 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 headers.
- Plans
- Included with every paid or trial plan from $55 a month. Each endpoint follows the tier of its web feature; the cards above show which.
- Spec
- OpenAPI 3.1 at /docs/api/openapi.json, this family as one Markdown file, the whole reference at /llms-full.txt. Shared conventions, the error model and the changelog.
Questions
Asked before
the first call.
Which Greeks does the API return?
Delta, gamma, theta, vega and rho on every chain row and every delta lookup. Dealer exposure endpoints add vanna and charm. The third-order endpoint adds speed, zomma, color, vomma and ultima.
Are the Greeks computed by ApexVol or by the data vendor?
By the institutional data vendor, on the same snapshot as the quote, so a delta always matches the bid and ask beside it. ApexVol does not re-run Black-Scholes on the way out, which is also why Greeks are consistent between the chain and the delta lookup.
Can I get Greeks for a whole portfolio?
Yes. POST positions to /portfolio-greeks with the ticker, position type, quantity, strike and expiration for each leg. Stock positions are accepted alongside options. The response nets everything and breaks it down per ticker.
How do I find the 16-delta put?
GET /options-by-delta/{ticker}?delta=0.16&option_type=put, optionally with expiration=YYYY-MM-DD. The response gives the nearest listed strike and its actual delta so you can see how close the match was.
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.