Commerce CensusContactRequest access

Guide: price history

History looks simple and has one subtlety that changes every number computed from it: prices are step functions, not samples.

The series is a change log

An unchanged reading writes nothing. So three rows over ninety days does not mean we looked three times — it means the price changed twice. This is why a naive average over rows is wrong.

JSON
{ "series": [
   { "observed_at": "2026-06-09T13:21:15Z", "price_minor": 39800 },
   { "observed_at": "2026-08-21T02:10:44Z", "price_minor": 31999 },
   { "observed_at": "2026-09-06T14:21:59Z", "price_minor": 19800 } ] }

// $398.00 held for 73 days. $319.99 held for 16. $198.00 is 1 day old.

Time-weight anything you compute

Each observation holds until the next one. Weight by duration, not by row, or one clearance weekend outweighs a quarter of stability. The `context` endpoint does this for you; if you compute your own statistics from the raw series, you must do it yourself.

Per seller, never pooled

Compare a seller's price against that seller's own history. Pooling every seller's series makes the cheapest one look merely average, because the pool contains the expensive sellers' prices too.

History cannot be backfilled

It accumulates forward only. Coverage depth per seller is reported in the seller directory — if you need depth on a seller we watch shallowly, tell us and we will start now, which is the only thing anyone can do.