Python で株式最新相場を取得:リクエストからパースまで
Python の requests を使って株式の最新約定(trade-tick)REST API を呼び出し、JSON クエリ作成、エラー処理、UTC タイムスタンプ変換までを実装します。
要約 · 30秒開発サマリー
Python で株式の最新相場を取得する手順は3ステップです:(1) 照会条件を JSON 文字列として query パラメータに格納する、(2) API Token を付与して GET リクエストを送信する、(3) レスポンスの ret コードを検証して tick_list をパースする。以下のサンプルではテンセント(700.HK)と Apple(AAPL.US)を一括取得します。
01
環境準備
pip install requestsexport ALLTICK_API_TOKEN="あなたの_API_Token"02
リクエスト構造
AllTick の REST API は、検索条件を query という名前の URL パラメータに JSON 文字列として渡します。株式エンドポイントのベース URL は https://quote.alltick.co/quote-stock-b-api、最新約定のパスは /trade-tick です。
| パラメータ | 場所 | 説明 |
|---|---|---|
token | URL クエリ | 発行された API Token |
query | URL クエリ | trace と data を含む JSON 文字列 |
trace | query 内部 | リクエスト追跡用 ID(リクエストごとに一意の UUID を推奨) |
data.symbol_list | query 内部 | 銘柄配列(例:[{"code": "700.HK"}]) |
03
完全な実行可能コード
import json, os, uuidfrom datetime import datetime, timezoneimport requestsBASE_URL = "https://quote.alltick.co/quote-stock-b-api"def latest_trades(codes: list[str]) -> list[dict]: token = os.getenv("ALLTICK_API_TOKEN", "YOUR_API_TOKEN") query = { "trace": str(uuid.uuid4()), "data": {"symbol_list": [{"code": c} for c in codes]}, } resp = requests.get( f"{BASE_URL}/trade-tick", params={"token": token, "query": json.dumps(query)}, timeout=10, ) body = resp.json() if resp.content else {} if body.get("ret") != 200: raise RuntimeError(f"API エラー ret={body.get('ret')} msg={body.get('msg')}") resp.raise_for_status() return body.get("data", {}).get("tick_list", [])def to_local_time(ms: str) -> str: return datetime.fromtimestamp(int(ms) / 1000, tz=timezone.utc).astimezone().isoformat()if __name__ == "__main__": for tick in latest_trades(["700.HK", "AAPL.US"]): print(tick.get("code"), tick.get("price"), to_local_time(tick.get("tick_time", "0")))04
レスポンスの解釈
正常時は ret が 200 となり、data.tick_list に各銘柄の最新約定データが格納されます。主なフィールドは code(銘柄コード)、price(約定価格、文字列)、volume(出来高)、tick_time(ミリ秒タイムスタンプ、文字列)です。
- price は文字列として返されます。浮動小数点誤差を防ぐため、計算時は Decimal に変換してください。
- tick_time は UTC ミリ秒タイムスタンプです。画面表示時は取引所のタイムゾーンへ変換します。
- 休場中は直近の最終約定が返され、タイムスタンプは更新されません。
05
よくあるエラーと対処法
| 現象 | 考えられる原因 | 対処法 |
|---|---|---|
| ALLTICK_API_TOKEN 未設定 | 環境変数が設定されていない | ターミナルで export してから再実行する |
ret が 200 以外 | Token 無効、レート制限、パラメータ不正 | msg を確認し、401/429 診断ガイドを参照する |
| tick_list が空 | 銘柄コード表記ミスまたは権限外 | 700.HK など正確なコード表記を確認する |
| リクエストタイムアウト | ネットワークまたはプロキシの問題 | 通信経路を確認し timeout 指定を維持する |
仕様出典と検証記録 · 2026-10-13
以下の一次資料で関連するエンドポイント、フィールド、取引所規則を確認しました。
Python コードは Python 3.14.0 の ast.parse で構文解析を通過しました。依存関係、実行互換性、ネットワーク応答の検証は含みません。
今回の確認では実際の Token による AllTick 要求や本番エンドツーエンド試験は実行していません。再現時にプラン、ライブラリ版、取引時間、ret/trace、結果を記録してください。
一次資料
導入前に再現する項目
- 対応銘柄、不明コード、失効 Token、タイムアウトを試し、HTTP と ret を別々に確認します。Token をログから除き、要求・返却コードを照合します。
- /trade-tick は最新値であり過去 Tick ではありません。tick_time はミリ秒から UTC へ変換し、休場中は最後の既知約定と表示します。