CoinGecko最新上架币种近实时获取API选型及实现方法咨询
CoinGecko最新币种近实时获取方案
调用的API接口
你需要用CoinGecko公开API的GET /coins/list/new接口,这个接口专门返回平台最近7天内新添加的币种数据,返回字段包含币种唯一id、名称、符号、激活时间、币种状态等核心信息,完全匹配你的需求。
近实时获取实现要点
- 频率控制:免费版API限流为每分钟最多30次请求,建议将拉取间隔设为2分钟,既能保证接近实时的效果,也不会触发限流;如果使用付费版API,可将间隔缩短到10-30秒,实时性更高。
- 去重逻辑:本地维护一个已获取过的币种id集合,每次拉取到新数据后和集合做对比,不在集合内的就是真正的新增币种,处理完成后把新的id加入集合即可。
- 异常处理:如果请求返回429状态码说明触发限流,需要加入重试逻辑,等待30-60秒后再发起请求;其他错误状态码可以直接跳过本次拉取,等待下一个周期再尝试。
Python实现示例
import requests import time # 存储已同步的币种id,避免重复提醒 synced_coin_ids = set() def get_new_coins(): api_url = "https://api.coingecko.com/api/v3/coins/list/new" headers = {"accept": "application/json"} try: resp = requests.get(api_url, headers=headers, timeout=15) if resp.status_code == 200: return resp.json() elif resp.status_code == 429: # 触发限流等待45秒重试 time.sleep(45) return get_new_coins() else: return [] except Exception as err: print(f"接口请求失败:{str(err)}") return [] if __name__ == "__main__": # 初始化本地已存在的币种数据 init_coins = get_new_coins() for coin in init_coins: synced_coin_ids.add(coin["id"]) # 定时轮询 while True: latest_coins = get_new_coins() for coin in latest_coins: if coin["id"] not in synced_coin_ids: # 这里可以替换为你自己的业务逻辑,比如推送提醒、入库等 print(f"新增币种:{coin['name']}({coin['symbol'].upper()}),上线时间:{coin['activated_at']}") synced_coin_ids.add(coin["id"]) # 每2分钟拉取一次,可根据自己的API权限调整间隔 time.sleep(120)
额外注意
- 接口默认只返回最近7天的新增币种,所以本地存储的id集合只需要保留最近7天的数据即可,不用长期存储避免占用过多空间。
- 部分新增币种可能后续会被平台下架,你可以在拿到数据后额外校验
active字段,值为true才是有效上线的币种。
内容的提问来源于stack exchange,提问作者hoochiemama01
相关产品推荐
相关产品推荐

