CoinMarketCapのAPIってなに?
どんなことができるの?
どうやって使ったらいいの?
という悩みを解決できる記事になっています。
なぜなら、私はプログラミング言語Pythonで
投資の分析をしているからです。
結論だけ言うと、
仮想通貨のあらゆる情報を一瞬で調べられます。
この記事ではCoinMarketCapのAPIの使い方を紹介します。
読み終えていただければ、
APIをPythonで扱えるようになります。
※おすすめのプログラミングスクール
せっかくプログラミングができるなら
稼げるレベルまで高めませんか?
現役エンジニアが就職サポートまでしています。
無料トライアル制度もあるのでおすすめしています↓

目次
CoinMarketCapのAPIとは?

CoinMarketCap APIは、アプリケーション開発者、データサイエンティスト、
およびエンタープライズビジネスプラットフォームのミッションクリティカルな
要求を満たすように特別に設計された、高性能のRESTful JSONエンドポイントです。
詳細は前回の記事で紹介しています。
さらにAPIキーの取得方法や使い方も紹介しました。
今回はAPIでどんなことができるのか
解説しながらコーディングします。
シンボルではなくIDでデータを抽出する
仮想通貨にはシンボルが重複するものがあります。
例えばHOTという仮想通貨は3種類あり、
検索すると時価総額が最も大きいものだけが表示されます。
一方で目的のコインを検索できないリスクがあります。
さらにブランド変更でシンボルが変わることもありえます。
そこでIDを使うことが推奨されています。
IDはCoinMarketCapによって付与されており、
今後も変更されることはありません。
調べるときも、/ cryptocurrency / mapエンドポイントを呼び出すだけで、
すべてのアクティブな仮想通貨のIDリストを受け取れます。
Pythonのコード例
idとシンボルのリストを作成します。
from requests import Request, Session
from requests.exceptions import ConnectionError, Timeout, TooManyRedirects
import json
url = 'https://pro-api.coinmarketcap.com/v1/cryptocurrency/map'
parameters = {
'start':'1',
'limit':'50',
}
headers = {
'Accepts': 'application/json',
'X-CMC_PRO_API_KEY': 'YOUR API KEY',
}
session = Session()
session.headers.update(headers)
try:
response = session.get(url, params=parameters)
data = json.loads(response.text)
print(data)
except (ConnectionError, Timeout, TooManyRedirects) as e:
print(e)
得られた結果がこちらです。

IDはCoinMarketCapでつけられた番号になるので
時価総額とは関係ないです。
なのでid=0はビットコインですが、
id=1はLitecoinであり、他にも無名なコインも多数あります。
#statusの確認
status = data['status']
print(status)
#id=1ライトコインの表示
id_data = data['data']
print(id_data[1])
'''
実行結果
{'id': 2,
'name': 'Litecoin',
'symbol': 'LTC',
'slug': 'litecoin',
'rank': 20,
'is_active': 1,
'first_historical_data': '2013-04-28T18:47:22.000Z',
'last_historical_data': '2022-02-18T03:09:00.000Z',
'platform': None}
'''
cryptocurrency/mapでできること
すべての仮想通貨の一意のCoinMarketCapIDへのマッピングを返します。
ベストプラクティスに従って、暗号通貨シンボルの代わりにCMC IDを使用して、
他のエンドポイントおよび独自のアプリケーションロジックで
仮想通貨を安全に識別することをお勧めします。
返される各仮想通貨には、IDへの柔軟なマッピングのために、
名前、シンボル、token_addressなどの一般的な識別子が含まれています。
デフォルトでは、このエンドポイントは、サポートされている取引所で
市場を積極的に追跡している仮想通貨を返します。
Listing_status = inactiveを渡すことで、
すべての非アクティブな仮想通貨のマップを受け取ることができます。
リストされているが、listing_status = untrackedを介して
市場を追跡するための要件をまだ満たしていない登録済み仮想通貨プロジェクトのマップを受け取る場合もあります。
リストの状態の詳細については、ドキュメントを確認してください。
返される仮想通貨には、first_historical_data
およびlast_historical_dataタイムスタンプが含まれ、
過去の時系列データエンドポイントでクエリを実行できる過去の日付範囲を簡単に参照できます。
このエンドポイントを頻繁に呼び出す場合は、
auxパラメーターを使用して、ペイロードをスリム化するために必要なプロパティのみを含めることもできます。
使用可能なエンドポイント
- Basic
- Hobbyist
- Startup
- Standard
- Professional
- Enterprise
キャッシュと更新の頻度
必要とされた時、30秒ごとに更新されます。
クレジットの利用プラン
クエリサイズに関係なく、リクエストごとに1つのAPI呼び出しクレジット。
CMCの同等のページ
同等のものはありません。このデータはAPI経由でのみ利用できます。
Pythonのコード例
先ほどの例ではidの順番で表示しましたが、
今回は時価総額の順番で表示します。
from requests import Request, Session
from requests.exceptions import ConnectionError, Timeout, TooManyRedirects
import json
url = 'https://pro-api.coinmarketcap.com/v1/cryptocurrency/map'
parameters = {
'start':'1',
'limit':'50',
'sort':'cmc_rank' #時価総額でソート
}
headers = {
'Accepts': 'application/json',
'X-CMC_PRO_API_KEY': 'YOUR API KEY',
}
session = Session()
session.headers.update(headers)
try:
response = session.get(url, params=parameters)
data = json.loads(response.text)
print(data)
except (ConnectionError, Timeout, TooManyRedirects) as e:
print(e)
時価総額5位までのコインを表示します。
recoin_data = data['data']
for df in recoin_data[0:5]:
print('rank:'+ str(df['rank']))
print('id:'+ str(df['id']))
print('name:{0}({1})'.format(df['name'],df['symbol']))
print('-'*10)
'''
実行結果
rank:1
id:1
name:Bitcoin(BTC)
----------
rank:2
id:1027
name:Ethereum(ETH)
----------
rank:3
id:825
name:Tether(USDT)
----------
rank:4
id:1839
name:BNB(BNB)
----------
rank:5
id:3408
name:USD Coin(USDC)
----------
'''
APIの使い方になれましたか?
次回は別のエンドポイントについて解説します。
※おすすめのプログラミングスクール
せっかくプログラミングができるなら
稼げるレベルまで高めませんか?
現役エンジニアが就職サポートまでしています。
無料トライアル制度もあるのでおすすめしています↓

ここまで読んでくださりありがとうございました。^^