Skip to content

Historical Stock Connect Flows ​

GET /api/v1.0/quote/stock-connect/history

Historical daily/weekly/monthly/quarterly Stock Connect net-inflow series. Time descending; pass back page_flag as the last timestamp for the next page. Amounts in yuan. For intraday use quote.stock_connect_intraday.

Request ​

ParameterTypeInRequiredDescription
channelstringqueryyesChannel: SH / SZ / HK_SH / HK_SZ / NORTH / SOUTH
period_typestringquerynoPeriod: DAY (default) / WEEK / MONTH / QUARTER
data_kindstringquerynoQUOTA (default) / NET_TURNOVER / TRADING_AMOUNT
endstringquerynoEnd date yyyy-MM-dd inclusive; omit for now; use page_flag when paging
limitintquerynoPage size, default 30, max 200
page_flagstringquerynoPagination cursor; omit on first page, pass back pagination.page_flag

Example ​

bash
curl -X GET 'https://webapi.moomoo.com/api/v1.0/quote/stock-connect/history?channel=1&period_type=1&data_kind=1' \
  -H 'Authorization: Bearer <AccessToken>' | jq

Response ​

FieldTypeDescription
data.pointsobject[]
data.update_timeintegerUpdate time, unix seconds
data.points[].timestampintegerData time, unix seconds
data.points[].shobjectSH Connect point; may be empty when the channel was not requested
data.points[].sh[].net_inflowstringNet inflow in yuan
data.points[].sh[].close_pricestringIndex/market close price
data.points[].sh[].last_close_pricestringPrevious close, for change calculation
data.points[].sh[].buy_turnoverstringBuy turnover in yuan (NET_TURNOVER only)
data.points[].sh[].sell_turnoverstringSell turnover in yuan (NET_TURNOVER only)
data.points[].sh[].trading_amountstringTotal trading amount in yuan
data.points[].szobjectSH Connect point; may be empty when the channel was not requested
data.points[].sz[].net_inflowstringNet inflow in yuan
data.points[].sz[].close_pricestringIndex/market close price
data.points[].sz[].last_close_pricestringPrevious close, for change calculation
data.points[].sz[].buy_turnoverstringBuy turnover in yuan (NET_TURNOVER only)
data.points[].sz[].sell_turnoverstringSell turnover in yuan (NET_TURNOVER only)
data.points[].sz[].trading_amountstringTotal trading amount in yuan
data.points[].hk_shobjectSH Connect point; may be empty when the channel was not requested
data.points[].hk_sh[].net_inflowstringNet inflow in yuan
data.points[].hk_sh[].close_pricestringIndex/market close price
data.points[].hk_sh[].last_close_pricestringPrevious close, for change calculation
data.points[].hk_sh[].buy_turnoverstringBuy turnover in yuan (NET_TURNOVER only)
data.points[].hk_sh[].sell_turnoverstringSell turnover in yuan (NET_TURNOVER only)
data.points[].hk_sh[].trading_amountstringTotal trading amount in yuan
data.points[].hk_szobjectSH Connect point; may be empty when the channel was not requested
data.points[].hk_sz[].net_inflowstringNet inflow in yuan
data.points[].hk_sz[].close_pricestringIndex/market close price
data.points[].hk_sz[].last_close_pricestringPrevious close, for change calculation
data.points[].hk_sz[].buy_turnoverstringBuy turnover in yuan (NET_TURNOVER only)
data.points[].hk_sz[].sell_turnoverstringSell turnover in yuan (NET_TURNOVER only)
data.points[].hk_sz[].trading_amountstringTotal trading amount in yuan
pagination.completedstringTrue when this is the last page
pagination.page_flagstringNext page cursor (last timestamp of this page)

Errors ​

ret_codeerror.codeDescription
0—Success
-3invalid_parameterMissing or invalid parameter
-7invalid_symbolUnknown symbol
-8unsupportedMarket or product is not supported
-9permission_deniedMissing permission
-10no_dataNo data
-11rate_limitedToo many requests

Sample ​

json
{
  "ret_code": 0,
  "ret_msg": "success",
  "data": {
    "update_time": "example",
    "points": [
      {
        "timestamp": 0,
        "sh": "example",
        "sz": "example",
        "hk_sh": "example",
        "hk_sz": "example"
      }
    ]
  },
  "pagination": {
    "completed": true,
    "page_flag": ""
  }
}