今回は仮想通貨のレートを取得する時に便利な 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の使い方を見てみましょう
クイックガイドがありますね
使い慣れた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'
目標の値を取得できました!
以上です。
コメント