> ## 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.md) |
| Color | [Color filter](/sdk/filters/color.md) |
| Dimensions | [Dimension filter](/sdk/filters/dimensions.md) |
| Brand | [Brand filter](/sdk/filters/brand.md) |
| Website | [Website filter](/sdk/filters/website.md) |
| Attributes | [Attribute filter](/sdk/filters/attributes.md) |

## Combined example

```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()
```

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


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