Shioaji — cross-language, cross-platform universal trading API. Native Python bindings, HTTP API with SSE streaming, standalone CLI, and a visual dashboard.
Project description
Shioaji
Shioaji is a trading API provided by Sinopac that offers a comprehensive and user-friendly platform for accessing the Taiwan financial markets. Shioaji is a cross-language, cross-platform universal trading platform — accessible through native Python bindings (import shioaji as sj) or any HTTP-capable language (JavaScript/TypeScript, Go, C/C++, C#, Rust, Java/Kotlin) for trading stocks, futures, options, and combo orders. On the Python side, Shioaji integrates seamlessly with familiar packages such as numpy, scipy, pandas, pytorch, and tensorflow for building custom trading models; on the HTTP side, a built-in OpenAPI interactive document, SSE real-time streaming, and a visual Dashboard provide live monitoring of server status, SSE connections, CA certificates, accounts, and API usage. Whether for traders new to the world of programmatic trading or experienced developers seeking a more powerful platform, Shioaji is built to deliver. Sign up for a free account today and start trading with confidence.
✨ The first Taiwan trading API with AI coding agent skill support — Claude Code & Codex CLI
- AI Coding Agent Skills
- Installation
- Quickstart
- Conclusion
- Communication
- Releases and Contributing
- The Team
AI Coding Agent Skills
Shioaji is the first Taiwan trading API with AI coding agent skill support. Get AI-assisted guidance on using the Shioaji API.
Claude Code
claude plugin marketplace add Sinotrade/Shioaji
claude plugin install shioaji
Multi-platform Installers (Cursor, Windsurf, Copilot, Codex, and more)
npx skills add Sinotrade/Shioaji # skills.sh - 18+ agents
npx skillkit install Sinotrade/Shioaji # skillkit - 32+ agents
npx openskills install Sinotrade/Shioaji # openskills - universal
Installation
Expand the section that matches your installation preference.
Python Package
# uv (recommended)
uv add shioaji
# pip
pip install shioaji
CLI Tool
uv tool install shioaji
shioaji --help
Standalone Installer
Linux / macOS:
# Stable
curl -fsSL https://raw.githubusercontent.com/sinotrade/shioaji/master/install.sh | sh
# Pre-release
curl -fsSL https://raw.githubusercontent.com/sinotrade/shioaji/master/install.sh | CHANNEL=prerelease sh
# Specific version
curl -fsSL https://raw.githubusercontent.com/sinotrade/shioaji/master/install.sh | VERSION=v1.5.0 sh
Windows (PowerShell):
# Stable
irm https://raw.githubusercontent.com/sinotrade/shioaji/master/install.ps1 | iex
# Pre-release
$env:CHANNEL="prerelease"; irm https://raw.githubusercontent.com/sinotrade/shioaji/master/install.ps1 | iex
Quickstart
Expand the section that matches your preferred development language.
Python
Initialization (login + activate certificate)
import shioaji as sj
api = sj.Shioaji()
accounts = api.login(api_key="YOUR_KEY", secret_key="YOUR_SECRET")
api.activate_ca(
ca_path="/c/your/ca/path/Sinopac.pfx",
ca_passwd="YOUR_CA_PASSWORD",
)
Just import the API library like other popular Python packages and create the instance to start using it. After logging in, the API is ready for market data queries; once the certificate is activated, order placement is enabled.
Subscribe to Streaming Market Data
api.subscribe(api.Contracts.Stocks["2330"], quote_type="tick")
api.subscribe(api.Contracts.Stocks["2330"], quote_type="bid_ask")
api.subscribe(api.Contracts.Futures["TXFC0"], quote_type="tick")
Subscribe to real-time market data. Pass a contract into the subscribe function and specify a quote_type to begin receiving streaming data.
Place Order
contract = api.Contracts.Stocks["2890"]
order = sj.StockOrder(
price=9.6,
quantity=1,
action=sj.Action.Buy,
price_type=sj.StockPriceType.LMT,
order_type=sj.OrderType.ROD,
order_lot=sj.StockOrderLot.Common,
account=api.stock_account,
)
trade = api.place_order(contract, order)
As with subscribing to market data using a contract, an order must first be defined and then passed alongside the contract into the place_order function. The function returns a trade object representing the order's status.
Cross-language
Start the Server
shioaji server start
Once the server is running, all trading capabilities are exposed as RESTful endpoints accessible from any HTTP-capable language (JavaScript, Go, C#, Java, Rust, C/C++, etc.).
Verify that the server has started successfully:
curl http://localhost:8080/api/v1/health
Getting Started
Once the server is running, the following entry points are available:
| Purpose | URL |
|---|---|
| Dashboard (live monitoring & management) | http://localhost:8080/ |
| OpenAPI document (browse API, run tests in-browser) | http://localhost:8080/docs |
| Custom apps (entry point for self-uploaded web apps) | http://localhost:8080/apps/<name>/ |
Open /docs to browse all endpoints, inspect request/response schemas, generate code samples in multiple languages, and test directly from the browser.
Custom Web Apps
Custom web apps can be uploaded from the Dashboard's Custom Apps card and run alongside the Dashboard; once uploaded, an app is served at http://localhost:8080/apps/<name>/.
- Supported formats: a single HTML file, or a build output folder from frontend frameworks such as Vite / React / Vue (containing
index.html). - Upload steps: log in to the Dashboard → click Custom Apps → Upload → select the file or folder → set the application name
<name>. - Project template:
@sinotrade/create-shioaji-app— scaffolds a Shioaji frontend project with one command.
CLI
The shioaji CLI provides direct server management, market data queries, and order placement.
shioaji --help # list all commands
shioaji tree --all # show full command tree (with parameters and descriptions)
Server Management
| Purpose | Command |
|---|---|
| Start HTTP server (simulation mode) | shioaji server start |
| Start HTTP server (production mode) | shioaji server start --production |
| Check mode and authentication status | shioaji server check |
| Show daemon status | shioaji server status |
| Stop daemon | shioaji server stop |
Conclusion
This quickstart shows the multiple ways to access Shioaji — from native Python, HTTP API, and CLI to custom web apps. The focus is on building an easy-to-use, cross-language trading API that lets any developer trade Taiwan's financial markets with confidence.
For more usage details, see
Communication
Releases and Contributing
Shioaji has a 14 day release cycle. See the release change log. Please let us know if you encounter a bug by filing an issue.
We appreciate all suggestions. If you have any idea you'd like to see implemented, feel free to discuss with us on Telegram or Discord.
The Team
Shioaji is currently maintained by Sally, Yvictor, Zecheng and Po Chien Yang with major contributions.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file shioaji-1.5.0-cp314-cp314t-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: shioaji-1.5.0-cp314-cp314t-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 35.4 MB
- Tags: CPython 3.14t, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c4b1609212449b416a4c5012965faef453a3ff915782e919013238fd6eb51ca6
|
|
| MD5 |
f72bb0fab04c0d0e52705ebe277a658e
|
|
| BLAKE2b-256 |
8d946069737b67f3df14d2263096efc93f3a1695178c7ebd2ae6cea6dc292433
|
File details
Details for the file shioaji-1.5.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: shioaji-1.5.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 37.7 MB
- Tags: CPython 3.14t, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
12aab50ff2b2acdef09bdd21376cb0a302a3e131fa358e3f293027a6a73d9dca
|
|
| MD5 |
3d990fa7a5ce70331f5fc36dadf0db86
|
|
| BLAKE2b-256 |
91fe7d720c1ed5c5df060876ee6606fec73fe42fed09cf767db62a72a8078881
|
File details
Details for the file shioaji-1.5.0-cp314-cp314t-macosx_11_0_arm64.whl.
File metadata
- Download URL: shioaji-1.5.0-cp314-cp314t-macosx_11_0_arm64.whl
- Upload date:
- Size: 33.4 MB
- Tags: CPython 3.14t, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
920821401bc2053bd2a0e64882d8bac9f0c6237bfc91bf802c190d26fd805657
|
|
| MD5 |
a52557dae9fc38ad44188a2e9ce9316a
|
|
| BLAKE2b-256 |
d2f0e40bf5cb50591e37a72938b637c47513786d4032285a4d189780cffeb2bf
|
File details
Details for the file shioaji-1.5.0-cp314-cp314t-macosx_10_15_x86_64.whl.
File metadata
- Download URL: shioaji-1.5.0-cp314-cp314t-macosx_10_15_x86_64.whl
- Upload date:
- Size: 36.3 MB
- Tags: CPython 3.14t, macOS 10.15+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6246b7af96bb24b58059f69a5af6b18db0c06f852433b1a98d59785e489845fb
|
|
| MD5 |
9cc7385649efa6c50d21c3f9d4ad9010
|
|
| BLAKE2b-256 |
ddbc3628672c77a1d79c1e7f67e12f536814a1b7ece94db820e20d435d73899a
|
File details
Details for the file shioaji-1.5.0-cp37-abi3-win_amd64.whl.
File metadata
- Download URL: shioaji-1.5.0-cp37-abi3-win_amd64.whl
- Upload date:
- Size: 39.7 MB
- Tags: CPython 3.7+, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b4f8680d2d5fa0d92d9a4ba1d44868714fe51f5f43757613b39d8f36f0dac335
|
|
| MD5 |
006ce5dfe1c1451bea0f29078615917b
|
|
| BLAKE2b-256 |
82a7e87f564ec34a953331e8a4832141ce50b38c456d938429b69fd20559a7ea
|
File details
Details for the file shioaji-1.5.0-cp37-abi3-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: shioaji-1.5.0-cp37-abi3-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 35.4 MB
- Tags: CPython 3.7+, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6f7aa924717d7099578a26c67ddc142f7f9934f661e2a964f002f105da040b90
|
|
| MD5 |
db29cd2444c15915e3fd1e59f378ccfe
|
|
| BLAKE2b-256 |
b49dc69bb73910845616a93d0920b3c496d70957dd69eb375aedb396037bc3a4
|
File details
Details for the file shioaji-1.5.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: shioaji-1.5.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 37.7 MB
- Tags: CPython 3.7+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ee00c5e5584c417259fd2cf73615220e95230b933ab8b1479b21fc2aa4b8a4f2
|
|
| MD5 |
6ccabf0a7b757fa5e4f9f3ce1a886fc4
|
|
| BLAKE2b-256 |
fd1bf8d38bf0353e0ab1098dc952f17d39da528dd09c5a997daf7ccebb2f4843
|
File details
Details for the file shioaji-1.5.0-cp37-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: shioaji-1.5.0-cp37-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 33.4 MB
- Tags: CPython 3.7+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
80b19288f80cb98e29a4f99e2d844c8ac71bea5bd99b5620b519c6e130d8157a
|
|
| MD5 |
25b3f6f86e6fbf7f30a0c34526969c09
|
|
| BLAKE2b-256 |
8ccd9322d0759c6e0ffb99e0a82411ea22fcb59ad0e7c43df42280d0c4f60b44
|
File details
Details for the file shioaji-1.5.0-cp37-abi3-macosx_10_15_x86_64.whl.
File metadata
- Download URL: shioaji-1.5.0-cp37-abi3-macosx_10_15_x86_64.whl
- Upload date:
- Size: 36.3 MB
- Tags: CPython 3.7+, macOS 10.15+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
338b86195ec06caa66b4c2bff25e07b4868be14691c45d31b6dda52f7ed239bb
|
|
| MD5 |
4a05bd0b381f489b65d79fef479e66c8
|
|
| BLAKE2b-256 |
02fdc347c3184524b327a261d12b95fbca8434a2575a8241ffd18b23d824e9f5
|