> ## Documentation Index
> Fetch the complete documentation index at: https://developer.valuechecker.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Replacement Product Suggestions

export const EndpointButton = ({title, href}) => <div className="button-container">
    <a className="button" href={href}>
      {title}
      <span className="arrow">➜</span>
    </a>
  </div>;

Using the `pid` provided in this request (the returned value of the
selected [Claimed Product](/before-getting-started/valuechecker-service-concepts#claimed-product-cp)
in the [Product Search](/api-reference/product-search)
step), ValueChecker will suggest similar products based on relevant
specifications, - the product that is selected during this step is
referred to as the Replacement Product. It’s worth noting that a
suggested Replacement Product could have the same `pid` as the
[Claimed Product](/before-getting-started/valuechecker-service-concepts#claimed-product-cp)
if the [Claimed Product](/before-getting-started/valuechecker-service-concepts#claimed-product-cp)
is still for sale and in many cases the Replacement Product will share a
very similar or identical product\_name with the
[Claimed Product](/before-getting-started/valuechecker-service-concepts#claimed-product-cp).

The response is a list of price groups, where each group is an array of
the prices found for one product, sorted first by Recommended Shop and
then Price.

### Grouped Prices

`grouped_prices` contains a list(s) of replacement product(s) full of
arrays of key value information pertaining to the shops where the
replacement product is available.\
This list is sorted by Recommended Shop, then Price.
ValueChecker has a default list of shops that are trustworthy
(recommended). The recommended shops list can be modified to your
specifics. Get in touch with your ValueChecker contact to make shop
settings changes.\
If your implementation requires only 1 replacement price, take the
`total_price` value from the first product of the first group in the list
for the lowest available price from a recommended shop.

**Example:**\
`grouped_prices.[0].[0].total_price`\
(0 and 0 being the first product (key) of the first group (row) in the
`grouped_prices` list)

```json response structure theme={null}
{
    "claimed_product": {
        ...,
    },
    "grouped_prices": [
        [
            {
                ...,
            },
            ...,
        ],
        [
            {
                ...,
            },
            ...,
        ],
        ...,
    ],
}
```

### Last Known Price

The `claimed_product` may contain an object called `price`. This
contains an additional nested key again called `price` (see [Response](/api-reference/default/prices)
sample below). This is not to be confused with replacement prices in the
following object `grouped_prices`. The Last Known Price is the most
recent valid price that ValueChecker has stored for the Claimed Product.
It can be used as historical data but should not be shown as the current
ValueChecker suggested replacement price.\
When available it will be included in the `claimed_product` object if no
current valid prices for the [Claimed Product](/before-getting-started/valuechecker-service-concepts#claimed-product-cp)
are found in the current market. It is also included in the
`grouped_prices` object as a `filtered_price` replacement if no other
current prices are available for any possible replacement.

We additionally return prices that have been [filtered out](/api-reference/replacement-product-suggestions#filtered-prices)
by us but can still be selected as a viable replacement product if the
user opts to do so.

### Filtered Prices

Filtered prices are defined by the boolean `filtered_price`.\
The default setting for parsing the prices results should always screen
out filtered prices. Price entries with `filtered_price = true` should
be hidden in your result set. These prices are included in the response
for special business cases and for your historical analysis as the
values may change often (for example: the "`in_stock`" status can change
often - thereby switching the filtered status).
The 4 cases where `filtered_price = true` (ValueChecker considers as a
filtered price but still returns the data in the response) are as
follows:

| Property             | Value   | Description                                                                                                                                            |
| -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `in_stock`           | `false` | The shop indicates the product as not in stock.                                                                                                        |
| `international`      | `true`  | The shop marked the offer as not locally available                                                                                                     |
| `is_refurbished`     | `true`  | The product is marked as refurbished                                                                                                                   |
| `shop`.`shop_status` | `-1`    | (in the shop array) <br /> \<0 the shop itself has been filtered out <br /> 0 the shop is whitelisted <br /> 1 the shop is recommended (ranked higher) |

### Deprecation warnings

* `product_pic_url` in `claimed_product` has been deprecated and will be removed in a future update.
  Please use `pic_url` instead.

<EndpointButton title="RP: Replacement Products Endpoint" href="/api-reference/default/prices" />
