Option Chain
GET/api/v1.0/quote/{symbol}/option-chainGet the option chain for a given underlying within an expiry-date range; each record is a single CALL or PUT contract. Returns: contract symbol, stock_id, contract name, lot size, security type (DRVT), option side (CALL / PUT), underlying stock symbol, strike date, strike price, index_option_type (NORMAL / SMALL / N/A), expiration cycle (MONTH / WEEK / END_OF_MONTH / QUARTERLY / WEEKMON-FRI / N/A), option specification (STANDARD / NON_STANDARD / N/A). Supported markets: HK / US / JP; other markets return ret_code=-8 unsupported. Supports HK/US/JP equities, plus HK indices (HSI / HSCEI / HSTECH, etc.) and US indices (VIX / XSP / DJX / OEX / RUT and various sector indices); index_option_type is required for index underlyings, omitted for ordinary equities. Currently unavailable indices: US..SPX, US..NDX (no data available). start / end are optional yyyy-MM-dd; empty list when no chain available; server returns at most 20 expiry dates per call (nearest first). For the expiry date list use quote.option_expiration_date; for IV / HV analysis use quote.option_volatility; for exercise probability use quote.option_exercise_probability.
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
symbol | string | path | yes | Option underlying symbol (path param), e.g. HK.00700 |
start | string | query | no | Start expiry date yyyy-MM-dd (inclusive). If omitted, no lower bound. e.g. 2026-05-01 |
end | string | query | no | End expiry date yyyy-MM-dd (inclusive). If omitted, no upper bound. e.g. 2026-05-31 |
index_option_type | int | query | no | Index option type (only for index underlyings; omit for equities). HK: 1=HSI/2=HSCEI/3=Mini-HSI/4=Mini-HSCEI/5=HSTECH; US: 1000=fallback/1001=VIX/1003=XSP/1005=EFS/1006=MXS/1007=DJX/1008=OEX/1009=SIXB/1010=SIXI/1011=SIXM/1012=SIXU/1013=SIXV/1014=XEO/1015=BKX/1016=XAU/1017=OSX/1018=SOX/1019=UTY/1020=RUT/1021=SIXRE/1022=XND/1023=CBTX/1024=MBTX; JP: 2001=N225/2002=N225M/2003=TOPIX. SPX(1002)/NDX(1004) currently have no data available and are removed |
filter_standard | string | query | no | Filter by standard / non-standard options; ALL=all (default), STANDARD=standard only, NON_STANDARD=non-standard only (FLEX / adjusted contracts) |
Example
curl 'https://webapi.moomoo.com/api/v1.0/quote/US.AAPL/option-chain' | jqResponse
| Name | Type | Description |
|---|---|---|
data.option_chain | object[] | |
data.option_chain[].code | string | Option contract symbol, e.g. HK.TCH260528C230000 |
data.option_chain[].stock_id | string | Option contract numeric ID, e.g. 81210697 |
data.option_chain[].name | string | Option contract English name |
data.option_chain[].sc_name | string | Option contract Simplified Chinese name |
data.option_chain[].tc_name | string | Option contract Traditional Chinese name |
data.option_chain[].lot_size | int | Shares per lot for the contract, e.g. 100 |
data.option_chain[].stock_type | string | Security type; always DRVT for option contracts |
data.option_chain[].option_type | string | Option side. Values: CALL / PUT |
data.option_chain[].stock_owner | string | Underlying stock symbol, e.g. HK.00700 |
data.option_chain[].strike_time | string | Strike date, format yyyy-MM-dd, e.g. 2026-05-28 |
data.option_chain[].strike_price | number | Strike price (divided by 1e9 to restore the real value), e.g. 230 |
data.option_chain[].index_option_type | string | Index option type. Values: NORMAL (standard index option) / SMALL (mini index option, e.g. Mini-HSI / Mini-HSCEI) / N/A (non-index option or unspecified) |
data.option_chain[].expiration_cycle | int | Expiration cycle. Values: MONTH / WEEK / END_OF_MONTH / QUARTERLY / WEEKMON / WEEKTUE / WEEKWED / WEEKTHU / WEEKFRI / N/A |
data.option_chain[].option_standard_type | int | Option specification type. Values: STANDARD / NON_STANDARD (FLEX / adjusted contracts) / N/A |
Errors
| ret_code | error.code | When |
|---|---|---|
| 0 | — | Success |
| -3 | invalid_parameter | A parameter is missing or not in the allowed set |
| -7 | invalid_symbol | Symbol is not in the security master |
| -8 | unsupported | Market or instrument is outside this API |
| -9 | permission_denied | Authenticated, but without quote permission |
| -10 | no_data | Nothing is returned |
| -11 | rate_limited | Per-user rate limit |
Response example
{
"ret_code": 0,
"ret_msg": "success",
"data": {
"option_chain": [
{
"code": "US.AAPL",
"stock_id": "example",
"name": "example",
"sc_name": "example",
"tc_name": "example",
"lot_size": 0,
"stock_type": "example",
"option_type": "example",
"stock_owner": "example",
"strike_time": "example",
"strike_price": 1.2,
"index_option_type": "example",
"expiration_cycle": 0,
"option_standard_type": 0
}
]
}
}