Skip to main content
GET
/
gex
/
max-pain
Max-pain strike (per-expiry)
curl --request GET \
  --url https://api.example.com/gex/max-pain \
  --header 'X-API-Key: <api-key>'
{
  "data": {
    "expiry": "<string>",
    "dte": 123,
    "max_pain": {
      "strike": 123,
      "value": 123
    },
    "pain_curve": [
      {
        "strike": 123,
        "pain": 123
      }
    ],
    "per_expiry": [
      {
        "expiry": "<string>",
        "max_pain": {
          "strike": 123,
          "value": 123
        },
        "dte": 123
      }
    ]
  },
  "meta": {
    "version": "<string>",
    "timestamp": "<string>",
    "request_id": "<string>",
    "symbol": "<string>",
    "spot_price": 123,
    "computed_at": "<string>",
    "freshness_seconds": 123,
    "source": [
      "<string>"
    ],
    "exchanges_filtered": [
      "<string>"
    ],
    "rate_limit": {},
    "extra": {}
  },
  "success": true
}

Documentation Index

Fetch the complete documentation index at: https://docs.backquant.com/llms.txt

Use this file to discover all available pages before exploring further.

The strike where option writers profit most at expiry. Use ?expiry=0dte for the cheapest path, ?expiry=all for a per-expiry table, or pass a specific expiry token to also receive the full pain curve.

See also

Max pain explained

Authorizations

X-API-Key
string
header
required

Your BackQuant API key (same key as v1)

Headers

X-API-Key
string | null

Query Parameters

symbol
enum<string>
default:BTCUSDT

Trading symbol: BTCUSDT, ETHUSDT, SOLUSDT, or HYPEUSDT.

Available options:
BTCUSDT,
ETHUSDT,
SOLUSDT,
HYPEUSDT
expiry
string
default:all

Which expiry to include: all for every expiry, 0dte for today's expiry only, or a specific date (YYYY-MM-DD) or Deribit token (28MAR25).

Response

Successful Response

data
MaxPainResponseData · object
required
meta
V2Meta · object
required

The meta block returned alongside every v2 response.

Every field after version/timestamp is optional because endpoints attach different combinations — e.g. /v2/status skips symbol, the chain endpoint sets extra.filter_hash, etc. Listing them here means SDKs get a typed accessor for each instead of a generic meta: dict.

success
boolean
default:true