Skip to content

Combo Option Strategy ​

GET /api/v1.0/quote/{symbol}/option-strategy

Query 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 ​

NameTypeInRequiredDescription
symbolstringpathyesOption underlying symbol (path param), US or HK equity/ETF. e.g. US.AAPL / HK.00700
strategyintqueryyesCombo 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_timestringqueryyesNear expiry date yyyy-MM-dd, e.g. 2026-08-21
far_expire_timestringquerynoFar expiry date yyyy-MM-dd; required for CalendarSpread / DiagonalSpread
spreadnumberquerynoSpread 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_typeintquerynoUS 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_standardstringquerynoFilter by standard / non-standard options; ALL=all (default), STANDARD=standard only, NON_STANDARD=non-standard only

Example ​

bash
curl 'https://webapi.moomoo.com/api/v1.0/quote/US.AAPL/option-strategy?strategy=1&expire_time=value' | jq

Response ​

NameTypeDescription
data.combo_listobject[]
data.combo_list[].strategyintCombo strategy type, same values as the request strategy
data.combo_list[].legsobject[]
data.combo_list[].legs[].codestringLeg symbol. Option e.g. US.AAPL260918C50000; Covered/Collar stock e.g. US.AAPL
data.combo_list[].legs[].instrumentstringLeg instrument: OPTION=option contract, STOCK=underlying (included for Covered/Collar only)
data.combo_list[].legs[].strike_pricenumberStrike price (divided by 1e9); omitted on STOCK legs
data.combo_list[].legs[].option_standard_typeintOption specification: STANDARD / NON_STANDARD / N/A; omitted on STOCK legs

Errors ​

ret_codeerror.codeWhen
0—Success
-3invalid_parameterA parameter is missing or not in the allowed set
-7invalid_symbolSymbol is not in the security master
-8unsupportedMarket or instrument is outside this API
-9permission_deniedAuthenticated, but without quote permission
-10no_dataNothing is returned
-11rate_limitedPer-user rate limit

Response example ​

json
{
  "ret_code": 0,
  "ret_msg": "success",
  "data": {
    "combo_list": [
      {
        "strategy": 0,
        "legs": "example"
      }
    ]
  }
}