GMOコインのAPIからPythonで仮想通貨データを取得する

仮想通貨のデータ分析をするため、GMOコインが提供しているAPIをPythonから利用し、実際にBTCの市場情報を取得してみました。今回は、その内容を備忘的にまとめています。

なお、本記事ではGMOコインのPublic APIを利用します。 Public APIは認証なしで利用できます。一方、GMOコインにはAPIキーによる認証が必要なPrivate APIも用意されています。 Private APIでは資産情報の取得や注文なども可能になるため、利用する際にはAPIキーやシークレットキーをGitHubなどへ誤って公開しないよう、セキュリティに注意する必要があります。

ひとまずGMOコインのAPIからデータを取得してみる

まずは細かい仕組みを考える前に、Pythonから実際にデータを取得してみます。 今回はGMOコインのPublic APIにあるtickerを利用し、BTCの最新の市場情報を取得します。

import requests
import pprint

end_point = 'https://api.coin.z.com/public/v1/ticker?symbol=BTC'
response = requests.get(end_point)

status_code = response.status_code
ticker = response.json()

print(f"status_code: {status_code}")
print("ticker: ")
pprint.pprint(ticker)

実行すると、次のような結果が得られます。

status_code: 200
ticker:
{'data': [{'ask': '10127040',
           'bid': '10126675',
           'high': '10149606',
           'last': '10126671',
           'low': '9980415',
           'symbol': 'BTC',
           'timestamp': '2026-08-17T12:22:09.716Z',
           'volume': '101.27837'}],
 'responsetime': '2026-08-17T12:22:09.979Z',
 'status': 0}

これだけで、GMOコインからBTCの最新レートなどを取得できます。コードや出力の意味については後段でまとめます。

そもそもAPIとは何か

APIはApplication Programming Interfaceの略で、ソフトウェア同士が機能やデータをやり取りするために用意されたインターフェースです。 今回の場合、

Python
   │
   │ HTTPリクエスト
   ↓
GMOコイン API
   │
   │ レスポンス
   ↓
Python

というやり取りをしています。

GMOコインのWebサイトをブラウザで開いて価格を確認するのではなく、プログラムから決められた方法でGMOコインへ問い合わせることで、価格などのデータを取得できます。 これによって、例えば定期的に価格を取得して保存したり、取得したデータをそのままPythonで分析したりできます。

APIを利用するときによく登場するのがエンドポイントという言葉です。 今回のコードでは、

end_point = 'https://api.coin.z.com/public/v1/ticker?symbol=BTC'

としています。HTTPリクエストを送る先(情報を要求する先)のことを指すと理解すればよいです。

Public APIとPrivate API

一般に、APIには大きくPublic APIとPrivate APIがあります。

Public APIは認証なしで利用できるAPIで、GMOコインのAPIでは市場全体に公開されている情報を取得できます。 例えば、

  • 最新レート(ticker)
  • 板情報(orderbooks)
  • 取引履歴(trades)
  • KLine情報(klines)

などです。これらは公開情報ですので、だれでも認証等なくアクセスすることができます。

一方、Private APIでは、自分の口座に関する情報の取得や注文などを行えます。 知らない人が自分の口座を使って勝手に取引をしては困るので、Private APIを利用するにはAPIキーによる認証が必要です。

Private APIを使う場合は、APIキーやシークレットキーの管理が重要です。 特に、ソースコードへ直接キーを書いた状態でGitHubの公開リポジトリへpushする、といったことは避ける必要があります。

コードの説明

コードを上から確認していきます。

import requests
import pprint

requestsはHTTP通信を行うために使用しています。PythonからHTTPリクエストを比較的簡単に送信することができる外部パッケージです。

pprintはpretty-printの略で、辞書などのデータを人間が読みやすい形で表示するために使用しています。出力をきれいに表示するために使用しているだけで、APIから情報を取得するだけであればなくてもよい標準ライブラリです。

続いて、

end_point = 'https://api.coin.z.com/public/v1/ticker?symbol=BTC'

でアクセスするAPIのエンドポイントを指定しています。 そして、

response = requests.get(end_point)

によって、GMOコインへGETリクエストを送信します。GETはHTTPメソッドの一つで、主にサーバーから情報を取得するときに利用されます。 サーバーから返ってきたHTTPレスポンスはresponseに格納されます。

続いて、

status_code = response.status_code

