LoginSignup
3
0

J-Quants APIを使って上場銘柄一覧を取得する

Last updated at Posted at 2024-02-25

概要

個人的に株の分析を行うにあたり、J-Quants APIを使って上場銘柄一覧を取得した際の手順となります。

環境

  • mac OS: 13.5.2
  • Python: 3.12.1

J-Quants APIとは

株価や財務などの金融データをヒストリカルで簡単に取得できる、個人投資家向けのAPIデータ配信サービスです。
JPX総研により提供されています。

注意点

J-Quants APIサービス利用規約を事前に確認しました。
利用する際に注意すべきと感じたのは下記の2点です。

  • 登録ユーザーの私的使用のみ利用できる事
  • 商用もしくは学術目的での利用は禁止である事

上場銘柄一覧を取得するまでの手順

アカウント作成

トップページから【アカウントを作成する】より、手順にしたがいアカウントを作成します。

プランを選ぶように表示されるので、任意のプランを選びます。
今回はFreeプランを選択しました。
Freeプランは12週間の遅延があるので、実用性を求めるのであればライトプランが良さそうです。
名前と、請求書の住所を入力することで登録完了です!

APIを叩いてみる

ドキュメントに従い、リフレッシュトークンを取得してみます。

CurlとPythonのサンプルコードがあるので、とりあえずCurlで叩いてレスポンスが返ってくるか確認してみます。
<YOUR EMAIL_ADDRESS>に登録したメールアドレス、<YOUR PASSWORD>に登録したパスワードを入力します。

curl
BODY="{\"mailaddress\":\"<YOUR EMAIL_ADDRESS>\", \"password\":\"<YOUR PASSWORD>\"}" && curl -X POST -H "Content-Type: application/json" -d "$BODY" https://api.jquants.com/v1/token/auth_user

String型でリフレッシュトークンが返ってくればOKです。

上場銘柄一覧の取得

ドキュメントのサンプルに記載されているPythonコードを使用して上場銘柄一覧を取得するコードを書きました。

サンプルコード
import requests
import json
import pandas as pd

EMAIL_ADDRESS = "<YOUR EMAIL_ADDRESS>"
PASSWORD = "<YOUR PASSWORD>"

# リフレッシュトークン取得
data={"mailaddress":EMAIL_ADDRESS, "password":PASSWORD}
r_post = requests.post("https://api.jquants.com/v1/token/auth_user", data=json.dumps(data))
REFRESH_TOKEN = r_post.json()["refreshToken"]

# IDトークン取得
r_post = requests.post(f"https://api.jquants.com/v1/token/auth_refresh?refreshtoken={REFRESH_TOKEN}")
ID_TOKEN = r_post.json()["idToken"]

# 上場銘柄一覧
headers = {'Authorization': 'Bearer {}'.format(ID_TOKEN)}
r = requests.get("https://api.jquants.com/v1/listed/info", headers=headers)

# Pandas DafaFrameへ変換
r_dict = r.json()
df = pd.DataFrame(r_dict['info'])

その他

丁寧なドキュメントがあるので、詰まったら確認すれば良さそうです。

また、Discordのコミュニティもあるようですので、困ったら参加してみようと思います。

3
0
0

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
  3. You can use dark theme
What you can do with signing up
3
0