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, with all legs in legs[] (instrument=OPTION for option contracts; Covered/Collar also include the path underlying as instrument=STOCK).

For spread-style strategies, call Combo Option Spread first to get spread_list / default_spread, then pass spread into this API.

Parameters

NameTypeInRequiredDescription
symbolstringpathyesOption underlying code, US or HK equity/ETF. e.g. US.AAPL / HK.00700.
strategyintqueryyesCombo strategy type. See Naming Dictionary. HK does not support Covered(2) / Collar(8).
expire_timestringqueryyesNear expiry date yyyy-MM-dd, e.g. 2026-08-21.
far_expire_timestringqueryconditionallyFar expiry date yyyy-MM-dd. Required for CalendarSpread(15) / DiagonalSpread(16), and must be later than expire_time.
spreadnumberqueryconditionallySpread in real price (0~9223372036). Required for 4/7/8/9/11/13/14/16; omitting it returns -5. Call Combo Option Spread first and pass default_spread or a spread_list value. Optional for 1/2/6/15/100. See Naming Dictionary.
index_option_typeintquerynoUS index option type; required only for US index underlyings, omit for equities. Use the US block (1000+) in the Naming Dictionary.
filter_standardstringquerynoFilter by standard/non-standard, default ALL. See Naming Dictionary.

Request Example

bash
curl 'https://webapi.moomoo.com/api/v1.0/quote/US.AAPL/option-strategy?strategy=2&expire_time=2026-09-18' | jq
curl 'https://webapi.moomoo.com/api/v1.0/quote/US.AAPL/option-strategy?strategy=6&expire_time=2026-08-21' | jq
curl 'https://webapi.moomoo.com/api/v1.0/quote/US.AAPL/option-strategy?strategy=4&expire_time=2026-08-21&spread=5' | jq
curl 'https://webapi.moomoo.com/api/v1.0/quote/HK.00700/option-strategy?strategy=6&expire_time=2026-09-29' | jq

Response Fields

Returns data.combo_list[], each element is one combo:

FieldTypeDescription
strategyintCombo strategy type, same values as the request. See Naming Dictionary.
legsobject[]All legs of this combo, see below. For Covered/Collar the first leg is the underlying stock, followed by option legs.

Each element of legs[]:

FieldTypeDescription
codestringLeg symbol. Option e.g. US.AAPL260918C50000; stock e.g. US.AAPL.
instrumentstringLeg instrument. OPTION=option contract, STOCK=underlying (Covered/Collar only). See Naming Dictionary.
strike_pricenumberStrike price (already restored to the real value). Present on option legs only.
option_standard_typestringOption specification. Present on option legs only. See Naming Dictionary.

This API does not return side / quantity. Supply buy/sell and size when calling Combo Option Quote.

Supported Markets

  • 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.
  • Index underlyings must pass index_option_type (US block); regular stocks should not pass this parameter.
  • expire_time must be a real expiry date of the underlying (use Option Expiration Date).
  • Spread-style strategies (4/7/8/9/11/13/14/16) require spread; calendar/diagonal also require far_expire_time. Full table: Naming Dictionary.
  • When there is no matching combo, returns an empty combo_list with ret_code=0.

Error Codes

ret_codeerror.codeTrigger ScenarioSuggested Handling
0Success (including empty list)
-3invalid_parametersymbol / strategy / expire_time missing or invalid; date is not yyyy-MM-dd; CalendarSpread / DiagonalSpread missing far_expire_time, or far expiry is not later than near expiryCorrect request parameters and retry
-7invalid_symbolPath symbol not found in security databaseVerify code validity via search API
-8unsupportedMarket is not US/HK equity or ETF; or HK requested Covered(2) / Collar(8)This underlying or strategy does not support combo options, no need to retry
-5internal_errorGateway internal error / backend call failure / timeout; also returned when a spread-style strategy omits spreadCall the spread API, pass spread, then retry; contact platform if it still fails

Response Example

Covered: each item is one covered combo; BFF injects the stock leg.

json
{
  "ret_code": 0,
  "ret_msg": "",
  "data": {
    "combo_list": [
      {
        "strategy": 2,
        "legs": [
          { "code": "US.AAPL", "instrument": "STOCK" },
          { "code": "US.AAPL260918C50000", "instrument": "OPTION", "strike_price": 50, "option_standard_type": "STANDARD" }
        ]
      }
    ]
  }
}

Straddle: each item is one combo of two option legs; no stock leg.

json
{
  "ret_code": 0,
  "ret_msg": "",
  "data": {
    "combo_list": [
      {
        "strategy": 6,
        "legs": [
          { "code": "US.AAPL260918P50000", "instrument": "OPTION", "strike_price": 50, "option_standard_type": "STANDARD" },
          { "code": "US.AAPL260918C50000", "instrument": "OPTION", "strike_price": 50, "option_standard_type": "STANDARD" }
        ]
      }
    ]
  }
}