J-Quants API の使い方: 無料プランで取れる範囲と、全銘柄の株価を別ソースと突き合わせた結果
JPX 公式の株価 API「J-Quants API」を無料プランで試しました。登録から API キー、Python で全銘柄の日足を 1 回で取るまで。無料で取れる期間、1 分 5 回の上限を超えたときの挙動、手元の株価との全銘柄の突き合わせ、有料プランと TDnet アドオン (月 11,000 円) の判断まで。
本記事にはプロモーション (アフィリエイト広告) が含まれます。
「J-Quants API は無料でどこまで使えるのか」「有料にする価値はあるのか」で調べている人向けに、先に結論を置きます。
J-Quants API は、JPX (日本取引所グループ) 公式の株価・財務データの API です。無料プランでも、日足、上場銘柄の一覧、決算の概要が取れます。ただし直近 12 週は取れません。 毎日の株価を取り込む用途なら、月 1,650 円の Light プランが要ります。
実際に無料プランで試して分かったことは 3 つです。
- 日付だけを指定すると、全銘柄の日足が 1 回で返る。4,449 銘柄、1.2MB、3.4 秒でした
- 値は、手元に別の方法で集めていた株価と全銘柄で一致した。3,716 銘柄の四本値と出来高に、1 件の違いもありませんでした
- 1 分 5 回の上限を超えると、しばらく戻らない。15 秒おきに取り直しても 1 分以上
429のままで、戻ったのは約 2 分後でした
J-Quants API のプラン
公式サイト (2026-09-26 確認) のプランです。
| プラン | 月額 (税込) | 取れる期間 | 1 分あたりの上限 |
|---|---|---|---|
| Free | 0 円 | 2 年分 (直近 12 週を除く) | 5 回 |
| Light | 1,650 円 | 5 年分 | 60 回 |
| Standard | 3,300 円 | 10 年分 | 120 回 |
| Premium | 16,500 円 | 20 年分 | 500 回 |
プランが上がるほど、取れるデータの種類も増えます。無料で取れるのは、日足、決算の概要、PER などの指標です。Light で TOPIX と投資部門別、Standard で指数や信用取引の残高、Premium で財務諸表の詳細や配当が増えます。
有料プランには、追加のオプション (アドオン) もあります。分足、ティック、そして 適時開示 (TDnet) です。TDnet のアドオンは 2026 年 5 月 18 日に始まり、月 11,000 円 (税込) で、Light 以上の契約に追加する形です (JPX のお知らせ)。個人投資家向けで、法人や学術の用途には使えません。
この記事で使う環境
- Ubuntu 24.04、Python 3.12 (標準ライブラリだけ。追加のライブラリは入れない)
- J-Quants API v2 の無料プラン
- 突き合わせに使った手元の株価: EDINET API の記事 で使っている取得バッチが、PostgreSQL に貯めている日足
1. 登録して、プランを申し込む
J-Quants のサイト でメールアドレスを登録し、ダッシュボードに入ります。
アカウントを作っただけでは、API は使えません。 ダッシュボードの上に「まずはプラン登録から。無料の Free プランもあります。」と出ています。

「プランを選ぶ」から、Free の「無料で登録」を選びます。

次の画面で名前と請求書の住所を入れ、「申し込む」を押します。無料プランでも、この入力は必要です。
2. API キーを発行する
ダッシュボードの「API Keys」で「API Key を発行」を押し、表示されたキーをコピーします。