によって、HTTPステータスコードを取得しています。 さらに、

ticker = response.json()

で、レスポンスボディのJSONデータをPythonで扱える形式へ変換しています。GMOコインのレスポンスはJSON形式ですので、.json()を実行できますが、APIのレスポンスがJSON形式ではない場合、解析に失敗して例外が発生します。

最後に、

print(f"status_code: {status_code}")
print("ticker: ")
pprint.pprint(ticker)

によって取得結果を表示しています。

レスポンス

今回取得したデータをもう一度見てみます。

status_code: 200
ticker:
{
    'data': [
        {
            'ask': '10127040',
            'bid': '10126675',
            'high': '10149606',
            'last': '10126671',
            'low': '9980415',
            'symbol': 'BTC',
            'timestamp': '2026-08-17T12:22:09.716Z',
            'volume': '101.27837'
        }
    ],
    'responsetime': '2026-08-17T12:22:09.979Z',
    'status': 0
}

ステータスコード

requests.get()によって取得したresponseは、requestsのResponseオブジェクトです。 Responseオブジェクトには、HTTPレスポンスに関するさまざまな情報が格納されています。 その一つが、

response.status_code

です。

これは、HTTPのステータスコードを取得しています。 今回の結果では、

status_code: 200

となりました。 代表的なHTTPステータスコードには、次のようなものがあります。

ステータスコード 大まかな意味
200 リクエストが成功した
400 リクエストの内容に問題がある
401 認証が必要、または認証に問題がある
403 アクセスが許可されていない
404 指定したリソースが見つからない
429 短時間にリクエストを送りすぎている
500 サーバー内部でエラーが発生した
503 サービスを利用できない状態

したがって今回の200から、HTTP通信としてはリクエストが正常に処理されたことが分かります。

ticker

tickerは以下のような構造になっています。

ticker
│
├─ status
├─ data
│   └─ BTCの市場情報
│
└─ responsetime

statusはGMOコインAPIのレスポンスステータスです。先ほどのHTTP通信のステータスコードとは別物です。

dataには、実際に取得したい市場データが入っています。 今回のtickerでは、次の情報が含まれています。

項目 意味
symbol 銘柄
ask 売気配値
bid 買気配値
high 24時間の最高値
low 24時間の最安値
last 最終約定価格
volume 24時間の取引量
timestamp タイムスタンプ

例えば、

'last': '10126671'

であれば、取得時点におけるBTCの最終約定価格が10,126,671円だったことを表します。

responsetimeはAPIのレスポンス日時を表します。

GMOコインのPublic APIでは何を取得できるのか

今回利用したticker以外にも、GMOコインのPublic APIには複数のエンドポイントが用意されています。 2026年8月17日時点の公式ドキュメントでは、主に次の情報を取得できます。

API エンドポイント 取得できる情報
取引所ステータス /public/v1/status 取引所の稼働状態
最新レート /public/v1/ticker 最新価格、売買気配値、高値・安値、取引量など
板情報 /public/v1/orderbooks 売り注文・買い注文の板情報
取引履歴 /public/v1/trades 約定価格、売買区分、約定数量、約定日時など
KLine情報 /public/v1/klines OHLCVなどのローソク足データ
取引ルール /public/v1/symbols 最小・最大注文数量、注文単位、呼値、手数料など

例えば、仮想通貨の時系列分析で利用しやすいのがKLine情報です。

KLineでは、

  • Open:始値
  • High:高値
  • Low:安値
  • Close:終値
  • Volume:取引量

という、いわゆるOHLCVデータを取得できます。 また、tradesでは実際の約定履歴、orderbooksでは板情報を取得できます。

つまり、分析したい内容によって適切なAPIを選び、エンドポイントやパラメータを変更してデータを取得することになります。

参考文献

技術ブログとは関係ありませんが、個人的に大好きなフンドーキンの商品を紹介しています。

※以下には楽天アフィリエイトの広告リンクが含まれます。

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

フンドーキン カボスぽん酢 360ml×3個セット 【送料込】
価格:2,040円(税込、送料無料) (2026/8/16時点)


[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

フンドーキン 深煎り焙煎ごまドレッシング 190ml×3個セット 送料込
価格:1,890円(税込、送料無料) (2026/8/16時点)


[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

フンドーキン 生詰あわせみそ 850g×2個セット 【送料込】
価格:2,080円(税込、送料無料) (2026/8/16時点)