CoinMarketCap APIを使って仮想通貨の価格を取得してみる

API

今回は仮想通貨のレートを取得する時に便利な CoinMarketCap APIの使い方をご紹介します!

この記事でできること

  • CoinMarketCap APIのAPIキーを取得できる
  • CoinMarketCap APIで仮想通貨の価格を取得できる

手順

  • CoinMarketCap APIのAPIキーを取得
  • ドキュメントを見つつコーディング

CoinMarketCap APIのAPIキーを取得

APIを利用するには、APIキーと呼ばれるものが必要になります。

まずは下記リンクにアクセスしましょう
https://coinmarketcap.com/api/


この画面に行くと思いますので「GET YOUR API KEY NOW」のボタンをクリックしてください


次にサインアップ画面にいきますので必要な情報を記入し「CREATE MY ACCOUNT」をクリック

↓Planの内容について公式の画像を添付しました。(基本はBASICで問題ないです)

アカウントを作成すると、入力したメールアドレスに認証メールが届くので認証してください。


認証後、https://pro.coinmarketcap.com/account にログインするとこちらの画面に映ります。

赤枠内にカーソルを持ってくるとAPI Keyが見えるようになるのでそちらのKeyをコピーしてください。


ドキュメントを見つつコーディング

APIキーを取得しましたら、APIを利用する準備は完了です。

次はAPIの使い方を見てみましょう

Account


クイックガイドがありますね


使い慣れたPythonの例も載っていたので使わせてもらいます。

↓まずはそのまま実行してみます (出力を見やすくするためpprintを使用)

from requests import Request, Session
from requests.exceptions import ConnectionError, Timeout, TooManyRedirects
import json
import pprint

url = 'https://sandbox-api.coinmarketcap.com/v1/cryptocurrency/listings/latest'
parameters = {
  'start':'1',
  'limit':'5000',
  'convert':'USD'
}
headers = {
  'Accepts': 'application/json',
  'X-CMC_PRO_API_KEY': 'b54bcf4d-1bca-4e8e-9a24-22ff2c3d462c',
}

session = Session()
session.headers.update(headers)

try:
  response = session.get(url, params=parameters)
  data = json.loads(response.text)
  pprint.pprint(data)
except (ConnectionError, Timeout, TooManyRedirects) as e:
  print(e)

(出力例)

