NFT 交易历史接口(又称 Order API、Collection Transaction History API)是开发者与市场分析师洞察「地板价变化、成交速度、热门买家」的利器。本文从接口地址到字段释义,手把手拆解如何调取某一 NFT 系列的完整交易记录,同时插入真实场景案例与高频疑问解答,帮助你高效落地。
基础信息
请求地址
GET https://web3.okx.com/api/v5/mktplace/nft/markets/trades
核心功能
- 精准溯源:锁定 collectionAddress,回滚该系列在任意链的销售轨迹;
- 平台过滤:通过 platform 参数聚焦或排除特定市场,快速对比 opensea、blur、x2y2 的价差;
- 时区切片:搭配 startTime & endTime,在数据河流中「截胡」特定时间片的买单、卖单;
- 分页下潜:使用 cursor 循环拉取全部历史,不再受窄窗口限制;
- 字段丰富:price / buyer / seller / txHash 一目了然,省去多次拼接查询。
请求参数拆解
| 参数名 | 是否必填 | 类型 | 关键要点与小贴士 |
|---|---|---|---|
| chain | 是 | String | 名称需全小写,如 ethereum、polygon、bsc 等;避免大小写错误导致 404。 |
| collectionAddress | 是 | String | 直接复制浏览器地址栏的 0x 开头合约地址即可,支持 ENS 域名解析时自动转换。 |
| platform | 否 | String | 为空时默认跨平台聚合;填入 opensea 或 blur 做隔离分析。 |
| limit | 否 | String | 单次返回上限 50,超过自动拉回至 50;拉全量时,请结合 cursor 分帧。 |
| cursor | 否 | String | 响应结果中的游标值即为下一帧入口,把其作为 query 参数继续发请求。 |
| startTime、endTime | 否 | String | Unix 毫秒时间戳;注意采用 UTC+0,本地脚本需做时区校正。 |
响应字段速览
| 字段名 | 语义解释 |
|---|---|
| cursor | 翻页令牌,取下一批记录。 |
| amount | 单笔成交的 NFT 数量(非挂单量)。 |
| chain | 链身份水印。 |
| collectionAddress | 系列合约地址,防撞库校验。 |
| currencyAddress | 支付通证地址,ETH 通常显示为 0x000...000。 |
| from / to | 卖 / 买地址,可直接检索巨鲸动向。 |
| platform | 交易平台来源,方便做深度追溯。 |
| price | 单枚 NFT 成交单价,Decimal 精确至小数位。 |
| timestamp | UTC 毫秒级交易发生时间。 |
| tokenId | NFT 编号,利于与合约元数据拼接展示图片。 |
| txHash | 链上交易哈希,可跳区块浏览器复核所有日志。 |
真实调用示例
假设我们要查找以太坊主网 CryptoPunks 系列过去 24 小时的数据,并将结果细分平台对比。
- 计算时间戳区间:
startTime = Date.now() - 86400000(24 h 前)endTime = Date.now()
- 构造 URL(演示未 URL Encode):
https://web3.okx.com/api/v5/mktplace/nft/markets/trades ?chain=ethereum &collectionAddress=0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB &startTime=1716090302000 &endTime=1716176702000 &limit=50 - 首轮返回 50 条;提取
cursor发二次请求直到无新游标,即捕获全量。
👉 零基础也能跑通的 5 分钟脚本,更快上手 web3 API!
常见坑 & 优化建议
| 情境 | 建议 |
|---|---|
| 数据量大、限流 | 将 limit 定在 50;后端对高频 IP 做 120 r/m 限速,建议加入随机等待。 |
| 历史早期记录缺失 | 平台索引在 2023 年前数据不完整,先确认链上交易确实存在再申请补录。 |
| 通证价格波动 | 获取 currencyAddress 结合实时 ETH/USD 汇率换算美金,即可生成 USD 视角的地板价曲线。 |
| ENS / 合约重定向 | 程序可自动把 ENS 域名经节点解析后再传参,防止空格与大小写问题。 |
常见问题解答(FAQ)
Q1:我只关心某一只 Punk 的交易历史,能否用 tokenId 过滤?
A:当前接口以系列维度为主。想追踪单枚 NFT,可先拉全集,再根据返回结果中 tokenId 字段进行二次过滤。
Q2:platform 为空时是否会降低响应速度?
A:不会。后端提前建好索引,全平台合并查询同样毫秒级。
Q3:返回的 txHash 是 66 位十六进制,能直接当浏览器链接使用吗?
A:不能直接用。拼接成 https://etherscan.io/tx/{txHash} 即可跳转区块浏览器。
Q4:cursor 有效时长多久?
A:服务端不做持久化,建议 5 分钟内连续翻页;过期后直接重新发起第一页请求。
Q5:字段 priceFloat 和 price 有什么区别?
A:接口目前仅给出 price(BigDecimal)字符串格式,无 Float;若前端需要浮点展示,请自行用 big.js 或 bignumber.js 转换,防止精度丢失。
Q6:能否用沙盒网测试?
A:可切换 chain 为 goerli、sepolia 等测试网,合约地址需部署在对应网,否则查询为空。
在实际项目中的扩展用法
- 地板价波动预警
- 每 5 分钟调用一次「最后成交价」;
- 若最新 price 低于过去 48 均价 20%,推送 Discord 告警。
- 巨鲸动向看板
- 过滤 price > 50 ETH 的交易,解析 to 钱包地址;
- 交叉合约标签数据库,标记蓝筹地址,一键生成「今日买家 TOP10」。
- 做市商回测
- 用 timestamp 与 price 拟合 K 线,下载 CSV 后跑 ARIMA 模型,回测挂单策略。
小结
掌握 NFT 交易历史接口,等于拥有了区块链上的“成交账本”。通过精确控制 时间、平台、游标 三大杠杆,你可以像数据科学家一样,轻松抓取 10 万条甚至百万条链上记录,并结合自定义分析脚本输出可视化图表。立即动手,将理论转化为实用洞察,让数据成为下一个决策节点的燃料。