Skip to main content
The price filter on POST /v1/search accepts a min_price and/or max_price in the currency of the request (default: USD). Either bound is optional — set only one to create an open-ended range.
A product passes the price filter if any of its offers falls within the range — not every offer has to match. Search results still return all offers for each product, so you may see prices above max_price or below min_price alongside an offer that qualified. To show only in-range prices in your UI, filter product.offers client-side.

Basic price range

import Channel3 from "@channel3/sdk";

const client = new Channel3();

const results = await client.products.search({
  query: "running shoes",
  filters: {
    price: { min_price: 50, max_price: 150 },
  },
});

Under a price ceiling

Set only max_price to find products below a given price.
const results = await client.products.search({
  query: "office chair",
  filters: {
    price: { max_price: 200 },
  },
});

Currency

Pass a currency parameter alongside the price filter to search in a non-USD currency. Prices in the response will be returned in the same currency.
const results = await client.products.search({
  query: "leather sofa",
  currency: "GBP",
  filters: {
    price: { max_price: 800 },
  },
});

Combining with other filters

Price filters compose freely with all other filters.
TypeScript
const results = await client.products.search({
  query: "sneakers",
  filters: {
    price:        { min_price: 80, max_price: 200 },
    brand_ids:    ["brand_nike"],
    availability: ["InStock"],
  },
});