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を選び、エンドポイントやパラメータを変更してデータを取得することになります。