用 API 查亚马逊价格历史:售价、划线价、Buy Box 和 BSR 放在同一条时间线上

2026/10/12

商品页面显示的是今天的价格。它不会显示上周的价格低十美元,也不会显示旁边那个「原价」是在折扣开始前不久才涨上去的。

价格历史,是「看到竞品的价格」和「看懂竞品的定价」之间的差别。 一次 API 请求就能返回它,同时返回判断一次调价有没有效果所需要的排名和评分历史。

请求

商品历史接口接收一个 ASIN 和一个以毫秒表示的时间窗口:

curl --request POST \
  --url https://ecommercedataapi.com/v1/amazon/asin/history \
  --header "Content-Type: application/json" \
  --header "X-API-Key: ${ECOMMERCE_DATA_API_KEY}" \
  --data '{
    "marketplace": "US",
    "asin": "B0D5B6RLYY",
    "startTimestamp": 1757635200000,
    "endTimestamp": 1760227200000,
    "dailyLatest": true
  }'
  • startTimestamp 和 endTimestamp 限定窗口。上面的值是 2025 年 9 月 12 日和 10 月 12 日。
  • dailyLatest 表示每天只要最新的一次观测,而不是每一次观测。

返回什么

返回是一个对象,包含商品信息和一组时间序列。每条序列是由 { "timePoint": ..., "value": ... } 组成的数组:

序列跟踪的是什么
price售价
priceList售价旁边被划掉的划线价
buyBoxBuy Box 价格
buyBoxSellerIdHistory哪个卖家占有 Buy Box
dealPrice秒杀价,有秒杀活动时才有
bsr大类目下的 BSR 排名
subSalesRank各个小类目下的排名
reviews、rating评论数和星级
sellers这个商品下的卖家数量
商品历史接口一个 ASIN 在指定时间窗口内的售价、划线价、Buy Box、排名、评分和卖家数历史

一个真实商品的一个月

2026 年 10 月 12 日,我们对美国站一个 7 升狗用饮水机发了上面的请求,取的是一年前的 30 天窗口。每条序列返回 31 个点。按日期排序后:

日期(2025 年)售价划线价宠物用品大类 BSR小类目排名
9 月 12–15 日$49.99$59.992,402–2,4775–6
9 月 16–21 日$49.99$69.992,295–2,5654–5
9 月 22–25 日$44.99$69.992,152–2,2914–5
9 月 26 日–10 月 5 日$39.99$69.99从 2,194 降到 1,611从 4 升到 2
10 月 6–11 日$49.99$69.991,370–1,7802–3

这里能看出四件商品页面上永远看不到的事。

价格是分步走的。 $49.99,然后 $44.99 维持四天,再 $39.99 维持十天,最后回到 $49.99。这是一次有计划的促销,不是永久降价。如果有竞品把价格永久跟到 $39.99,两周之后它压着的就是一个已经不存在的价格。

划线价先涨了。 划线价在 9 月 16 日从 $59.99 涨到 $69.99,比售价降到 $39.99 早了十天。买家看到的折扣幅度是按更高的那个数算的。数据显示的是先后顺序,不显示原因。

排名在折扣期间改善,之后保持住了。 原价期间 BSR 在大约 2,300 到 2,570 之间;$39.99 期间一路降到 1,611;价格涨回去之后的六天里,仍然在 1,370 到 1,780 之间。在小类目里,这个商品从第五、六名升到了第二、三名。

卖家没有变过。 buyBoxSellerIdHistory 全程显示同一个卖家 ID,sellers 一直是 1。没有别人在抢 Buy Box,所以这些调价是品牌自己的决定。

对第三点要谨慎: 降价期间排名变好符合预期,但一个商品一个月的数据不能证明因果。BSR 数字变小意味着相对类目卖得更多,而一个月里还有别的东西在变。

代码里要处理的四件事

1. 序列已按时间排好。 每条数组在到达你之前都已按 timePoint 排序(上游本身返回的是乱序)。如果你要拼接多个窗口,再排一次。

2. 把 -1 当作缺失。 dealPrice 每天都是 -1,因为没有秒杀活动。buyBox 有两天是 -1,reviews 和 rating 有一天是 -1。把它们过滤掉,不要画成「负一美元」的价格。

3. 按日期对齐序列,不要按时间戳。 这次返回里不同序列的观测共用时间戳,但不要依赖这一点。对齐之前先把每个 timePoint 归到日期。

4. 评论数要小心读。 这个窗口里评论数从 3,109 涨到 3,366,其中有一天跳涨了大约 200,随后又小幅回落。变体家族的评论数是合并的,家族发生变动就会表现为跳变。那不是一天新增 200 条评论。合并的规则见父 ASIN 和子 ASIN 的区别。

用来做什么

跟竞品价格之前,先确认那是它的常规价格,还是下周就结束的促销。

大促之前,把主要竞品去年同期的窗口拉出来。它们当时怎么做,是判断这次会怎么做的最好依据。上面的例子正是这样:一个一年前的窗口。

自己的排名变动时,看看同一段日子里有没有竞品调价。

判断一个折扣时,把售价和 priceList 放在一段时间里比,不要只看某一天。

每天存下当日价格的定时任务,和这个接口是两种不同的工具。前者以及两者各自适用的场合,见竞品价格和优惠券监控。一个价格在类目里处于什么位置,见读懂类目的价格带分布。

价格历史不能告诉你什么

价格为什么变。 你看到的是先后顺序,看不到背后的考虑和成本。

买家实际付了多少。 优惠券和标价是分开的。优惠券趋势接口返回优惠券数据。

卖了多少件。 BSR 是排名。把排名换算成销量是估算,见亚马逊销量数据能拿到什么、拿不到什么。

中间的每一个价格。 用 dailyLatest 时每天只有一次观测。一天之内调了又调回去的价格可能不会出现。

常见问题

历史能查到多久以前? 上面的请求完整返回了一年前的一个窗口。覆盖范围因商品而异,请用你关心的 ASIN 测一下。

这是亚马逊的官方数据吗? 不是。亚马逊不提供公开的价格历史 API。这些是对公开商品页面长期采集到的观测。

一次调用能返回多个商品吗? 不能。每次调用一个 ASIN,每次成功调用消耗一个计费单位。

能查竞品商品的历史吗? 可以。这个接口接受支持站点内的任意 ASIN。

Ecommerce Data API