Get price history for a product

Last updated · Changelog · OpenAPI spec · Markdown

Cost: 3 credits per product that has offers when requesting all retailers, 2 when requesting a single retailer. Additionally, there is a cost of 1 credit per day of historical data requested.

The per-day component is charged once for the whole request, not once per product. A request for 1 product over a 90-day window costs 1 × 3 + 90 = 93 credits; the same window for 10 products costs 10 × 3 + 90 = 120 credits, not 10 × 93. Every other row in the cost table above scales per product, so this one is called out explicitly.

Both components are only charged when we actually find offers for the request. If a request returns no offers at all, it costs 0 credits — including the per-day component.

Historical data can be requested by adding start and end parameters to the request. These should be formatted as YYYY-MM-DD. The window may span at most 366 days; request longer histories in successive calls.

GET /products/offers/history?ids=611247373064&start=2022-11-20&end=2022-11-27

Please note you'll be charged 1 credit for each day of historical data you request, on requests that return offers — once per request, however many ids it carries.

eBay listings do not carry history. A fresh eBay listing can still appear in the offers array, but its history array is always empty. eBay is a used/marketplace/reseller channel whose price series is not comparable to first-party retail, and ShopSavvy's own price chart has always excluded it for the same reason.

History points are quality-filtered. You receive the same series ShopSavvy's own price chart renders, not raw archived rows. A point is returned only if it came from a verified retailer or from a listing our product-match validation confirmed is this exact product, only if it carries a real price in that listing's own currency, and only if it survives the same per-retailer outlier band the chart applies. This exists because scraped-feed noise is real: on a $200-260 product we have measured archived points as low as $1.49 and as high as $548, all of which would wreck a naive "lowest price ever" or trend calculation. Well-covered products are unaffected; products with noisy long-tail sources return fewer, cleaner points.

The response uses the same envelope as the offers endpoint: data is an array with one entry per product you requested (products that could not be found are omitted). Each entry carries the same product fields as GET /products, plus an offers array with the same offer fields as GET /products/offers. Each offer additionally includes a history field: an array of historical price points for that specific offer, newest first. An offer with no qualifying points (for example any eBay listing) has an empty history array. Each point will include these fields:

FieldDescription
timestampAn ISO 8601 formatted date and time representing when the change was seen by ShopSavvy.
priceThe price of the offer at the time of the change. This will always be a number.
currencyThe ISO 4217 currency code the price is denominated in (e.g. "USD"). null on the rare archived point that carries no recorded currency — never assume a missing value means US dollars.
availabilityThe availability of the offer at the time of the change. This will only be present if the value is confirmed and known. It will be missing if availability is unknown. Will be either "in" or "out".

As with the other offer endpoints, an offer's own availability is omitted when unknown and seller is null when the listing is not a marketplace listing.

Example Response

{
  "success": true,
  "data": [
    {
      "title": "Keurig K-Mini Single Serve Coffee Maker, Black",
      "category": "Grocery & Gourmet Food > Beverages > Coffee, Tea & Cocoa > Coffee > Single-Serve Capsules & Pods",
      "brand": "Keurig",
      "color": "Black",
      "shopsavvy": "products/3ONn300xybP3y66ibqc1",
      "barcode": "611247373064",
      "amazon": "B07G14HTBZ",
      "model": "K-MINI",
      "mpn": "5000200237",
      "images": [
        "https://x.shopsavvy.com/https://images-na.ssl-images-amazon.com/images/I/31jy5fSzyRL.jpg"
      ],
      "offers": [
        {
          "id": "0IUouCFtZEhxeOablTPl",
          "availability": "in",
          "condition": "new",
          "retailer": "Amazon",
          "currency": "USD",
          "price": 74.96,
          "seller": "ACME Deals",
          "URL": "https://www.amazon.com/dp/B07G14HTBZ?m=A1GKQADQC2VI6E",
          "timestamp": "2022-11-27T22:36:33.236Z",
          "history": [
            {
              "availability": "in",
              "price": 74.96,
              "currency": "USD",
              "timestamp": "2022-11-27T22:36:33.236Z"
            },
            {
              "availability": "out",
              "price": 70.99,
              "currency": "USD",
              "timestamp": "2022-11-24T10:00:00.000Z"
            },
            {
              "price": 79.99,
              "currency": "USD",
              "timestamp": "2022-11-21T08:15:00.000Z"
            }
          ]
        },
        {
          "id": "Z9kQ2mBestBuyOffer01",
          "condition": "new",
          "retailer": "Best Buy",
          "currency": "USD",
          "price": 59.99,
          "seller": null,
          "URL": "https://www.bestbuy.com/site/keurig-k-mini-single-serve-k-cup-pod-coffee-maker-matte-black/6358476.p?skuId=6358476",
          "timestamp": "2022-11-26T11:47:00.226Z",
          "history": [
            {
              "availability": "in",
              "price": 59.99,
              "currency": "USD",
              "timestamp": "2022-11-26T11:47:00.226Z"
            }
          ]
        }
      ]
    }
  ],
  "meta": {
    "request_id": "abc-123",
    "credits_used": 11,
    "credits_remaining": 989,
    "rate_limit_remaining": 999
  }
}
Was this page helpful?