{'data': [{'circulating_supply': 1826,
           'cmc_rank': 7588,
           'date_added': '2022-06-04T14:06:12.705Z',
           'id': 1144,
           'last_updated': '2022-06-04T14:06:12.705Z',
           'max_supply': 3516,
           'name': '793bkgg8jg7',
           'num_market_pairs': 4288,
           'platform': None,
           'quote': {'USD': {'fully_diluted_market_cap': 0.5741525012109046,
                             'last_updated': '2022-06-04T14:06:12.705Z',
                             'market_cap': 0.5016048405987457,
                             'market_cap_dominance': 3179,
                             'percent_change_1h': 0.0017217835358054323,
                             'percent_change_24h': 0.265645699462544,
                             'percent_change_7d': 0.6429673288515549,
                             'price': 0.19048925055156185,
                             'volume_24h': 7275,
                             'volume_change_24h': 0.9050311359138343}},
           'self_reported_circulating_supply': None,
           'self_reported_market_cap': None,
           'slug': 's3q9e86qn2',
           'symbol': 'fpt8pqalmm',
           'tags': ['v763orfbvq',
                    'by3ngfk33cb',
                    'jnzi4p55ujp',
                    'kwyhiainx4',
                    'cmseu0az7a5',
                    'dp6wuhx509h',
                    'ad6idl1l0d',
                    'xera24uvryq',
                    '8d3nnikt9mm',
                    'oc7qvvl165d'],
           'total_supply': 1240},
          {'circulating_supply': 2267,
           'cmc_rank': 2784,
           'date_added': '2022-06-04T14:06:12.705Z',
           'id': 1515,
           'last_updated': '2022-06-04T14:06:12.705Z',
           'max_supply': 2319,
           'name': '8kuksa7ojlw',
           'num_market_pairs': 1412,
           'platform': None,
           'quote': {'USD': {'fully_diluted_market_cap': 0.007857750712765066,
                             'last_updated': '2022-06-04T14:06:12.705Z',
                             'market_cap': 0.9079778869362887,
                             'market_cap_dominance': 4897,
                             'percent_change_1h': 0.8468111726525642,
                             'percent_change_24h': 0.7624448112765443,
                             'percent_change_7d': 0.7331296951913815,
                             'price': 0.9665073223742844,
                             'volume_24h': 6157,
                             'volume_change_24h': 0.7475471299015912}},
           'self_reported_circulating_supply': None,
           'self_reported_market_cap': None,
           'slug': 'wnggmk54mkh',
           'symbol': 'ymiz2ilxc8',
           'tags': ['jghgnr3g9kp',
                    'hq26u02d45w',
                    'lofj2ca59ak',
                    'ihfuz2ewg0a',
                    'o01dbv45y3e',
                    'dt3oacn0p99',
                    'd42qypri32d',
                    'kriz0l6wrm',
                    'vktfydn2l2p',
                    '3ln06huieje'],
           'total_supply': 208},
          {'circulating_supply': 8251,
           'cmc_rank': 8422,
           'date_added': '2022-06-04T14:06:12.705Z',
           'id': 4637,
           'last_updated': '2022-06-04T14:06:12.705Z',
           'max_supply': 3387,
           'name': '2a60mpl911v',
           'num_market_pairs': 8286,
           'platform': None,
           'quote': {'USD': {'fully_diluted_market_cap': 0.5667019887177145,
                             'last_updated': '2022-06-04T14:06:12.705Z',
                             'market_cap': 0.9859029349875263,
                             'market_cap_dominance': 7323,
                             'percent_change_1h': 0.8169869633142803,
                             'percent_change_24h': 0.959635341515235,
                             'percent_change_7d': 0.21350527654611517,
                             'price': 0.12788102393005496,
                             'volume_24h': 1485,
                             'volume_change_24h': 0.5917797767363084}},
           'self_reported_circulating_supply': None,
           'self_reported_market_cap': None,
           'slug': 'vqhz9dbut',
           'symbol': 've09wqjbq6k',
           'tags': ['5nvfybfjuxu',
                    '8vt0k89qdew',
                    'v71qr06fuc9',
                    'wdewq0l6g0r',
                    'kc7ltsusqk',
                    'sqdoxg14btj',
                    'czgsicaegfb',
                    '9k5j83gmrt',
                    'gjxoz99zqxn',
                    'kn6f94l8lf'],
           'total_supply': 9647},
          {'circulating_supply': 1504,
           'cmc_rank': 7288,
           'date_added': '2022-06-04T14:06:12.705Z',
           'id': 8139,
           'last_updated': '2022-06-04T14:06:12.705Z',
           'max_supply': 279,
           'name': 'm7u2gydgvq9',
           'num_market_pairs': 9625,
           'platform': None,
           'quote': {'USD': {'fully_diluted_market_cap': 0.3189411199857166,
                             'last_updated': '2022-06-04T14:06:12.705Z',
                             'market_cap': 0.9195836801096047,
                             'market_cap_dominance': 7386,
                             'percent_change_1h': 0.8966387272523342,
                             'percent_change_24h': 0.7267920118717308,
                             'percent_change_7d': 0.3335940888561377,
                             'price': 0.6239567099433401,
                             'volume_24h': 2423,
                             'volume_change_24h': 0.09168585704516397}},
           'self_reported_circulating_supply': None,
           'self_reported_market_cap': None,
           'slug': 'o3wwim7xi1',
           'symbol': 'efkrii1djch',
           'tags': ['j71nhfb69uq',
                    '1g5xjzraagk',
                    'm3avc92efo',
                    'ti6vou9bdo',
                    'xpikcw37kdq',
                    'ras6yj0ov1j',
                    'q6pxx49o54',
                    '2mkapk61q3g',
                    'w3mta6bp277',
                    '9lzih7dc5ag'],
           'total_supply': 3732},
          {'circulating_supply': 4360,
           'cmc_rank': 5004,
           'date_added': '2022-06-04T14:06:12.705Z',
           'id': 2800,
           'last_updated': '2022-06-04T14:06:12.705Z',
           'max_supply': 7962,
           'name': 'w93mqwn97v',
           'num_market_pairs': 8453,
           'platform': None,
           'quote': {'USD': {'fully_diluted_market_cap': 0.007328878064808864,
                             'last_updated': '2022-06-04T14:06:12.705Z',
                             'market_cap': 0.5417246893129859,
                             'market_cap_dominance': 6192,
                             'percent_change_1h': 0.7407536042378802,
                             'percent_change_24h': 0.26608759317792297,
                             'percent_change_7d': 0.8699355307184271,
                             'price': 0.4035951186060771,
                             'volume_24h': 3559,
                             'volume_change_24h': 0.4803039164913261}},
           'self_reported_circulating_supply': None,
           'self_reported_market_cap': None,
           'slug': 'nwj6uk8ct',
           'symbol': 'nclkqcfbdo9',
           'tags': ['jbzli4pj42',
                    'pg6t0fjw7se',
                    'ofmgomjlyc',
                    'kyd6l63sejk',
                    'j9pz666fcs',
                    '57d0wzz4zq3',
                    'wl08h52vw7f',
                    'jqs2106roql',
                    '8xj21yljuud',
                    'e8w0o7ud4'],
           'total_supply': 5403},
          {'circulating_supply': 6283,
           'cmc_rank': 5448,
           'date_added': '2022-06-04T14:06:12.705Z',
           'id': 5867,
           'last_updated': '2022-06-04T14:06:12.705Z',
           'max_supply': 8225,
           'name': 'sjt7ac5a7',
           'num_market_pairs': 6428,
           'platform': None,
           'quote': {'USD': {'fully_diluted_market_cap': 0.07507052431240613,
                             'last_updated': '2022-06-04T14:06:12.705Z',
                             'market_cap': 0.6731813040801848,
                             'market_cap_dominance': 5470,
                             'percent_change_1h': 0.3311453278291028,
                             'percent_change_24h': 0.40931398859356416,
                             'percent_change_7d': 0.8368496793389417,
                             'price': 0.3868595004001163,
                             'volume_24h': 6609,
                             'volume_change_24h': 0.6461750787335578}},
           'self_reported_circulating_supply': None,
           'self_reported_market_cap': None,
           'slug': 'egcrh5iqnb6',
           'symbol': 'vrqysqa0i9',
           'tags': ['pmgo3jv2pfm',
                    'yc3l5kr0dd',
                    '8sspywp0nbj',
                    'eijgy54ewjl',
                    'geih06f951v',
                    'j31se8x8ek',
                    '4snbq73rd8h',
                    '9m89o4io7j5',
                    'zjtthcymu1',
                    '6bdd2jpo4il'],
           'total_supply': 9303},
          {'circulating_supply': 4122,
           'cmc_rank': 3799,
           'date_added': '2022-06-04T14:06:12.705Z',
           'id': 7936,
           'last_updated': '2022-06-04T14:06:12.705Z',
           'max_supply': 9963,
           'name': 's0e6s017c7',
           'num_market_pairs': 8734,
           'platform': None,
           'quote': {'USD': {'fully_diluted_market_cap': 0.9746878021113472,
                             'last_updated': '2022-06-04T14:06:12.705Z',
                             'market_cap': 0.6013003590049011,
                             'market_cap_dominance': 5180,
                             'percent_change_1h': 0.17101064769984875,
                             'percent_change_24h': 0.8219588644349074,
                             'percent_change_7d': 0.2967925902164159,
                             'price': 0.10278733875599788,
                             'volume_24h': 1847,
                             'volume_change_24h': 0.30125921593306404}},
           'self_reported_circulating_supply': None,
           'self_reported_market_cap': None,
           'slug': 'y6bly4ghtu',
           'symbol': 'ye38jmukmtq',
           'tags': ['cfgi46ho3u6',
                    '4wf66ncn8wq',
                    'z7kq5h4nk4m',
                    '0fyep070gsvu',
                    'w6el3hi6q4i',
                    '7bollk8f82n',
                    '2x3wlcryuwl',
                    '4msazv8pi4f',
                    'h9oa6ildrcr',
                    'thjizui0bw'],
           'total_supply': 8869},
          {'circulating_supply': 3674,
           'cmc_rank': 2250,
           'date_added': '2022-06-04T14:06:12.705Z',
           'id': 8624,
           'last_updated': '2022-06-04T14:06:12.705Z',
           'max_supply': 4673,
           'name': '33blug4qp3o',
           'num_market_pairs': 8424,
           'platform': None,
           'quote': {'USD': {'fully_diluted_market_cap': 0.032407781500859434,
                             'last_updated': '2022-06-04T14:06:12.705Z',
                             'market_cap': 0.6280852710172873,
                             'market_cap_dominance': 5169,
                             'percent_change_1h': 0.5218196464513878,
                             'percent_change_24h': 0.0034232165759835453,
                             'percent_change_7d': 0.5044711848329677,
                             'price': 0.9224507051705186,
                             'volume_24h': 4396,
                             'volume_change_24h': 0.5035931003618941}},
           'self_reported_circulating_supply': None,
           'self_reported_market_cap': None,
           'slug': 'hi05whwp9oo',
           'symbol': 'dl9hi3q8du',
           'tags': ['c39teqffrz',
                    'evxnum9ji4',
                    'e2zurbuk36a',
                    'ofpeeyv7dk',
                    'w4tx7i54ft',
                    'i5kdoxqgyel',
                    'rkjz66u1idj',
                    't3b2zlq2qtk',
                    'irec5slstkg',
                    '7cfqmv66xa'],
           'total_supply': 9105},
          {'circulating_supply': 9564,
           'cmc_rank': 651,
           'date_added': '2022-06-04T14:06:12.705Z',
           'id': 4412,
           'last_updated': '2022-06-04T14:06:12.705Z',
           'max_supply': 3446,
           'name': '95tii6yz68m',
           'num_market_pairs': 1145,
           'platform': None,
           'quote': {'USD': {'fully_diluted_market_cap': 0.5994931783572839,
                             'last_updated': '2022-06-04T14:06:12.705Z',
                             'market_cap': 0.19486044794435098,
                             'market_cap_dominance': 9258,
                             'percent_change_1h': 0.2709512261195035,
                             'percent_change_24h': 0.9009193646671421,
                             'percent_change_7d': 0.2455243604005588,
                             'price': 0.7534302739268606,
                             'volume_24h': 1020,
                             'volume_change_24h': 0.7508220797217746}},
           'self_reported_circulating_supply': None,
           'self_reported_market_cap': None,
           'slug': 'pv8kbclf5es',
           'symbol': '0eqxeb5xuylj',
           'tags': ['ti4cenesez',
                    '9hiorlalwca',
                    '04pj74l383uu',
                    'f0vynvrsuwr',
                    'esxnlwz2r9',
                    'w7ct1k61qu',
                    'na650df70k',
                    'x3jn90kdsti',
                    'jo8c72ffjbe',
                    'g22o02crg7a'],
           'total_supply': 8360},
          {'circulating_supply': 7237,
           'cmc_rank': 5275,
           'date_added': '2022-06-04T14:06:12.705Z',
           'id': 2022,
           'last_updated': '2022-06-04T14:06:12.705Z',
           'max_supply': 6270,
           'name': 'f6tmq8nskre',
           'num_market_pairs': 2611,
           'platform': None,
           'quote': {'USD': {'fully_diluted_market_cap': 0.7730373061616533,
                             'last_updated': '2022-06-04T14:06:12.705Z',
                             'market_cap': 0.9705979595479648,
                             'market_cap_dominance': 8275,
                             'percent_change_1h': 0.9995928830558245,
                             'percent_change_24h': 0.14815780932452105,
                             'percent_change_7d': 0.07614097439624401,
                             'price': 0.24093561110494788,
                             'volume_24h': 2117,
                             'volume_change_24h': 0.07351089702151414}},
           'self_reported_circulating_supply': None,
           'self_reported_market_cap': None,
           'slug': 'x9f87thpjj',
           'symbol': '1q9zhxa4fll',
           'tags': ['o4mfcrxlvck',
                    '8hhhkw853cf',
                    'uoo5e0y906d',
                    'c7fdv0hn6xj',
                    '0cip7lxsnunu',
                    'v73g628tvd',
                    'f7tiwkbe3id',
                    'rlkwmxp7bl',
                    'a1408ejtlw7',
                    '4hjjgcth8nj'],
           'total_supply': 3552}],
 'status': {'credit_count': 1,
            'elapsed': 1,
            'error_code': 0,
            'error_message': None,
            'notice': None,
            'timestamp': '2022-06-04T14:06:12.705Z'}}

