Skip to main content

数据新鲜度与时间戳

每条报价都附带时间与过期元数据,便于采信或折价处理。

fetchedAtSkinPricer 最近一次从该市场抓取该报价的时间。
ingestedAt报价写入 SkinPricer 价格存储的时间,略晚于 fetchedAt。它不代表价格的时效。
ingestLatencyMsfetchedAt → ingestedAt 的延迟,毫秒。
isStale报价或挂单的 fetchedAt 超过 30 分钟时为 true(全市场统一的阈值)。
sourceUpdatedAt市场自身生成该数据的时间(仅在市场提供时)。fetchedAt 只是 SkinPricer 最近一次检查的时间,而检查可能只是确认副本未变,因此数据可能远比 fetchedAt 旧。市场未提供时间时省略该字段,大多数市场都是如此。
sourceTimeKindsourceUpdatedAt 的来源:payload(市场自报的生成时间,最可靠)、last_modified(经核实的文件时间戳)或 cdn_age(缓存响应头)。none 表示没有可用时间。与 sourceUpdatedAt 一同省略。
sourceAgeSecondsSkinPricer 观测时市场数据已有多旧,单位秒:观测时间减去 sourceUpdatedAt。与 sourceUpdatedAt 一同省略。
isSourceStale以 sourceUpdatedAt 而非 fetchedAt 判断的 isStale:市场自身数据超过 30 分钟时为 true。尚未下发。启用后,凡省略 sourceUpdatedAt 的报价也会省略此字段。
updatedAt在 NBBO 的 bestAsk / bestBid 上:来源报价的最后更新时间。
marketCount / freshMarketCount提供报价的市场数 vs 其中仍新鲜的市场数。
confidence由覆盖度、新鲜度与跨市场一致性得出的 0 到 1 评分。
calculatedAtSkinPricer 计算响应中聚合值 / NBBO 的时间。

isStale 使用全市场统一的 30 分钟阈值,而非按市场的窗口。判断价格有多旧时,有 sourceUpdatedAt 就用它,否则用 fetchedAt。isStale 按 fetchedAt 计算(超过 30 分钟时为 true)。ingestedAt 是报价写入 SkinPricer 价格存储的时间;ingestedAt 减去 fetchedAt 是 SkinPricer 的处理延迟,而不是价格的时效。对交易清淡的饰品,isStale=true 应视为软信号而非硬性剔除:稍旧的报价可能是唯一可用的报价。

来源时效

只有部分市场会说明数据的生成时间。截至 2026 年 10 月,包括 Skinport、Market.CSGO、rust.tm 和 CSFloat。CSFloat 大约每小时重建一次价格表,因此即使 fetchedAt 只是一分钟前,其数据仍可能接近一小时旧。其他市场都会省略这些来源字段:缺失表示未知,绝不等于 0,也不等于 fetchedAt。买单目前不带来源时间。Skinport 的 sourceAgeSeconds 为 0,因为每次轮询都以其快照自身的时间标记。下方的最长时效仍按 fetchedAt 计算,来源时效不影响哪些报价会被返回。

最长时效与挂单计数

steamcommunity30 分钟
其他所有市场30 分钟

报价超过其市场的最长时效后,将不再计入价格、NBBO 与挂单深度。此后挂单行仍会返回,并各自标记 isStale,但挂单计数只统计最长时效内的挂单:挂单接口的 totalListings 与市场健康状态的 listingsCount。因此计数可能为 0,而过期挂单行仍在返回,例如某市场的抓取暂停时。

使用此端点的指南(英文)

使用与许可

API 及其数据的使用受我们的服务条款(英文)约束:不得转售或再分发数据,不得用于构建竞争性服务, 不得超出套餐的速率限制;在条款允许展示数据的场景下须注明数据来源为 SkinPricer。滥用行为可能被限流或封禁。