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, 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
| Name | Type | In | Required | Description |
|---|---|---|---|---|
symbol | string | path | yes | Option underlying code, US or HK equity/ETF. e.g. US.AAPL / HK.00700. |
strategy | int | query | yes | Combo strategy type. See Naming Dictionary. HK does not support Covered(2) / Collar(8). |
expire_time | string | query | yes | Near expiry date yyyy-MM-dd, e.g. 2026-08-21. |
far_expire_time | string | query | conditionally | Far expiry date yyyy-MM-dd. Required for CalendarSpread(15) / DiagonalSpread(16), and must be later than expire_time. |
spread | number | query | conditionally | Spread 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_type | int | query | no | US index option type; required only for US index underlyings, omit for equities. Use the US block (1000+) in the Naming Dictionary. |
filter_standard | string | query | no | Filter 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' | jqResponse Fields
Returns data.combo_list[], each element is one combo:
| Field | Type | Description |
|---|---|---|
strategy | int | Combo strategy type, same values as the request. See Naming Dictionary. |
legs | object[] | 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[]:
| Field | Type | Description |
|---|---|---|
code | string | Leg symbol. Option e.g. US.AAPL260918C50000; stock e.g. US.AAPL. |
instrument | string | Leg instrument. OPTION=option contract, STOCK=underlying (Covered/Collar only). See Naming Dictionary. |
strike_price | number | Strike price (already restored to the real value). Present on option legs only. |
option_standard_type | string | Option 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_timemust be a real expiry date of the underlying (use Option Expiration Date).- Spread-style strategies (
4/7/8/9/11/13/14/16) requirespread; calendar/diagonal also requirefar_expire_time. Full table: Naming Dictionary. - When there is no matching combo, returns an empty
combo_listwithret_code=0.
Error Codes
| ret_code | error.code | Trigger Scenario | Suggested Handling |
|---|---|---|---|
| 0 | — | Success (including empty list) | — |
| -3 | invalid_parameter | symbol / 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 expiry | Correct request parameters and retry |
| -7 | invalid_symbol | Path symbol not found in security database | Verify code validity via search API |
| -8 | unsupported | Market 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 |
| -5 | internal_error | Gateway internal error / backend call failure / timeout; also returned when a spread-style strategy omits spread | Call 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" }
]
}
]
}
}