Overview
Use product discovery to power search bars, product detail pages, and catalog browsers across any merchant on the internet. Bothproducts.search and products.details are async jobs - they return a refId, and results arrive once the background work completes. See Polling or Webhooks for how to handle the async pattern.
Prerequisites
Search the catalog
Kick off a product search
Call
products.search with a text query and optional filters. Returns immediately with a refId.Poll for results
Use
products.pollSearch to check status until it’s "complete" or "failed". See Polling for the reusable helper and strategies.Fetch product details
If you need more granular product information, such as the availability of all variants, callproducts.details with the link from search for the full enriched payload.
Poll for results
Use
products.pollDetails to check status. See Polling for the reusable helper.Search filters reference
| Parameter | Type | Description |
|---|---|---|
query | string | Required. Full-text search term |
merchant | string | Merchant name or host to scope the search (e.g. "nike.com") |
limit | number | Results per page - 1 to 100, default 20 |
cursor | number | Pagination cursor from a previous response |
sortBy | "lowToHigh" | "highToLow" | Sort by price |
minPrice | number | Minimum price filter |
maxPrice | number | Maximum price filter |
country | string | ISO country code for regional results (e.g. "US", "JP") |
Error handling
| Error | Cause | Resolution |
|---|---|---|
401 Unauthorized | Invalid API key | Check HENRY_API_KEY |
400 Bad Request | Missing query or invalid filter values | Validate input before calling |
status: "failed" | Job error - check error field | Log and retry |
Next steps
Universal Cart
Use the product
link to add items to a cartMerchants
Browse supported merchants beforehand