引言
coinmarketcap-api 是一套开源的 Python 包装库,旨在用最简洁的语法,把 CoinMarketCap 公开 API 与 私有 API 的能力全部开放给开发者。它支持 实时全球市值、币种详情、交易所数据 等关键指标,并且兼容 Python 2.7 与 3.6+。
关键词:coinmarketcap-api、数字货币数据、Python 行情库、交易所接口、实时市值
安装
源码安装
git clone https://github.com/shyuntech/coinmarketcap-api
cd coinmarketcap-api
python setup.py install一键 PyPI
pip install coinmarketcap-api使用方式总览
创建实例
from coinmarketcap import CoinMarketCap market = CoinMarketCap()- 根据需求调用以下 7 大核心方法:stats、coin_list、coin_ticker_detail、coin_ticker_list、coin_price、coin_market_price、exchange_list。
功能详解与示例
1. 全球市值快照(stats)
- 对应接口:/v2/global
- 用途:查看总市值、比特币占比、24h 综合成交量等关键曲线。
resp = market.stats(convert="BTC")
print(resp["data"]["bitcoin_percentage_of_market_cap"])
# 输出示例:42.112. 币种总览列表(coin_list)
- 对应接口:/v2/listings
- 用途:一次性拉取所有 活跃币种的 id、名称、符号,为后续查询做字典映射。
data = market.coin_list()
for coin in data["data"]:
print(coin["symbol"], coin["id"])
# BTC 1
# ETH 10273. 单币深度信息(coin_ticker_detail)
- 对应接口:/v2/ticker/
<coin_id> 关键参数
convert:多法币(CNY、EUR 等)与主流加密货币(BTC、ETH 等)disable_cache=True:强制刷新数据
btc = market.coin_ticker_detail(1, convert="CNY")
print("价格:", btc["data"]["quotes"]["CNY"]["price"])
print("7日涨跌:", btc["data"]["quotes"]["CNY"]["percent_change_7d"], "%")4. 分页行情列表(coin_ticker_list)
- 核心场景:对前 100 或自定义区间币种做排名、筛选、排序。
- 推荐用法:按
id排序,保证分页一致性。
top20 = market.coin_ticker_list(limit=20, sort="rank", convert="EUR")
ranked = sorted(top20["data"].values(), key=lambda x: x["rank"])5. 币种价格时间序列(coin_price)
- 采集自私有 API,传入 Unix 时间戳起止区间,返回 market_cap、volume_24h、price_usd 时间序列,用于绘制 K 线或做量化回测。
from datetime import datetime
start = int(datetime(2023, 1, 1).timestamp() * 1000)
end = int(datetime(2023, 12, 31).timestamp() * 1000)
series = market.coin_price("eos", start=start, end=end)
price_usd = [i[1] for i in series["price_usd"]]6. 交易所深度摆盘(coin_market_price)
通过网页解析全球 超 200 家交易所的实时交易对深度,字段包含 price、volume、percent 等。
depth = market.coin_market_price("xrp")
okex = [d for d in depth["data"] if d["exchange"] == "OKEx"][0]
print(okex["price"]["price_usd"])7. 交易所榜单(exchange_list)
一次性获取所有交易所 排名、LOGO、链接,可做排行榜、数据仪表盘。
exchanges = market.exchange_list()
top3 = exchanges["data"][:3]
print([e["display_name"] for e in top3])
# ['FCoin', 'BitMEX', 'Binance']FAQ(常见疑问)
Q1:如何切换 requests 超时时间?
A:在实例化时传自定义 session:CoinMarketCap(request_timeout=10)。
Q2:免费额度是多少?
A:调用公开接口时对频率没有强制限额,但建议每秒 ≤ 1 次,防止被临时封 IP。
Q3:支持 WebSocket 实时订阅吗?
A:目前库仅封装 RESTful 接口,实时需求可搭配 自建的 Ticker + WebSocket 桥接服务。
Q4:数据更新频率?
A:官方公开 API 每 5 分钟刷新一次,coin_price 私有接口每 1 分钟刷新。
Q5:可以筛选稳定币吗?
A:在 coin_ticker_list 后过滤 "stablecoin" 类型即可,需额外跑一个币种元数据表。
Q6:遇到 HTTP 521 如何解决?
A:这是 Cloudflare 高频触发,建议增加重试策略或使用代理池轮询。
结语
借助 coinmarketcap-api,你只需十几行代码就能搭建一个 实时数字货币数据管道。无论是做量化策略、行情网站,还是资产仪表盘,都能显著节省对接 CoinMarketCap 的重复体力劳动。立即 pip 安装,开启你的区块链数据之旅!