Options volume concentrates on a handful of underlyings each session. The Mboum most-active options endpoint ranks those names with implied-volatility rank and put/call volume context so you can seed flow dashboards without rebuilding the leaderboard yourself.
This post covers GET /v1/markets/options/most-active for stocks, ETFs, or indices. Page through the list, then parse string volume fields before you sort or compare totals.
👉 To access this endpoint, you must obtain an API key: https://mboum.com/pages/api
The Most Active Options Endpoint
Most-active options live under GET /v1/markets/options/most-active. Pass a required type. Optionally send page as an integer, for example 1.
Documentation:
https://docs.mboum.com/#stocks-options-GETapi-v1-markets-options-most-active
Request
GET https://api.mboum.com/v1/markets/options/most-active?type=STOCKS&page=1
Authorization: Bearer YOUR_API_KEY
Parameters
type— required:STOCKS,ETFS, orINDICESpage— optional integer (example1)
Choosing the Request
For this walkthrough, send type=STOCKS and page=1. That combination returns the published most-active row shape so you can confirm meta paging fields and print volume, IV rank, and put/call ratio for the first names on the list.
Keep type fixed until the first page parses cleanly. Change page only after you trust meta.count, meta.total, and meta.page. Switch to ETFS or INDICES later on the same endpoint when you need those cohorts.
Stay on most-active for the volume leaderboard. Do not invent extra columns from a different options screen while you are still validating this row shape.
Sample Response
Shortened example of meta plus one body row. Values illustrate shape only. In the sample, lastPrice, priceChange, percentChange, and optionsTotalVolume are strings:
{
"meta": {
"count": 1,
"total": 100,
"page": 1
},
"body": [
{
"symbol": "AAPL",
"symbolType": 1,
"symbolName": "Apple Inc",
"hasOptions": true,
"lastPrice": "190.00",
"priceChange": "1.25",
"percentChange": "0.66",
"optionsImpliedVolatilityRank1y": 45.2,
"optionsTotalVolume": "1,250,000",
"optionsPutVolumePercent": 42.5,
"optionsCallVolumePercent": 57.5,
"optionsPutCallVolumeRatio": 0.74,
"tradeTime": "15:59",
"symbolCode": "STK"
}
]
}
Python Example
import requests
url = "https://api.mboum.com/v1/markets/options/most-active"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
params = {"type": "STOCKS", "page": 1}
response = requests.get(url, headers=headers, params=params)
response.raise_for_status()
payload = response.json()
print(payload.get("meta", {}))
for row in payload.get("body", [])[:5]:
volume = str(row.get("optionsTotalVolume", "")).replace(",", "")
print(row.get("symbol"), volume, row.get("optionsPutCallVolumeRatio"), row.get("optionsImpliedVolatilityRank1y"))
Understanding the Response
meta includes count, total, and page. Each body row uses these keys only:
symbol,symbolType,symbolName,hasOptionslastPrice,priceChange,percentChangeoptionsImpliedVolatilityRank1yoptionsTotalVolume,optionsPutVolumePercent,optionsCallVolumePercent,optionsPutCallVolumeRatiotradeTime,symbolCode
In the sample, lastPrice, priceChange, percentChange, and optionsTotalVolume are strings. Parse them before you do math or rank by volume.
Walkthrough
- Call most-active with
type=STOCKSandpage=1. - Confirm
meta.count,meta.total, andmeta.page. - Print
symbol, parsedoptionsTotalVolume, andoptionsPutCallVolumeRatiofor the first few rows.
Watch for This
optionsTotalVolume is a string and can contain commas. Parse it before you rank by volume, or a string sort will mis-order names such as 1,250,000 versus smaller totals.
Stay on the most-active list until meta paging and the first page of volume leaders look correct. When you need ETFs or indices later, change only type on the same endpoint and parse string volume fields the same way.
👉 Get your API key and start scanning most-active options: https://mboum.com/pages/api