Skip to main content
Channel3 aggregates product offers from thousands of retailers. The websites API lets you browse the full list of supported retailers, and the website_ids filter on POST /v1/search lets you scope results to specific stores.
What’s the difference between brands and websites?A brand makes or labels a product (Nike, Dyson). A website is the online store selling it (nike.com, bestbuy.com). Use brand_ids to filter by brand and website_ids to filter by retailer — they’re independent. One brand’s products often appear on many websites. See the Brand and Website models.

Browse supported retailers

Use GET /v0/websites to retrieve the list of retailers available in Channel3.
import Channel3 from "@channel3/sdk";

const client = new Channel3();

const { websites } = await client.websites.list();

websites.forEach((site) => {
  console.log(site.id, site.name, site.domain);
});
from channel3_sdk import Channel3

client = Channel3()

result = client.websites.list()
for site in result.websites:
    print(site.id, site.name, site.domain)
curl "https://api.trychannel3.com/v0/websites" \
  -H "x-api-key: $CHANNEL3_API_KEY"

Filter search results by retailer

Pass one or more website IDs to the website_ids filter to restrict results to those retailers.
const results = await client.products.search({
  query: "coffee maker",
  filters: {
    website_ids: ["walmart", "target"],
  },
});
results = client.products.search(
    query="coffee maker",
    filters={"website_ids": ["walmart", "target"]},
)
curl -X POST https://api.trychannel3.com/v1/search \
  -H "x-api-key: $CHANNEL3_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "coffee maker",
    "filters": { "website_ids": ["walmart", "target"] }
  }'

Combining with other filters

Retailer filters compose with all other search filters.
TypeScript
const results = await client.products.search({
  query: "desk lamp",
  filters: {
    website_ids: ["wayfair", "west-elm"],
    price: { max_price: 75 },
    availability: ["InStock"],
  },
});