Market data
Get quotes and bulk snapshots, choose candlestick intervals and adjustments, and retrieve historical data by date.
Commands at a glance
| Command | Description |
|---|---|
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-days | Get trading days for a market |
Symbol formats
Security symbols use the MARKET.CODE format:
| Example | Market |
|---|---|
US.AAPL | United States |
US.NVDA | United States |
HK.00700 | Hong Kong |
SH.600519 | China A-shares (Shanghai) |
SZ.000858 | China A-shares (Shenzhen) |
SG.D05 | Singapore |
KR.000660 | South 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.
futu quote HK.00700 US.AAPL --format json
futu snapshot HK.00700 US.AAPL --format jsonCommon quote fields:
| Field | Meaning |
|---|---|
code | Security symbol, for example US.AAPL |
last_price / prev_close_price | Price / previous close; calculate percentage change as (last_price / prev_close_price - 1) × 100% |
open_price / high_price / low_price | Open / high / low |
volume / turnover | Trading volume / turnover; units depend on the product |
data_date / data_time | Raw date / time fields; check the API's format, units, and time zone before converting |
pre_market / after_market / overnight | Pre-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:
futu kline US.AAPL --ktype 2 --num 100 --autype 1 --format json| Option | Default | Common values and behavior |
|---|---|---|
--ktype | 2 | 1 = 1 minute, 2 = daily, 3 = weekly, 4 = monthly, 6 = 5 minutes, 9 = 60 minutes |
--num / -n | 100 | Number of bars, up to 370 |
--autype | 1 | 0 = unadjusted, 1 = forward-adjusted, 2 = backward-adjusted; kline also accepts 3 / 4 (forward / backward adjustment including dividends); history-kline accepts 0 / 1 / 2 |
--extended-time | 0 | 0 = 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:
futu history-kline US.AAPL --ktype 2 --autype 1 --num 100 \
--start 2026-01-01 --end 2026-09-30 --format json > aapl-page-1.jsonAfter 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:
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
# 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 jsonRun futu kline --help, futu history-kline --help, or futu option chain --help for all intervals and options.