This is a non official (but working) Python package to wrap the CoinMarketCap API. With this you can monitoring and watch the crypto market.
- First, you have to create an API on the Developper Portal
- Read the official API documentation
Via pip
- pip install python-coinmarketcap
/!\ Don't confound with the coinmarketcap package.
from coinmarketcapapi import CoinMarketCapAPI, CoinMarketCapAPIError
cmc = CoinMarketCapAPI('{YOUR_API_KEY}')
r = cmc.cryptocurrency_info(symbol='BTC')
do_something(r.data)
Synopsis
CoinMarketCapAPI(api_key=None, [debug=False, logger=None, sandbox=False, version='v1'])
debug
: set verbosity.sandbox
: In case of default sandbox API key changes, see Issue #1.logger
: you can give a custom logger.version
: set the version in the URL, for futures version.
Methods
You have to pass to following methods the parameters detailled in the official documentation.
Methods and documentation | Description | Endpoint |
---|---|---|
(doc) cryptocurrency_map | CoinMarketCap ID map | /cryptocurrency/map |
(doc) cryptocurrency_info | Metadata | /cryptocurrency/info |
(doc) cryptocurrency_listings_latest | Latest listings | /cryptocurrency/listings/latest |
(doc) cryptocurrency_listings_historical | Historical listings | /cryptocurrency/listings/historical |
(doc) cryptocurrency_quotes_latest | Latest quotes | /cryptocurrency/quotes/latest |
(doc) cryptocurrency_quotes_historical | Historical quotes | /cryptocurrency/quotes/historical |
(doc) cryptocurrency_marketpairs_latest | Latest market pairs | /cryptocurrency/market-pairs/latest |
(doc) cryptocurrency_ohlcv_latest | Latest OHLCV | /cryptocurrency/ohlcv/latest |
(doc) cryptocurrency_ohlcv_historical | Historical OHLCV | /cryptocurrency/ohlcv/historical |
(doc) cryptocurrency_priceperformancestats_latest | Price performance Stats | /cryptocurrency/price-performance-stats/latest |
(doc) cryptocurrency_categories | Categories | /cryptocurrency/categories |
(doc) cryptocurrency_category | Category | /cryptocurrency/category |
(doc) cryptocurrency_airdrops | Airdrops | /cryptocurrency/airdrops |
(doc) cryptocurrency_airdrop | Airdrop | /cryptocurrency/airdrop |
(doc) cryptocurrency_trending_latest | Trending Latest | /cryptocurrency/trending/latest |
(doc) cryptocurrency_trending_mostvisited | Trending Most Visited | /cryptocurrency/trending/most-visited |
(doc) cryptocurrency_trending_gainerslosers | Trending Gainers & Losers | /cryptocurrency/trending/gainers-losers |
(doc) exchange_map | CoinMarketCap ID map | /exchange/map |
(doc) exchange_info | Metadata | /exchange/info |
(doc) exchange_listings_latest | Latest listings | /exchange/listings/latest |
(doc) exchange_listings_historical | Historical listings | /exchange/listings/historical |
(doc) exchange_quotes_latest | Latest quotes | /exchange/quotes/latest |
(doc) exchange_quotes_historical | Historical quotes | /exchange/quotes/historical |
(doc) exchange_marketpairs_latest | Latest market pairs | /exchange/market-pairs/latest |
(doc) globalmetrics_quotes_latest | Latest global metrics | /global-metrics/quotes/latest |
(doc) globalmetrics_quotes_historical | Historical global metrics | /global-metrics/quotes/historical |
(doc) tools_priceconversion | Price conversion tool | /tools/price-conversion |
(doc) blockchain_statistics_latest | Latest statistics | /blockchain/statistics/latest |
(doc) fiat_map | CoinMarketCap ID map | /fiat/map |
(doc) partners_flipsidecrypto_fcas_listings_latest | List all available FCAS scores | /partners/flipside-crypto/fcas/listings/latest |
(doc) partners_flipsidecrypto_fcas_quotes_latest | Request specific FCAS scores | /partners/flipside-crypto/fcas/quotes/latest |
(doc) key_info | Key Info | /key/info |
Additionnal Parameters
api_version
(str): if given, will fetch the given version of the endpoint (default is equal to the given version in the CoinMarketCapAPI instance wich is actuallyv1
).
Example
Assuming you want to get informations about bitcoin. First, read the documentation of the corresponding cryptocurrency_info endpoint.
- You can pass the
symbol
parameter like :cmc.cryptocurrency_info(symbol='BTC')
- or with the
slug
parameter :cmc.cryptocurrency_info(slug='bitcoin')
You can switch easly in the sandbox mode without giving an API key or by setting it to None
:
cmc = CoinMarketCapAPI() # You are in sandbox environnement
You can enable a debuging mode, just set debug
to True
to main class:
cmc = CoinMarketCapAPI(debug=True)
cmc.cryptocurrency_info(symbol='BTC')
This will produce this output :
2019-04-06 16:03:04,716 root DEBUG GET SANDBOX 'v1/cryptocurrency/info'
PARAMETERS: {'symbol': 'BTC'}
2019-04-06 16:03:05,004 root DEBUG RESPONSE: 288ms OK: {u'BTC': {u'category': u'coin', u'name': u'Bitcoin', u'tags': [u'mineable'], u'symbol': u'BTC', u'id': 1, [...]}
Optionnaly, you can pass (on-the-fly) a specific version of an endpoint by given the api_version
keyword argument directly to a method:
cmc.cryptocurrency_listings_latest(..., api_version="v1.1")
See also
Synopsis
You get results of the API in a Response
instance.
Property
Corresponding to standards and conventions:
data
(dict): will give you the result.status
(dict): the status object always included for both successful calls and failures.credit_count
(int): the number of credits this call utilized.elapsed
(int): the number of milliseconds it took to process the request to the server.total_elapsed
(int): the total number of milliseconds it took to process the request.timesamp
(str): current time on the server when the call was executed.error_code
(str | None): In case of an error has been raised, this property will give you the status error code.error_message
(str | None): In case of an error has been raised, this property will give details about error.error
(bool): True if an error has been raised.
Example
r = cmc.cryptocurrency_info(symbol='BTC')
print(repr(r.status))
print(repr(r.data))
print(repr(r.credit_count))
Synopsis
If API returns an error, CoinMarketCapAPI
will raise a CoinMarketCapAPIError
.
Property
rep
(Response | None): will give you aResponse
instance orNone
if request failed for an other reason than a server error.
Example
from coinmarketcapapi import CoinMarketCapAPI, CoinMarketCapAPIError
cmc = CoinMarketCapAPI('{YOUR_API_KEY}') # Pro environnement
# cmc = CoinMarketCapAPI() # Sandbox environnement
try:
r = cmc.cryptocurrency_info(symbol='BTC')
except CoinMarketCapAPIError as e:
r = e.rep
print(repr(r.error))
print(repr(r.status))
print(repr(r.data))
- Add Cryptocurrency Abstraction
- Add Exchange Abstraction
- Add GlobalMetrics Abstraction
- Add Tools Abstraction
- 31 aug 2021: Version 0.3
- Adding new endpoints (Aug 17):
- /v1/cryptocurrency/categories
- /v1/cryptocurrency/category
- /v1/cryptocurrency/airdrops
- /v1/cryptocurrency/airdrop
- /v1/cryptocurrency/trending/latest
- /v1/cryptocurrency/trending/most-visited
- /v1/cryptocurrency/trending/gainers-losers
- PEP 8 style
- Adding
api_version
keyword argument to all endpoints to change on-the-fly the api version to use.
- Adding new endpoints (Aug 17):
- 8 sept 2020: Version 0.2
- Adding missing endpoints
- Fixing sandbox mode (see Issue #1)
- Adding
deflate, gzip
encoding to receive data fast and efficiently. - Documentation: adding usefull links
- 6 apr 2019: Version 0.1
BTC: 39aosiow4nsUvYVA2kP1hZPNZ7ZbJ6ouKr
ETH: 0x45d940FDA3F1Ce91cA7CB478af72170bb6560201