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

# Search with Filters

Pass a `filters` object to `products.search`. Every field is optional — combine as many as you need.

| Filter | SDK page |
| - | - |
| Price | [Price filter](/sdk/filters/price) |
| Color | [Color filter](/sdk/filters/color) |
| Dimensions | [Dimension filter](/sdk/filters/dimensions) |
| Brand | [Brand filter](/sdk/filters/brand) |
| Website | [Website filter](/sdk/filters/website) |
| Attributes | [Attribute filter](/sdk/filters/attributes) |

## Combined example

<CodeGroup>
  ```typescript TypeScript theme={"theme":{"light":"github-light","dark":"github-dark"}}
  import Channel3 from "@channel3/sdk";

  const client = new Channel3();

  async function main() {
    const response = await client.products.search({
      query: "running shoes",
      filters: {
        brand_ids: ["brand_id_1", "brand_id_2"],
        gender: "unisex",
        price: { min_price: 50.0, max_price: 150.0 },
        availability: ["InStock", "LimitedAvailability"],
      },
      limit: 20,
    });
    console.log(response.products[0]?.offers[0]?.price);
  }

  main();
  ```

  ```python Python theme={"theme":{"light":"github-light","dark":"github-dark"}}
  from channel3_sdk import Channel3

  client = Channel3()

  def main():
      response = client.products.search(
          query="running shoes",
          filters={
              "availability": ["InStock"],
              "price": {"min_price": 10, "max_price": 50},
              "gender": "male",
          },
          limit=20,
      )
      print(response.products[0].offers[0].price)

  if __name__ == "__main__":
      main()
  ```
</CodeGroup>

Price and buy links are on **offers** — see [Offer](/guides/offer).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.