Install
openclaw skills install @webull-openapi/webull-openapi-skillsTrade stocks, options, futures, crypto, and event contracts on Webull. Query real-time and historical market data. Manage accounts and positions. Supports US, HK, JP, SG, TH, MY, UK, MX, BR, EU, ZA, and AU regions with configurable risk controls.
openclaw skills install @webull-openapi/webull-openapi-skillsThis skill lets you interact with Webull's trading platform through natural language. You can place orders, check market data, query account info, and manage positions — all via the official Webull Python SDK.
place, preview, replaceoption-place, option-preview, option-replace, option-strategy-placefutures-place, futures-replacecrypto-placeevent-place, event-replaceoption-snapshot, option-bars, option-tick (category: US_OPTION, supports US/HK/JP)instrument-option-contracts (query by underlying symbol, expiry, strike, etc.)All order-mutating operations require user confirmation before execution.
Mutating actions: place, replace, cancel, batch-place, algo-place, option-place, option-replace, option-strategy-place, futures-place, futures-replace, crypto-place, event-place, event-replace.
Before executing any of these operations, the AI must:
Read-only operations (account-list, balance, position, open, history, detail, instrument-*, all market-data actions) do not require confirmation and can be executed immediately.
CLI command: After
pip install -e ., usewebull-skillon all platforms (macOS, Linux, Windows). This console entry point is bound to the Python that ranpip, so it works regardless of whatpython3orpythonpoints to on your system.
Passing order JSON: Prefer
--order-file <path>(write JSON to a temp file first) over--order-json '<inline>'. Inline JSON with--order-jsonis fragile across shells — Windows bash, PowerShell, and some macOS terminals mangle quotes and escapes. Using--order-fileavoids all shell quoting issues.
# Check your accounts
webull-skill trading --action account-list
# Get AAPL stock price
webull-skill market-data --action stock-snapshot --symbols AAPL
# Get account balance
webull-skill trading --action balance --account-id <id>
# Place a limit buy order (recommended: use --order-file)
# echo '{"symbol":"AAPL","side":"BUY","order_type":"LIMIT","limit_price":180,"quantity":10,"instrument_type":"EQUITY","market":"US","time_in_force":"DAY","entrust_type":"QTY","support_trading_session":"CORE","combo_type":"NORMAL"}' > /tmp/order.json
# webull-skill trading --action place --account-id <id> --order-file /tmp/order.json
# Cancel an order
webull-skill trading --action cancel --account-id <id> --client-order-id <oid>
webull-skill [--env-file PATH] [--verbose-sdk-log] <module> --action <ACTION> [options]
Three modules: trading, market-data, auth.
Instrument queries, account/asset operations, and all order operations (stock, option, futures, crypto, event contracts).
For full action list, order JSON formats, replace rules, and order type references, see Trading Guide.
Real-time and historical market data for all asset classes (stock, option, futures, crypto, event contracts), plus screener, fundamentals, and watchlist.
For full action list, options, category values, and examples, see Market Data Guide.
webull-skill auth
Interactive 2FA authentication. Run once before first use. The SDK waits up to 5 minutes for you to approve in the Webull mobile app. Token is cached and auto-refreshes.
All operations output formatted text directly to stdout, with a region-aware disclaimer at the top:
⚠️ Disclaimer: The information provided by this tool is for reference only ...
=== Stock Snapshot: AAPL ===
Symbol: AAPL
Price: 255.92
Pre Close: 255.63
Change: 0.29
...
Via .env file or environment variables. Required:
WEBULL_APP_KEY=<your_app_key>
WEBULL_APP_SECRET=<your_app_secret>
Region selection:
# Choose one region:
WEBULL_REGION_ID=us
# WEBULL_REGION_ID=hk
# WEBULL_REGION_ID=jp
# WEBULL_REGION_ID=sg
# WEBULL_REGION_ID=th
# WEBULL_REGION_ID=my
# WEBULL_REGION_ID=uk
# WEBULL_REGION_ID=mx
# WEBULL_REGION_ID=br
# WEBULL_REGION_ID=eu
# WEBULL_REGION_ID=za
# WEBULL_REGION_ID=au
# Sandbox by default; set prod only for live trading.
WEBULL_ENVIRONMENT=uat
.env lookup order (when --env-file is not specified):
$WEBULL_CONFIG_DIR/.env — if WEBULL_CONFIG_DIR is set<project_root>/.env — default (sibling of webull_skill/).env — last resortTo keep credentials outside the project directory, set
WEBULL_CONFIG_DIRas a system environment variable (e.g. in~/.zshrc), then place your.envat$WEBULL_CONFIG_DIR/.env. SettingWEBULL_CONFIG_DIRinside a.envfile has no effect — it must be set before the process starts.
Optional:
| Variable | Default | Description |
|---|---|---|
WEBULL_ENVIRONMENT | uat | uat (sandbox) or prod (live) |
WEBULL_REGION_ID | us | us, hk, jp, sg, th, my, uk, mx, br, eu, za, or au |
WEBULL_MAX_ORDER_NOTIONAL_USD | 10000 | Max order value (USD) |
WEBULL_MAX_ORDER_NOTIONAL_HKD | 80000 | Max order value for HK market (HKD) |
WEBULL_MAX_ORDER_NOTIONAL_CNH | 70000 | Max order value for CN market (CNH) |
WEBULL_MAX_ORDER_NOTIONAL_JPY | 1500000 | Max order value for JP market (JPY) |
WEBULL_MAX_ORDER_QUANTITY | 1000 | Max shares per order |
WEBULL_SYMBOL_WHITELIST | (none) | Comma-separated allowed symbols |
WEBULL_CONFIG_DIR | (none) | System env var only (not in .env). Moves .env lookup and token storage to this directory |
WEBULL_TOKEN_DIR | <project_root>/conf/ | Token storage directory |
WEBULL_AUDIT_LOG_FILE | (stderr) | Audit log file path |
WEBULL_LOG_LEVEL | WARNING | SDK log level |
| Feature | US | HK | JP | SG | TH | MY | UK | MX | BR | EU | ZA | AU |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Stock trading | ✓ | ✓ (US/HK/CN) | ✓ (US/JP) | ✓ (US) | ✓ (US) | ✓ (US) | ✓ (US) | ✓ (US) | ✓ (US) | ✓ (US) | ✓ (US) | ✓ (US) |
| Options | ✓ | ✓ (US only) | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
| Futures | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
| Crypto | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
| Event contracts | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
| Combo orders | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
| Algo orders | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
| Trailing stop loss | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
| Fractional shares | ✓ (US market) | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
| Company profile | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ |
| Analyst rating / target price | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ |
| NOII bars / snapshot | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ |
| Screener | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Watchlist | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ |
| Fundamentals | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
ENHANCED_LIMIT, AT_AUCTION, AT_AUCTION_LIMITLIMIT only, disabled by default — contact Webull to enablesender_sub_id and no_party_ids (BCAN)sender_sub_id only, no BCAN neededWEBULL_REGION_ID=jp; sandbox uses WEBULL_ENVIRONMENT=uat.US_STOCK and US_ETF.US and JP.LIMIT and MARKET; JP market time in force is DAY.LIMIT, MARKET, STOP_LOSS, STOP_LOSS_LIMIT with DAY or GTC.account_type: CASH or US_MARGIN.account_tax_type is required for JP stock place and preview; valid values are GENERAL and SPECIFIC.margin_type and position_intent are valid only for JP US_MARGIN accounts (for stock orders). For US option orders, position_intent is supported via option-place.close_contracts is JP-only and accepts up to 10 objects with contract_id and positive quantity.WEBULL_REGION_ID=sg; sandbox uses WEBULL_ENVIRONMENT=uat.MARKET, LIMIT, STOP_LOSS, STOP_LOSS_LIMIT.DAY, GTC.CORE, ALL, NIGHT, ALL_DAY.US only.WEBULL_REGION_ID=th; sandbox uses WEBULL_ENVIRONMENT=uat.MARKET, LIMIT, STOP_LOSS, STOP_LOSS_LIMIT.DAY, GTC.CORE, ALL, NIGHT, ALL_DAY.US only.WEBULL_REGION_ID=my; sandbox uses WEBULL_ENVIRONMENT=uat.MARKET, LIMIT, STOP_LOSS, STOP_LOSS_LIMIT.DAY, GTC.CORE, ALL, NIGHT, ALL_DAY.US only.WEBULL_REGION_ID=uk; sandbox uses WEBULL_ENVIRONMENT=uat.MARKET, LIMIT, STOP_LOSS, STOP_LOSS_LIMIT.DAY, GTC.CORE, ALL, NIGHT, ALL_DAY.US only.WEBULL_REGION_ID=mx; sandbox uses WEBULL_ENVIRONMENT=uat.MARKET, LIMIT, STOP_LOSS, STOP_LOSS_LIMIT.DAY, GTC.CORE, ALL, NIGHT, ALL_DAY.US only.WEBULL_REGION_ID=br; sandbox uses WEBULL_ENVIRONMENT=uat.MARKET, LIMIT, STOP_LOSS, STOP_LOSS_LIMIT.DAY, GTC.CORE, ALL, NIGHT, ALL_DAY.US only.WEBULL_REGION_ID=eu; sandbox uses WEBULL_ENVIRONMENT=uat.MARKET, LIMIT, STOP_LOSS, STOP_LOSS_LIMIT.DAY, GTC.CORE, ALL, NIGHT, ALL_DAY.US only.WEBULL_REGION_ID=za; sandbox uses WEBULL_ENVIRONMENT=uat.MARKET, LIMIT, STOP_LOSS, STOP_LOSS_LIMIT.DAY, GTC.CORE, ALL, NIGHT, ALL_DAY.US only.WEBULL_REGION_ID=au; sandbox uses WEBULL_ENVIRONMENT=uat.MARKET, LIMIT, STOP_LOSS, STOP_LOSS_LIMIT.DAY, GTC.CORE, ALL, NIGHT, ALL_DAY.US only.The information provided by this tool is for reference only and does not constitute investment advice. Trading involves risk; please make decisions carefully.