主题
Statistics Object
stats 字段是 Product Object 的一个摘要子对象,把 csv 里数十条历史时间序列预聚合成「当前价、近 N 天均价、历史最低/最高、缺货比例、销量排名跌次」等可直接使用的指标。
对应 Keepa 官方:Statistics Object
何时返回
- 仅当请求
/api/keepa/product时带上stats参数(数值,单位天,如stats=180)才会返回该对象。 - 部分子字段还要求带
offers/buybox/stock才会有值(每个字段下方会注明)。 - 在
detailLevel=lite时保留整个stats对象(不会被裁剪);summary也保留。
通用约定
- 数组类字段(
current/avg/min/max/outOfStockPercentage*/atIntervalStart)的下标统一是 Price Type。 - 价格单位:Cents;
-1= 该时段无 offer / 缺货 / 数据不足。 - 时间单位:KeepaTime 分钟。
字段(默认返回,无附加参数依赖)
| 字段 | 类型 | 说明 |
|---|---|---|
current | int[] | 各 Price Type 的最新值。-1 表示该 Price Type 当前无报价(可能是缺货/不存在)。 |
avg | int[] | 请求 stats=N 指定区间内的加权平均(按时间长度加权)。-1 = 区间内无数据。 |
avg30 / avg90 / avg180 / avg365 | int[] | 同 avg,但固定窗口为 30 / 90 / 180 / 365 天。 |
atIntervalStart | int[] | 区间起点那一刻的价格快照,可以和 current 比对得到「区间涨跌」。 |
min | int[][] | 历史最低值。第一维 = Price Type;第二维 = [KeepaTime, value],无数据时为 null。 |
max | int[][] | 历史最高值。结构同 min。 |
minInInterval | int[][] | 仅在 stats=N 指定的区间内的最低值。 |
maxInInterval | int[][] | 仅在 stats=N 指定的区间内的最高值。 |
outOfStockPercentageInInterval | int[] | 区间内缺货比例(0–100),非价格 Price Type 为 -1。 |
outOfStockPercentage30 / 90 / 180 / 365 | int[] | 同上,但固定窗口为 30 / 90 / 180 / 365 天。 |
salesRankDrops30 / 90 / 180 / 365 | int | 销量排名「从高到低」的下降次数 —— Keepa 用作销量代理指标,越大表示成交越频繁。 |
lastOffersUpdate | int | offers 信息的最后一次更新时间(KeepaTime)。 |
totalOfferCount | int | 该产品所有状态(New + Used + …)的 offer 总数。各状态拆分见 current[11..14]。 |
lightningDealInfo | int[] | [startDate, endDate],皆为 KeepaTime;null 表示该 ASIN 从未有过 Lightning Deal。· 预告中:只有 startDate、endDate = -1· 进行中: startDate < now < endDate· 已结束:两个时间都在过去 |
字段(要求 offers 或 buybox 参数)
这一组字段只有在请求
product接口时带上offers=N或buybox=true才会有值。
| 字段 | 类型 | 说明 |
|---|---|---|
lastBuyBoxUpdate | int | Buy Box 信息最后一次更新时间(KeepaTime)。 |
buyBoxSellerId | string | 当前 Buy Box 卖家 sellerId;"-1" = Buy Box 被压制(无人合格),"-2" = 缺货 / 未识别,null = 未知。 |
buyBoxPrice | int | Buy Box 新品价(cents)。 |
buyBoxShipping | int | Buy Box 运费(cents)。 |
buyBoxSavingBasis | int | Buy Box 划线价(参考价,cents);undefined = 不可用。 |
buyBoxSavingBasisType | string | 划线价类型:LIST_PRICE 或 WAS_PRICE。 |
buyBoxSavingPercentage | int | Amazon 标注的折扣百分比;undefined = 不可用。 |
buyBoxIsUnqualified | boolean | 当前没有任何卖家赢得 Buy Box(offer 质量都不达标)。 |
buyBoxIsShippable | boolean | Buy Box 是否标记为可发货。 |
buyBoxIsPreorder | boolean | Buy Box 是否为预购。 |
buyBoxIsBackorder | boolean | Buy Box 是否处于缺货补单状态。 |
buyBoxIsFBA | boolean | Buy Box 是否由 Amazon 配送(FBA)。 |
buyBoxIsAmazon | boolean | Buy Box 卖家是否就是 Amazon 自营。 |
buyBoxIsMAP | boolean | Buy Box 价格是否因 MAP(最低广告价)限制而被隐藏。 |
buyBoxMinOrderQuantity | int | Buy Box 起订量;-1 = 不可用,0 = 无下限。 |
buyBoxMaxOrderQuantity | int | Buy Box 单次最大下单量;-1 = 不可用,0 = 无上限。 |
buyBoxAvailabilityMessage | string | 可售提示,例如 "In Stock.",null = 不可用。⚠️ 2026-04-20 起该字段将变更为枚举三值: IN_STOCK / BACKORDER_NO_ETA / BACKORDER_WITH_ETA。 |
buyBoxShippingTime | int[] | Buy Box 发货预估区间 [最小小时, 最大小时],例如 [24, 48] = 1–2 天。 |
buyBoxShippingCountry | string | 卖家默认发货国(如 "US")。Amazon 自营时为 null。 |
buyBoxIsPrimeExclusive | boolean | 是否 Prime 专享。 |
buyBoxIsPrimeEligible | boolean | 是否 Prime 可享。 |
buyBoxIsPrimePantry | boolean | 是否 Prime Pantry 商品。 |
buyBoxStats | object | 区间内的 Buy Box 统计:键 = sellerId,值 = 该卖家的 { avgNewOfferCount, avgPrice, isFBA, lastSeen, percentageWon }。用法:根据 percentageWon 判断 Buy Box 是否被某个卖家长期独占。 |
buyBoxUsedStats | object | 同上,但针对 Used Buy Box。结构相同。 |
buyBoxUsedPrice | int | Used Buy Box 价(cents)。 |
buyBoxUsedShipping | int | Used Buy Box 运费(cents)。 |
buyBoxUsedSellerId | string | Used Buy Box 卖家 ID。 |
buyBoxUsedIsFBA | boolean | Used Buy Box 是否 FBA。 |
buyBoxUsedCondition | int | Used Buy Box 子状态:2=Like New,3=Very Good,4=Good,5=Acceptable。 |
字段(要求 offers 参数)
| 字段 | 类型 | 说明 |
|---|---|---|
retrievedOfferCount | int | 本次请求实际抓回的 offer 数量(不一定等于 totalOfferCount)。 |
sellerIdsLowestFBA | string[] | 当前最低价 FBA New offer 的卖家 ID 列表(同价多人时多个 ID)。 |
sellerIdsLowestFBM | string[] | 当前最低价 FBM New offer 的卖家 ID 列表。 |
offerCountFBA | int | FBA New offer 数量;-2 = 不可用。 |
offerCountFBM | int | FBM New offer 数量;-2 = 不可用。 |
字段(要求 stock 参数)
| 字段 | 类型 | 说明 |
|---|---|---|
stockAmazon | int | Amazon 自营 offer 库存数;undefined = 未拉取。 |
stockBuyBox | int | Buy Box 卖家库存数;undefined = 未拉取。 |
实战提示
- 取当前价用
stats.current[type],不要自己解析csv——它已经处理好「最近一条 = 价格变化」「Lightning Deal 末尾 -1」等边角。 - 判断「正在跌价」:
current[1] < atIntervalStart[1]且outOfStockPercentageInInterval[1] < 30(不是缺货引起)。 - 筛选「常压力下还能 Win Buy Box」:
buyBoxIsAmazon = false且buyBoxStats[sellerId].percentageWon >= 80。 - 估算销量:
salesRankDrops30 / 30 ≈ 日销次数(仅是粗略代理,对低排名品偏差较大)。
相关接口
- 触发返回:
GET | POST /api/keepa/product(stats参数) - 上层对象:Product Object