gexbot api
state

gex profile max change

Shows the strikes with the most significant change in GEX imbalance over various lookback periods. Also known as "max priors" for the GEX Profile.

GET/{ticker}/state/{category}/maxchangeState Tier

chart

Powers the gex profile chart.

Shows the strikes with the most significant change in GEX imbalance over various lookback periods. Also known as "max priors" for the GEX Profile.

Subscription

Requires a State subscription or higher.

Request

Example: /SPX/state/full/maxchange

Headers

NameTypeDescription
AuthorizationstringRequired. Format: "Bearer <YOUR_API_KEY>"
User-AgentstringRequired. Identify your client application.
AcceptstringRequired. Set to "application/json".

Path parameters

NameTypeDescription
tickerstringDesired ticker symbol (e.g., SPX).
categorystringGEX aggregation category: full, gex_full, zero, gex_zero, one, or gex_one.

Response

FieldTypeDescription
timestampintegerThe Unix timestamp of when the data was generated.
tickerstringThe ticker symbol for the requested asset.
currentarrayThe strike and GEX imbalance value with the largest change in the last calculation cycle. Two numbers: [strike, GEX change].
onearrayThe strike and GEX imbalance value with the largest change in the last 1 minute. Two numbers: [strike, GEX change].
fivearrayThe strike and GEX imbalance value with the largest change in the last 5 minutes. Two numbers: [strike, GEX change].
tenarrayThe strike and GEX imbalance value with the largest change in the last 10 minutes. Two numbers: [strike, GEX change].
fifteenarrayThe strike and GEX imbalance value with the largest change in the last 15 minutes. Two numbers: [strike, GEX change].
thirtyarrayThe strike and GEX imbalance value with the largest change in the last 30 minutes. Two numbers: [strike, GEX change].
{
  "timestamp": 1753283592,
  "ticker": "SPX",
  "current": [
    6340,
    -32.156
  ],
  "one": [
    6335,
    85.319
  ],
  "five": [
    6330,
    -236.029
  ],
  "ten": [
    6325,
    409.361
  ],
  "fifteen": [
    6340,
    -795.71
  ],
  "thirty": [
    6340,
    -337.716
  ]
}
{
  "type": "object",
  "required": [
    "timestamp",
    "ticker",
    "current",
    "one",
    "five",
    "ten",
    "fifteen",
    "thirty"
  ],
  "properties": {
    "timestamp": {
      "type": "integer",
      "format": "int64"
    },
    "ticker": {
      "type": "string",
      "minLength": 2,
      "maxLength": 6
    },
    "current": {
      "type": "array",
      "minItems": 2,
      "maxItems": 2,
      "items": {
        "type": "number"
      }
    },
    "one": {
      "type": "array",
      "minItems": 2,
      "maxItems": 2,
      "items": {
        "type": "number"
      }
    },
    "five": {
      "type": "array",
      "minItems": 2,
      "maxItems": 2,
      "items": {
        "type": "number"
      }
    },
    "ten": {
      "type": "array",
      "minItems": 2,
      "maxItems": 2,
      "items": {
        "type": "number"
      }
    },
    "fifteen": {
      "type": "array",
      "minItems": 2,
      "maxItems": 2,
      "items": {
        "type": "number"
      }
    },
    "thirty": {
      "type": "array",
      "minItems": 2,
      "maxItems": 2,
      "items": {
        "type": "number"
      }
    }
  },
  "additionalProperties": false
}
type: object
required:
  - timestamp
  - ticker
  - current
  - one
  - five
  - ten
  - fifteen
  - thirty
properties:
  timestamp:
    type: integer
    format: int64
  ticker:
    type: string
    minLength: 2
    maxLength: 6
  current:
    type: array
    minItems: 2
    maxItems: 2
    items:
      type: number
  one:
    type: array
    minItems: 2
    maxItems: 2
    items:
      type: number
  five:
    type: array
    minItems: 2
    maxItems: 2
    items:
      type: number
  ten:
    type: array
    minItems: 2
    maxItems: 2
    items:
      type: number
  fifteen:
    type: array
    minItems: 2
    maxItems: 2
    items:
      type: number
  thirty:
    type: array
    minItems: 2
    maxItems: 2
    items:
      type: number
additionalProperties: false

Errors

Most error responses have the body {"error": "<message>"}. A 401 response has no body. A 403 response from the API key product check also has no body.

StatusBodyWhen
400{"error": "User-Agent not found."}The request has no User-Agent header.
400{"error": "Authorization header not found."}The request has no Authorization header.
400{"error": "Invalid ticker format."} or {"error": "Unknown ticker symbol: <ticker>"}The ticker is not a known symbol.
400{"error": "Invalid category package combination."}The category is not a state category.
400{"error": "Category must be one of gex_full, gex_one or gex_zero"}The category is a greek category (delta, gamma, vanna, charm and their _zero and _one forms). This route accepts the GEX categories only.
401(no body)The API key is not valid.
403{"error": "User is not subscribed."}The account has no subscription.
403{"error": "User does not have permission to access this endpoint."}The account does not have REST API access.
403{"error": "Classic package does not have access."}The account has a Classic subscription. This route needs State or higher.
403{"error": "Commercial child access is suspended."}The commercial seat that owns the API key is suspended.
404{"error": "Chart not found."}The server has no max change data for the ticker and category yet.
429{"error": "Rate limit exceeded."}The account has used its quota for this endpoint. See rate limits.
500{"error": "Failed to get max change"}The server could not read the data. Retry the request.

On this page