{
  "object": "doc",
  "title": "Which fields does a Cartroute response contain?",
  "description": "Field-by-field reference for products, offers, coupons and price insights.",
  "section": "Concepts",
  "url": "https://cart-route.com/docs/objects",
  "updated": "2026-09-23",
  "prev": "https://cart-route.com/docs/api/accounts",
  "next": "https://cart-route.com/docs/errors",
  "text": "Every result is a product with a `price_summary`, a `price_insight` and an array of offers; each offer carries its own coupons. Money fields end in `_usd` and are plain numbers. The field to rank on is `offer.effective_price_usd`.\n\n## What is in a product?\n\n| Field | Type | Description |\n\n| `id` | string | Stable id, `prd_…`. |\n\n| `slug`, `url` | string | Readable identifier and the product's page on cart-route.com. |\n\n| `title`, `brand`, `category`, `subcategory` | string | Descriptive fields. |\n\n| `identifiers` | object | `gtin`, `mpn`, `model`. Offers are matched across retailers on these, never on title. |\n\n| `rating`, `review_count` | number | Aggregate rating out of 5. |\n\n| `summary` | string | An editorial note on buying this product, often about how its price behaves. |\n\n| `specs` | object | Display-ready specifications. Only on [get product](https://cart-route.com/docs/api/products). |\n\n| `price_summary` | object | See [below](#price-summary). |\n\n| `price_insight` | object | See [below](#price-insight). |\n\n| `offers` | array | Sorted by effective price, cheapest first. |\n\n## What does price_summary tell me?\n\n| Field | Description |\n\n| `best_offer_id`, `best_retailer` | The in-stock offer with the lowest effective price (falls back to any offer if none is in stock). |\n\n| `best_effective_price_usd` | That offer's effective price. |\n\n| `lowest_price_usd`, `highest_price_usd`, `spread_usd` | The range of listed prices across offers. |\n\n| `offers_count`, `in_stock_count`, `coupons_count` | Counts after your filters are applied. |\n\n## What does price_insight tell me?\n\n| Field | Description |\n\n| `verdict` | `good_time_to_buy` (within 1% of the 90-day low), `above_recent_average` (more than 5% above the 30-day average), `typical_price`, or `insufficient_history`. |\n\n| `reason` | One sentence with the numbers behind the verdict, suitable to quote. |\n\n| `low_90d_usd`, `high_90d_usd`, `avg_30d_usd` | Computed from the daily lowest price across retailers. |\n\n| `trend_30d_pct`, `is_at_90d_low`, `observations` | Direction, low flag, and number of daily data points. |\n\n## What is in an offer?\n\n| Field | Description |\n\n| `offer_id`, `sku` | Offer id and the retailer's SKU. |\n\n| `retailer` | `id`, `name`, `domain`, `membership_required`, `returns_window_days`. |\n\n| `condition` | `new` or `open_box`. Open-box offers are separate offers, never mixed with new. |\n\n| `price_usd` | Listed price. |\n\n| `list_price_usd`, `discount_from_list_pct` | Manufacturer list price and the discount from it. |\n\n| `shipping_usd` | Standard shipping; 0 above the retailer's free-shipping threshold. |\n\n| `landed_price_usd` | Price plus shipping, before tax. |\n\n| `best_coupon` | The applicable coupon with the largest saving that needs no special eligibility, or `null`. |\n\n| `effective_price_usd` | Landed price minus `best_coupon.estimated_savings_usd`. Rank on this. |\n\n| `coupons` | Every applicable coupon, including ones needing eligibility. See [coupons](https://cart-route.com/docs/api/coupons). |\n\n| `availability` | `in_stock`, `stock_level` (`in_stock`, `low_stock`, `out_of_stock`, `preorder`), `delivery_days_min`, `delivery_days_max` (null when pickup-only), `store_pickup`. |\n\n| `retailer_url` | Direct link to the retailer. |\n\n| `buy_url` | Tracked redirect to the same place, via cart-route.com. |\n\n| `last_checked_at`, `freshness_seconds` | When the price was last observed and how long ago. |\n\n## How exactly is effective price calculated?\n\n- Start from `price_usd`.\n\n- Add `shipping_usd` to get `landed_price_usd`. Tax is excluded because it depends on the delivery address.\n\n- From the coupons that apply to this product and retailer, meet their minimum spend and need no eligibility, take the single largest saving. Coupons are never stacked. A `percent` coupon saves that share of the price; `amount` saves a fixed sum; `shipping` saves the shipping charge; `gift_card` saves nothing up front.\n\n- Subtract it to get `effective_price_usd`.\n\nThe full method, with its limits, is in [how Cartroute compares prices](https://cart-route.com/guides/how-cartroute-compares-prices).\n\n## What is in every response envelope?\n\n`object` (the response type), `api_version`, `data_source`, `request_id` (quote it to support), `generated_at`, and on metered calls `credits`. A replayed idempotent call adds `idempotent_replay: true`."
}