キーはコードに書かず、環境変数で渡します。
export JQUANTS_API_KEY='<発行したキー>'
今の J-Quants API (v2) は、このキーを x-api-key ヘッダーに付けて呼びます。以前の版にあった「メールとパスワードでトークンを取る」手順は要りません。
3. 株価 (日足) を取る
まず curl で、トヨタ (銘柄コード 72030) の 2026-06-01 を取ります。
curl -s -G https://api.jquants.com/v2/equities/bars/daily \
-H "x-api-key: $JQUANTS_API_KEY" \
-d code=72030 -d date=20260601
{"data": [{"Date": "2026-06-01", "Code": "72030", "O": 3006.0, "H": 3009.0, "L": 2891.0, "C": 2905.5, "UL": "0", "LL": "0", "Vo": 37687200.0, "Va": 109849459050.0, "AdjFactor": 1.0, "AdjO": 3006.0, "AdjH": 3009.0, "AdjL": 2891.0, "AdjC": 2905.5, "AdjVo": 37687200.0, "MktCap": 45892336.0, "ExRT": null}]}
O H L C が始値・高値・安値・終値、Vo が出来高、Va が売買代金です。Adj の付いた列は、株式分割を反映した調整後の値です。MktCap (時価総額) も入っています。
銘柄コードは 5 桁です。 普段見る 4 桁の 7203 の後ろに 0 が付きます。4 桁で持っているデータと突き合わせるときは、末尾の 0 を外します。
日付だけを指定すると、全銘柄が返る
code を省いて date だけにすると、その日の全銘柄が 1 回で返ります。Python の標準ライブラリだけで書くとこうです。
import json
import os
import time
import urllib.error
import urllib.parse
import urllib.request
API = "https://api.jquants.com/v2"
KEY = os.environ["JQUANTS_API_KEY"]
def get(path, **params):
"""J-Quants API を呼ぶ。429 (上限超え) なら 60 秒待って取り直す"""
url = f"{API}{path}?{urllib.parse.urlencode(params)}"
req = urllib.request.Request(url, headers={"x-api-key": KEY})
for _ in range(5):
try:
with urllib.request.urlopen(req, timeout=30) as r:
return json.load(r)
except urllib.error.HTTPError as e:
if e.code != 429:
raise RuntimeError(json.load(e).get("message")) from e
time.sleep(60)
raise RuntimeError("429 が続いた")
# 日付だけを指定すると、全銘柄の日足が 1 回で返る
bars = get("/equities/bars/daily", date="20260602")["data"]
traded = [b for b in bars if b["C"] is not None]
print(f"{len(bars)} 銘柄 (売買あり {len(traded)})")
print(traded[0])
4449 銘柄 (売買あり 4217)
{'Date': '2026-06-02', 'Code': '13010', 'O': 4280.0, 'H': 4280.0, 'L': 4205.0, 'C': 4225.0, ...}
2026-06-01 を curl で取ったときは、4,449 銘柄で 1.2MB、3.4 秒でした。売買がなかった銘柄は、値が null で入っています (6/1 は 218 銘柄)。
1 日 1 回で全銘柄が取れるので、毎日の取り込みなら、呼び出しは 1 日 1 回で済みます。銘柄ごとに取る方式なら、3,700 銘柄で 3,700 回です。過去 2 年分をまとめて取るときも、営業日の数 (約 490 回) で済みます。
4. 無料プランで取れる期間
直近の 2026-09-25 を頼むと、エラーの文面で範囲を教えてくれます。
{"message": "Your subscription covers the following dates: 2024-07-04 ~ 2026-07-04. If you want more data, please check other plans:https://jpx-jquants.com/#dataset"}
試した 2026-09-26 の時点で、取れるのは 2024-07-04 から 2026-07-04 まで でした。直近の約 12 週が抜けています。使い方を確かめる、過去を分析する、という用途なら無料で足ります。毎日の株価を取り込むなら、Light 以上が要ります。
5. 手元の株価と、全銘柄で突き合わせる
J-Quants の値を信じてよいかを確かめるため、手元の PostgreSQL にある同じ日の日足 (別の方法で集めていたもの) と、全銘柄を突き合わせました。
| 銘柄数 | |
|---|---|
| J-Quants (2026-06-01) | 4,449 |
| 手元の DB (2026-06-01) | 3,716 |
| 両方にある | 3,716 |
| そのうち四本値と出来高が一致 | 3,716 (不一致 0) |
| J-Quants にだけある | 733 |
手元にある銘柄は、すべて一致しました。 J-Quants にだけある 733 銘柄は、先頭が 13050 (TOPIX 連動の ETF) のような、ETF や REIT などです。手元の DB には、この 733 銘柄が 1 つも入っていませんでした。
どれが ETF かは、上場銘柄の一覧 (/equities/master) で見分けられます。市場区分の MktNm が「その他」になっているのが、ETF などです。
curl -s -G https://api.jquants.com/v2/equities/master \
-H "x-api-key: $JQUANTS_API_KEY" -d date=20260601
2026-06-01 の一覧は 4,449 件で、市場区分の内訳はこうでした。
| MktNm | 件数 |
|---|---|
| スタンダード | 1,580 |
| プライム | 1,564 |
| グロース | 595 |
| その他 (ETF など) | 529 |
| TOKYO PRO MARKET | 181 |
一覧には、業種 (17 業種と 33 業種)、規模の区分、信用取引の区分も入っています。
6. 決算の概要も無料で取れる
決算の概要 (/fins/summary) も、無料プランで取れました。
curl -s -G https://api.jquants.com/v2/fins/summary \
-H "x-api-key: $JQUANTS_API_KEY" -d code=72030
トヨタで 8 回分の決算短信が返り、1 回分は 111 列ありました。最新は 2026-05-08 に出た 2026 年 3 月期の本決算 (IFRS、連結) です。
7. 1 分 5 回の上限を超えると
無料プランの上限は 1 分に 5 回です。続けて 7 回呼ぶと、こうなりました。
1 17:21:18 HTTP 200
2 17:21:18 HTTP 200
3 17:21:19 HTTP 200
4 17:21:19 HTTP 200
5 17:21:19 HTTP 429
6 17:21:20 HTTP 429
7 17:21:20 HTTP 429
{"message": "Rate limit exceeded. Please try again later."}
5 回目で 429 が返りました。 待つ秒数を知らせるヘッダー (Retry-After) はありません。
さらに、超えた後が長く続きました。15 秒おきに 5 回取り直しても、すべて 429 のままでした。戻ったのは、超えてから約 2 分後です。そこで上のコードは、429 なら 60 秒待つようにしています。続けて何日分も取るときは、呼ぶ間を 13 秒ほどあけて、そもそも上限を超えないようにするのが確実です。
有料プランと TDnet アドオンをどう考えるか
- Light (月 1,650 円): 毎日の株価を取り込むなら、これが最低ラインです。無料では直近 12 週が取れないからです。上限も 1 分 60 回になります
- TDnet アドオン (月 11,000 円、Light と合わせて 12,650 円): 決算短信などの適時開示を、当日のうちに取れます。TDnet は、JPX がスクレイピングでの自動取得を控えるよう求めています。個人が開示を機械的に集める正規の方法が、手の届く値段で用意されたことになります
無料プランで確かめられるのは、使い方と値の正しさまでです。株価の取り込みを J-Quants に移すなら、まず Light で足りるかを確かめるのが順当です。
つまずいた点
- 登録したのに使えなかった。アカウントを作っただけでは、プランが付いていません。Free を選んで、名前と住所を入れて「申し込む」まで進めて、初めて API キーが使えます
- 直近の株価が取れなかった。無料は直近 12 週が抜けます。範囲はエラーの文面に日付で出ます
- 上限を超えると、すぐには戻らない。5 回目で
429になり、15 秒おきの取り直しでは 1 分以上戻りませんでした。約 2 分待って戻りました - 銘柄コードの桁。J-Quants は 5 桁 (
72030)。4 桁のデータと突き合わせるときは末尾の0を外します
登録から API キーの発行までが 30 分ほど、そこから API を叩いて全銘柄を突き合わせるまでが 30 分ほどでした。
次にやること
- Light プランに上げて、毎日の株価の取り込みを J-Quants に移す。取り込みは 1 日 1 回の呼び出しになる
- 決算の概要 (
/fins/summary) を、有価証券報告書を AI で読む記事 の数字の側と組み合わせる
まとめ
- J-Quants API は JPX 公式の株価・財務データの API。無料プランでも、日足、上場銘柄の一覧、決算の概要が取れる
- 無料は直近 12 週が取れない (試した時点で 2024-07-04 〜 2026-07-04)。毎日の取り込みなら Light (月 1,650 円) が要る
- 日付だけを指定すれば全銘柄が 1 回で返る。4,449 銘柄で 1.2MB、3.4 秒
- 手元の株価と全銘柄で突き合わせ、3,716 銘柄すべてが一致した
- 上限 (1 分 5 回) を超えると約 2 分戻らない。間をあけて呼ぶ
- TDnet の適時開示は、Light 以上に月 11,000 円のアドオンで正規に取れる