You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用pycoingecko获取所有加密货币的全量市场数据

从CoinGecko拉取全量加密货币市场数据的解决方案

cg.get_coins_markets仅返回前250条数据是因为接口默认开启分页,单页最大返回条数上限为250,不需要额外调用其他接口,利用分页参数循环拉取所有有效页码即可拿到全量数据。

实现步骤

  • 核心逻辑:调用get_coins_markets时传入page(页码,从1开始计数)和per_page(单页返回条数,固定设为最大值250减少请求次数)参数,循环拉取直到接口返回空列表,说明已无更多数据。
  • 需添加请求延迟,避免触发CoinGecko免费API的频率限制(免费版限流为每分钟10-30次,触发限流会返回429错误,甚至临时封禁IP)。

可直接运行的代码示例

from pycoingecko import CoinGeckoAPI
import time
import pandas as pd  # 可选,用于结构化存储数据

# 初始化客户端
cg = CoinGeckoAPI()
all_market_data = []
current_page = 1
per_page = 250  # 单页最大返回量,固定设为上限值

while True:
    print(f"正在拉取第{current_page}页数据")
    try:
        # 可按需修改vs_currency为你需要的计价货币,比如cny、eur等
        page_data = cg.get_coins_markets(
            vs_currency="usd",
            page=current_page,
            per_page=per_page
        )
        # 当前页返回空说明所有数据拉取完成,退出循环
        if not page_data:
            break
        all_market_data.extend(page_data)
        current_page += 1
        # 请求延迟,可根据实际限流情况调整,免费版建议不低于1秒
        time.sleep(1.5)
    except Exception as e:
        print(f"拉取第{current_page}页出错,错误信息:{e}")
        # 出错后延长等待时间再重试,避免触发更严格的限流
        time.sleep(10)

print(f"拉取完成,共获取{len(all_market_data)}条币种市场数据")

# 可选:导出为CSV文件方便后续处理
# df = pd.DataFrame(all_market_data)
# df.to_csv("coingecko全量市场数据.csv", index=False, encoding="utf-8-sig")

注意事项

  • 拉取完成后可以和cg.get_coins_list()返回的总币种数量做对比,如果差距过大说明有漏页,可调整重试逻辑补拉缺失页码的数据。
  • 可以按需给get_coins_markets添加其他支持的参数,比如sparkline=True返回K线数据、order="market_cap_desc"按市值排序等。
  • 如果需要更高的请求频率,可以申请CoinGecko的付费API接口,调整代码中的延迟参数即可。

内容的提问来源于stack exchange,提问作者cdotw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 14:18:04