search
LoginSignup
2

posted at

updated at

【bat】auカブコム証券のkabuステーションREST APIをcurlで叩く

はじめに

auカブコム証券にAPIが公開されたことはかなり昔から知ってましたが、なかなか使うモチベーションが湧きませんでした。
ようやくやる気が出てきたので、REST APIを叩くならプログラミング言語ではなく、curlでということで、認証と銘柄情報取得を実行してみる。

事前準備

auカブコム証券の口座開設 and (Fintechプラン or Premiumプラン)

※この時点で有り得ない場合はそっと閉じることを推奨・・・

環境

Windows 10 (kabuステーション and APIクライアント)

※localhostしか繋がらないらしいが、リバースプロキシで転送できるらしい

ツール

curl.exe

※新しめのWindows 10には標準で入っています。むかしはopensshと共にcygwinを愛用してましたが、他にもいろいろあります。

サイト

kabu STATION API

※他の人のブログで、初めて見た。

kabu STATION API

※こっちがポータルサイトぽい。

初期設定

kabuステーション®APIを利用するための初期設定

サンプルコード

Excel, JavaScript, Python, C#しかないです。

REST APIリファレンス

ようやく本題です。

認証

認証

初期設定で設定したパスワードを"YourPassword"とします。
以下のJSONをPOSTするだけです。

{"APIPassword":"YourPassword"}

私は、別ファイル(login.txt)にJSONを用意してファイル名を指定する方法をよく使います。

curl -X POST -H "Content-Type: application/json" "http://localhost:18080/kabusapi/token" -d "@login.txt"

そのまま直書きするには、ダブルクォート文字のエスケープが必要です。

curl -X POST -H "Content-Type: application/json" "http://localhost:18080/kabusapi/token" -d "{\"APIPassword\":\"YourPassword\"}"

成功すると、JSONが返ってきます。

{"ResultCode":0,"Token":"60328dd9f5ca4d0589b4586843f88223"}

時価情報・板情報

時価情報・板情報

認証のトークンをHTTPヘッダに設定するだけです。
毎回、UUID?を指定するのはうざいので、環境変数にでも設定しておきます。

set TOKEN=60328dd9f5ca4d0589b4586843f88223

auカブコム証券を買収したKDDI株式会社の情報を取得してみる。

curl -H "X-API-KEY: %TOKEN%" "http://localhost:18080/kabusapi/board/9433@1"

成功するとか株価とか取得できます。

{"OverSellQty":409700.0,"UnderBuyQty":586600.0,"TotalMarketValue":9113030120250.0,"MarketOrderSellQty":0.0,"MarketOrderB...

このJSONデータの加工方法ですが、大して複雑ではないので、プログラミング言語で必要な値を取得する方法以外にも、意外とETLツールでもJSONファイルに対応していればCSVファイル等に変換できそうな気がします。

おまけ(認証バッチ)

認証は1回だけとはいえ、JSONデータのトークンを環境変数に設定するのがだんだん嫌になります。
そこでバッチファイルを用意するとこんな感じです。
ただし、何もエラーチェックしていないので、夜間に無人でスケジューラで実行とかに使わないでください。

@echo off

set PORT=18080
set TOKENJSON=
set TOKEN=

rem ログイン
curl -o TOKENRESP -X POST -H "Content-Type: application/json" "http://localhost:%PORT%/kabusapi/token" -d "@login.txt"
for /F "delims="" tokens=1" %%i in (TOKENRESP) do set TOKENJSON=%%i
set TOKEN=%TOKENJSON:~25,-2%
echo TOKENJSON=%TOKENJSON%
echo TOKEN=%TOKEN%

del /Q TOKENRESP

追記:curlコマンドメモ

curlコマンドメモを追加。

追記:githubソース

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
2