仮想通貨の情報リストが取得できました。

/v1/cryptocurrency/listings/historicalのエンドポイントでも仮想通貨の価格は取得できそうですが、せっかくなので別のエンドポイントを使ってみましょう。

今回は
/v2/cryptocurrency/quotes/latestを使います。


最新の市場相場価格、取引される仮想通貨の価格が取得できます。


クエリパラメータで色々条件を絞れる様子。

今回はビットコインの相場価格を日本円で取得したいので、

ID:'1'
convert:'JPY'

を指定します。

↓調べたい仮想通貨とIDのマップは以下のエンドポイントで確認

/v1/cryptocurrency/map

さて実際にコーディングしていきましょう。

#This example uses Python 2.7 and the python-request library.

from requests import Request, Session
from requests.exceptions import ConnectionError, Timeout, TooManyRedirects
import json
import pprint

API_KEY = '<ご自身の CoinMarketCap API KEYを入力>'

url = 'https://pro-api.coinmarketcap.com/v2/cryptocurrency/quotes/latest'
parameters = {
    'id':'1',
    'convert':'JPY'
}
headers = {
  'Accepts': 'application/json',
  'X-CMC_PRO_API_KEY': API_KEY,
}

session = Session()
session.headers.update(headers)

try:
  response = session.get(url, params=parameters)
  data = json.loads(response.text)
  bitcoin_jpy_price = data['data']['1']['quote']['JPY']['price']
  print(f'現在のビットコインの市場価格: {bitcoin_jpy_price}円\n')
  pprint.pprint(data)
