🦔

PythonでAPIより現在の為替レートを取得する方法

2025/01/01に公開

為替レートがAPI取得できるサイト

為替レート取得APIは以下の2社のサイトから取得が可能です。
OAND証券
GMOコイン

OAND証券利用条件

  1. 会員ステータスがGoldの方でプロコースかつ口座残高が25万以上のお客様
  2. API 契約書の内容に同意していただける方
  3. プログラムを設計、実装できるだけの専門知識をお持ちの方
    ※1.前月50万米ドル以上

GMOコイン利用条件

  1. 無料
  2. API経由で注文または注文変更が行われ、その注文が約定した場合、1通貨ごとに0.002円

おすすめ

おすすめは、無料で利用できるGMOコインです。
OAND証券で会員ステータスGoldになるためには、前月50万米ドル以上が必要になるのでOAND証券で取引をしている人でないとハードルが高いです。

GMOコインAPIで現在の為替レートを取得する

ドル円為替レートの取得方法

以下のコードでドル円為替レートの取得が可能です。

1.GMOコインのAPIで最新の為替レートを取得

まずは、最新の全為替レートを取得します。

import requests
import json
import pandas as pd

# GMOコインのAPIで最新の為替レートを取得
end_point = 'https://forex-api.coin.z.com/public'
api_path = f'/v1/ticker'

response = requests.get(f'{end_point}{api_path}')
if response.status_code != 200:
  print(f'エラーが発生しました。ステータス:{response.status_code}, メッセージ:{response.text}')
  exit(-1)

# レスポンス結果を取得
data = response.json()
print(data)

以下のようにJSON形式で結果が返却されます。
【結果】

{'status': 0, 'data': [{'symbol': 'USD_JPY', 'ask': '156.878', 'bid': '156.874', 'timestamp': '2024-12-31T15:34:40.96835Z', 'status': 'OPEN'}, {'symbol': 'EUR_JPY', 'ask': '162.689', 'bid': '162.676', 'timestamp': '2024-12-31T15:34:40.969019Z', 'status': 'OPEN'}, {'symbol': 'GBP_JPY', 'ask': '196.701', 'bid': '196.684', 'timestamp': '2024-12-31T15:34:40.969066Z', 'status': 'OPEN'}, {'symbol': 'AUD_JPY', 'ask': '97.229', 'bid': '97.223', 'timestamp': '2024-12-31T15:34:40.968769Z', 'status': 'OPEN'}, {'symbol': 'NZD_JPY', 'ask': '87.942', 'bid': '87.936', 'timestamp': '2024-12-31T15:34:40.969379Z', 'status': 'OPEN'}, {'symbol': 'CAD_JPY', 'ask': '109.142', 'bid': '109.137', 'timestamp': '2024-12-31T15:34:40.9686Z', 'status': 'OPEN'}, {'symbol': 'CHF_JPY', 'ask': '173.305', 'bid': '173.297', 'timestamp': '2024-12-31T15:34:40.969754Z', 'status': 'OPEN'}, {'symbol': 'EUR_USD', 'ask': '1.03689', 'bid': '1.03681', 'timestamp': '2024-12-31T15:34:40.971352Z', 'status': 'OPEN'}, {'symbol': 'TRY_JPY', 'ask': '4.424', 'bid': '4.409', 'timestamp': '2024-12-31T15:34:40.969689Z', 'status': 'OPEN'}, {'symbol': 'ZAR_JPY', 'ask': '8.313', 'bid': '8.303', 'timestamp': '2024-12-31T15:34:40.971703Z', 'status': 'OPEN'}, {'symbol': 'MXN_JPY', 'ask': '7.54', 'bid': '7.538', 'timestamp': '2024-12-31T15:34:40.971281Z', 'status': 'OPEN'}, {'symbol': 'GBP_USD', 'ask': '1.25391', 'bid': '1.25382', 'timestamp': '2024-12-31T15:34:40.970926Z', 'status': 'OPEN'}, {'symbol': 'AUD_USD', 'ask': '0.61978', 'bid': '0.61974', 'timestamp': '2024-12-31T15:34:40.970861Z', 'status': 'OPEN'}, {'symbol': 'NZD_USD', 'ask': '0.5606', 'bid': '0.56053', 'timestamp': '2024-12-31T15:34:40.970252Z', 'status': 'OPEN'}], 'responsetime': '2024-12-31T15:34:41.061Z'}

2.取得結果をpandasに格納

取得したデータをPandsに格納します。

# pandasにデータを格納
df = pd.DataFrame(data["data"])
print(df)

以下のように格納されます。
【結果】

     symbol      ask      bid                    timestamp status
0   USD_JPY  156.878  156.874   2024-12-31T15:34:40.96835Z   OPEN
1   EUR_JPY  162.689  162.676  2024-12-31T15:34:40.969019Z   OPEN
2   GBP_JPY  196.701  196.684  2024-12-31T15:34:40.969066Z   OPEN
3   AUD_JPY   97.229   97.223  2024-12-31T15:34:40.968769Z   OPEN
4   NZD_JPY   87.942   87.936  2024-12-31T15:34:40.969379Z   OPEN
5   CAD_JPY  109.142  109.137    2024-12-31T15:34:40.9686Z   OPEN
6   CHF_JPY  173.305  173.297  2024-12-31T15:34:40.969754Z   OPEN
7   EUR_USD  1.03689  1.03681  2024-12-31T15:34:40.971352Z   OPEN
8   TRY_JPY    4.424    4.409  2024-12-31T15:34:40.969689Z   OPEN
9   ZAR_JPY    8.313    8.303  2024-12-31T15:34:40.971703Z   OPEN
10  MXN_JPY     7.54    7.538  2024-12-31T15:34:40.971281Z   OPEN
11  GBP_USD  1.25391  1.25382  2024-12-31T15:34:40.970926Z   OPEN
12  AUD_USD  0.61978  0.61974  2024-12-31T15:34:40.970861Z   OPEN
13  NZD_USD   0.5606  0.56053  2024-12-31T15:34:40.970252Z   OPEN

3.USDJPYのデータのみ抽出

取得したデータからドル円のデータを抽出します。

# USDJPYのデータのみ抽出
usd_jpy_data = df.loc[df['symbol'] == 'USD_JPY']
print(usd_jpy_data)

以下のように抽出されます。
【結果】

    symbol      ask      bid                   timestamp status
0  USD_JPY  156.878  156.874  2024-12-31T15:34:40.96835Z   OPEN

以上で最新為替レートが取得できます。

Discussion