Skip to content

Market data ​

Get quotes and bulk snapshots, choose candlestick intervals and adjustments, and retrieve historical data by date.

Commands at a glance ​

CommandDescription
futu quote <symbol...>Get quotes for one or more symbols
futu snapshot <symbol...>Get market snapshots in bulk
futu basicinfo <symbol...>Get basic security information
futu kline <symbol>Get recent candlesticks
futu history-kline <symbol>Get historical candlesticks for a date range
futu ticker <symbol>Get tick-by-tick trades
futu rt-data <symbol>Get intraday data
futu order-book <symbol>Get the order book; depth is an alias
futu rank [type]Get market rankings
futu option chain <symbol>Get an options chain
futu market-state <symbol...>Get market status
futu trading-daysGet trading days for a market

Symbol formats ​

Security symbols use the MARKET.CODE format:

ExampleMarket
US.AAPLUnited States
US.NVDAUnited States
HK.00700Hong Kong
SH.600519China A-shares (Shanghai)
SZ.000858China A-shares (Shenzhen)
SG.D05Singapore
KR.000660South Korea

Numeric Hong Kong codes are padded to five digits: HK.700 becomes HK.00700. Recognition of a symbol format does not mean every API or account supports that market.

search accepts company names or keywords, for example futu search AAPL. Crypto trading commands use trading pairs such as BTCUSD.

quote and snapshot ​

Use quote for prices, changes, volume, or US trading-session quotes. Use snapshot for the broader fields available in bulk snapshots. Their JSON structures differ and must be parsed separately.

bash
futu quote HK.00700 US.AAPL --format json
futu snapshot HK.00700 US.AAPL --format json

Common quote fields:

FieldMeaning
codeSecurity symbol, for example US.AAPL
last_price / prev_close_pricePrice / previous close; calculate percentage change as (last_price / prev_close_price - 1) × 100%
open_price / high_price / low_priceOpen / high / low
volume / turnoverTrading volume / turnover; units depend on the product
data_date / data_timeRaw date / time fields; check the API's format, units, and time zone before converting
pre_market / after_market / overnightPre-market / after-hours / overnight quotes, when available

Interpret prices in the security's quoted currency; quote does not provide a currency field. Zero and empty object fields may be omitted. See JSON output conventions.

Last is the price for that session; Change% is the percentage change. US stocks may also include PREMARKET, AFTERHOURS, or OVERNIGHT rows when data is available. Compare prices within the same session. JSON output includes raw fields omitted from the table.

Common candlestick options ​

Get the latest 100 daily candlesticks:

bash
futu kline US.AAPL --ktype 2 --num 100 --autype 1 --format json
OptionDefaultCommon values and behavior
--ktype21 = 1 minute, 2 = daily, 3 = weekly, 4 = monthly, 6 = 5 minutes, 9 = 60 minutes
--num / -n100Number of bars, up to 370
--autype10 = unadjusted, 1 = forward-adjusted, 2 = backward-adjusted; kline also accepts 3 / 4 (forward / backward adjustment including dividends); history-kline accepts 0 / 1 / 2
--extended-time00 = regular session, 1 = include US pre-market and after-hours minute bars, 2 = include US overnight trading; subject to API and product support

Keep the interval and adjustment method consistent when comparing periods for the same symbol. Price field names also differ: kline uses open_price, close_price, and similar fields; history-kline uses open, close, and similar fields.

Historical candlesticks and pagination ​

Read and save one page for a date range. This Bash example uses jq to extract the next-page cursor:

bash
futu history-kline US.AAPL --ktype 2 --autype 1 --num 100 \
  --start 2026-01-01 --end 2026-09-30 --format json > aapl-page-1.json

After the query succeeds, read next_time. Depending on the response wrapper, it may appear under pagination, under the data object, or at the top level:

bash
next_time=$(jq -r '.pagination.next_time // .data.next_time // .next_time // empty' aapl-page-1.json) || exit 1

if [ -n "$next_time" ] && [ "$next_time" != "0" ]; then
  futu history-kline US.AAPL --ktype 2 --autype 1 --num 100 \
    --start 2026-01-01 --next-time "$next_time" --format json > aapl-page-2.json
else
  printf '%s\n' 'No valid next-page cursor. Check the returned date range for completeness.'
fi

--start and --end use YYYY-MM-DD, inclusive. If omitted, --end defaults to the current date in the execution environment. --next-time is a millisecond timestamp, pages toward older data, and takes precedence over --end. Keep the symbol, interval, adjustment method, and start date unchanged between pages. Do not continue with an empty or zero cursor; stop and inspect the results if a cursor repeats.

When date is returned as an integer in YYYYMMDD form, parse it as a date. The cursor's millisecond unit does not apply to every time field. Check the relevant API's units and time zone for raw fields such as time and time_key.

More query examples ​

bash
# Get the order book
futu order-book HK.00700

# Get an options chain
futu option chain US.AAPL --format json

# Get trading days
futu trading-days --market US --start 2026-10-01 --end 2026-10-31 --format json

Run futu kline --help, futu history-kline --help, or futu option chain --help for all intervals and options.