Sandbox environment: prices, stock and coupons are synthetic test data. What this means

Price history: GET /api/v1/products/{id}/price-history

GET /api/v1/products/{id}/price-history returns the daily lowest price across all retailers and a daily series per retailer, for the last 7 to 180 days (default 90). Use it to decide whether today's price is a genuine low. Costs 1 credit.

GET https://cart-route.com/api/v1/products/{id}/price-history?days=90

Which parameters does it take?

NameTypeDefaultDescription
id (path)stringProduct id, slug, GTIN or MPN.
daysinteger 7–18090Window length, ending today.

What does the response look like?

{
  "object": "price_history",
  "data_source": "sandbox",
  "history": {
    "object": "price_history",
    "product_id": "prd_0dophw3",
    "title": "Sony WH-1000XM6 Wireless Noise Cancelling Headphones",
    "days": 30,
    "currency": "USD",
    "lowest_by_day": [
      {
        "date": "2026-08-25",
        "price_usd": 369.99
      },
      {
        "date": "2026-08-26",
        "price_usd": 364.99
      }
    ],
    "by_retailer": [
      {
        "retailer_id": "amazon",
        "retailer_name": "Amazon",
        "points": [
          {
            "date": "2026-08-25",
            "price_usd": 379.99
          }
        ]
      }
    ]
  },
  "credits": {
    "charged": 1,
    "remaining": 197
  }
}

Truncated: a 30-day response has 30 entries in lowest_by_day and in each retailer's points.

How should an agent read it?

Which errors can it return?

404 not_found for an unknown product and 422 validation_error for days outside 7–180 (neither is charged), plus 401, 402 and 429.