为Zapier编写REST API查询:如何仅获取Cryptowat.ch成交量数据
如何从Cryptowat Markets Summaries接口提取Volume数据到Zapier
我之前折腾过Cryptowat的API,碰到过一模一样的问题——这个markets/summaries端点不支持通过fields参数直接过滤返回字段。官方的fields参数设计主要是针对单个市场详情接口(比如markets/{exchange}/{pair}/summary)的字段筛选,而汇总接口默认会返回所有市场的完整数据,没法通过URL参数裁剪。
不过别担心,我们可以在Zapier里对返回的完整数据做二次处理,轻松提取出仅有的Volume信息,下面是两种实用方法:
方法一:无代码快速处理(用Zapier Formatter)
如果你的需求比较简单(比如只提取所有市场的Volume列表),可以用Zapier的内置工具:
- 在API请求步骤之后,添加一个「Formatter by Zapier」动作
- 选择「Utilities」分类下的「Extract」,然后在「Input」里选择API返回的
result对象 - 用JSON Path表达式
$..volume来批量提取所有嵌套的Volume字段,这样就能得到一个纯Volume值的数组
方法二:代码方式(更灵活,适合复杂需求)
如果需要对Volume数据做自定义处理(比如按交易所分组、过滤特定市场),推荐用「Code by Zapier」工具:
- 添加「Code by Zapier」动作,选择「JavaScript」
- 在「Input Data」区域新增一个字段(比如命名为
fullApiResponse),选择之前API请求返回的完整响应内容 - 粘贴以下代码:
// 解析API返回的完整JSON数据 const apiData = JSON.parse(inputData.fullApiResponse); const volumeData = {}; // 遍历所有市场,提取对应Volume for (const marketKey in apiData.result) { const market = apiData.result[marketKey]; // 可以在这里添加过滤条件,比如只保留Binance的市场: // if (marketKey.startsWith('binance:')) { volumeData[marketKey] = market.volume; // } } // 输出处理后的Volume数据,供后续Zap步骤使用 return { volumeData };
- 运行测试,就能得到一个以市场名为键、Volume为值的对象,完全符合你的需求
另外提醒一下:如果API返回的Volume是嵌套结构(比如volume.24h),记得把代码里的market.volume改成对应的路径,比如market.volume["24h"]。
内容的提问来源于stack exchange,提问作者Racheal Brooker
相关产品推荐
相关产品推荐