except (ConnectionError, Timeout, TooManyRedirects) as e:
  print(e)

(出力例)

現在のビットコインの市場価格: 3901886.888907901円
{'data': {'1': {'circulating_supply': 19057962,
                'cmc_rank': 1,
                'date_added': '2013-04-28T00:00:00.000Z',
                'id': 1,
                'is_active': 1,
                'is_fiat': 0,
                'last_updated': '2022-06-04T14:34:00.000Z',
                'max_supply': 21000000,
                'name': 'Bitcoin',
                'num_market_pairs': 9478,
                'platform': None,
                'quote': {'JPY': {'fully_diluted_market_cap': 81939624667066.14,
                                  'last_updated': '2022-06-04T14:33:52.000Z',
                                  'market_cap': 74362012057105,
                                  'market_cap_dominance': 46.4328,
                                  'percent_change_1h': 0.61993668,
                                  'percent_change_24h': 0.78870686,
                                  'percent_change_30d': -22.74737582,
                                  'percent_change_60d': -35.1644513,
                                  'percent_change_7d': 2.44920114,
                                  'percent_change_90d': -23.22106434,
                                  'price': 3901886.888907901,
                                  'volume_24h': 2571004693640.8315,
                                  'volume_change_24h': -35.0553}},
                'self_reported_circulating_supply': None,
                'self_reported_market_cap': None,
                'slug': 'bitcoin',
                'symbol': 'BTC',
                'tags': [{'category': 'OTHER',
                          'name': 'Mineable',
                          'slug': 'mineable'},
                         {'category': 'CONSENSUS_ALGORITHM',
                          'name': 'PoW',
                          'slug': 'pow'},
                         {'category': 'CONSENSUS_ALGORITHM',
                          'name': 'SHA-256',
                          'slug': 'sha-256'},
                         {'category': 'PROPERTY',
                          'name': 'Store Of Value',
                          'slug': 'store-of-value'},
                         {'category': 'PROPERTY',
                          'name': 'State Channel',
                          'slug': 'state-channel'},
                         {'category': 'PROPERTY',
                          'name': 'Coinbase Ventures Portfolio',
                          'slug': 'coinbase-ventures-portfolio'},
                         {'category': 'PROPERTY',
                          'name': 'Three Arrows Capital Portfolio',
                          'slug': 'three-arrows-capital-portfolio'},
                         {'category': 'PROPERTY',
                          'name': 'Polychain Capital Portfolio',
                          'slug': 'polychain-capital-portfolio'},
                         {'category': 'PROPERTY',
                          'name': 'Binance Labs Portfolio',
                          'slug': 'binance-labs-portfolio'},
                         {'category': 'PROPERTY',
                          'name': 'Blockchain Capital Portfolio',
                          'slug': 'blockchain-capital-portfolio'},
                         {'category': 'PROPERTY',
                          'name': 'BoostVC Portfolio',
                          'slug': 'boostvc-portfolio'},
                         {'category': 'PROPERTY',
                          'name': 'CMS Holdings Portfolio',
                          'slug': 'cms-holdings-portfolio'},
                         {'category': 'PROPERTY',
                          'name': 'DCG Portfolio',
                          'slug': 'dcg-portfolio'},
                         {'category': 'PROPERTY',
                          'name': 'DragonFly Capital Portfolio',
                          'slug': 'dragonfly-capital-portfolio'},
                         {'category': 'PROPERTY',
                          'name': 'Electric Capital Portfolio',
                          'slug': 'electric-capital-portfolio'},
                         {'category': 'PROPERTY',
                          'name': 'Fabric Ventures Portfolio',
                          'slug': 'fabric-ventures-portfolio'},
                         {'category': 'PROPERTY',
                          'name': 'Framework Ventures Portfolio',
                          'slug': 'framework-ventures-portfolio'},
                         {'category': 'PROPERTY',
                          'name': 'Galaxy Digital Portfolio',
                          'slug': 'galaxy-digital-portfolio'},
                         {'category': 'PROPERTY',
                          'name': 'Huobi Capital Portfolio',
                          'slug': 'huobi-capital-portfolio'},
                         {'category': 'PROPERTY',
                          'name': 'Alameda Research Portfolio',
                          'slug': 'alameda-research-portfolio'},
                         {'category': 'PROPERTY',
                          'name': 'a16z Portfolio',
                          'slug': 'a16z-portfolio'},
                         {'category': 'PROPERTY',
                          'name': '1Confirmation Portfolio',
                          'slug': '1confirmation-portfolio'},
                         {'category': 'PROPERTY',
                          'name': 'Winklevoss Capital Portfolio',
                          'slug': 'winklevoss-capital-portfolio'},
                         {'category': 'PROPERTY',
                          'name': 'USV Portfolio',
                          'slug': 'usv-portfolio'},
                         {'category': 'PROPERTY',
                          'name': 'Placeholder Ventures Portfolio',
                          'slug': 'placeholder-ventures-portfolio'},
                         {'category': 'PROPERTY',
                          'name': 'Pantera Capital Portfolio',
                          'slug': 'pantera-capital-portfolio'},
                         {'category': 'PROPERTY',
                          'name': 'Multicoin Capital Portfolio',
                          'slug': 'multicoin-capital-portfolio'},
                         {'category': 'PROPERTY',
                          'name': 'Paradigm Portfolio',
                          'slug': 'paradigm-portfolio'}],
                'total_supply': 19057962}},
 'status': {'credit_count': 1,
            'elapsed': 38,
            'error_code': 0,
            'error_message': None,
            'notice': None,
            'timestamp': '2022-06-04T14:35:13.526Z'}
}

■変更点

  • url
  • parameters
  • API_KEY

■使い方

上記PythonスクリプトのAPI_KEYには先ほどコピーしたAPI KEYを代入してください

API_KEY = '<ご自身の CoinMarketCap API KEYを入力>'
↓
API_KEY = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'

目標の値を取得できました!
以上です。

参考文献

コメント

タイトルとURLをコピーしました