Combo Option Strategy
GET/api/v1.0/quote/{symbol}/option-strategyQuery combo option lists by underlying, strategy type and expiry date. Returns combo_list[]: each item is one combo, legs always in legs[] (instrument=OPTION or STOCK). Call and put combinations are returned separately, with one combination per record. Covered(2) / Collar(8) prepend the path underlying as a STOCK leg (code=path symbol). Does not invent side / quantity; specify BUY/SELL when calling quote.combo_option_quote. Supports US (including US index options) and HK equity/ETF options; HK index, JP and other markets return ret_code=-8 unsupported. HK does not support Covered(2) / Collar(8); those requests also return -8. CalendarSpread(15) / DiagonalSpread(16) require far_expire_time. No matching combos (including the expiry having no contracts under the current filter_standard) return ret_code=0 with combo_list=[]. For spreads use quote.option_strategy_spread; for combo quoting use quote.combo_option_quote.
Parameters
| Name | Type | In | Required | Description |
|---|---|---|---|---|
symbol | string | path | yes | Option underlying symbol (path param), US or HK equity/ETF. e.g. US.AAPL / HK.00700 |
strategy | int | query | yes | Combo strategy type. 1=SingleOption 2=Covered 4=Spread 6=Straddle 7=Strangle 8=Collar 9=Butterfly 11=Condor 13=IronButterfly 14=IronCondor 15=CalendarSpread 16=DiagonalSpread 100=Customize. HK does not support 2/8 |
expire_time | string | query | yes | Near expiry date yyyy-MM-dd, e.g. 2026-08-21 |
far_expire_time | string | query | no | Far expiry date yyyy-MM-dd; required for CalendarSpread / DiagonalSpread |
spread | number | query | no | Spread in real price (0~9223372036). Required for 4/7/8/9/11/13/14/16; omitting it returns -5. Call quote.option_strategy_spread first and pass default_spread or a spread_list value. Optional for 1/2/6/15/100 |
index_option_type | int | query | no | US index option type; required only for US index underlyings, omit for equities. HK index options have no combo strategies; 1-5 (HSI/HSCEI/HSTECH etc.) are not valid here. Same US-range values as quote.option_chain (1000+) |
filter_standard | string | query | no | Filter by standard / non-standard options; ALL=all (default), STANDARD=standard only, NON_STANDARD=non-standard only |
Example
curl 'https://webapi.moomoo.com/api/v1.0/quote/US.AAPL/option-strategy?strategy=1&expire_time=value' | jqResponse
| Name | Type | Description |
|---|---|---|
data.combo_list | object[] | |
data.combo_list[].strategy | int | Combo strategy type, same values as the request strategy |
data.combo_list[].legs | object[] | |
data.combo_list[].legs[].code | string | Leg symbol. Option e.g. US.AAPL260918C50000; Covered/Collar stock e.g. US.AAPL |
data.combo_list[].legs[].instrument | string | Leg instrument: OPTION=option contract, STOCK=underlying (included for Covered/Collar only) |
data.combo_list[].legs[].strike_price | number | Strike price (divided by 1e9); omitted on STOCK legs |
data.combo_list[].legs[].option_standard_type | int | Option specification: STANDARD / NON_STANDARD / N/A; omitted on STOCK legs |
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": {
"combo_list": [
{
"strategy": 0,
"legs": "example"
}
]
}
}