Skip to main content

Overview

Use product discovery to power search bars, product detail pages, and catalog browsers across any merchant on the internet. Both products.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

1

Kick off a product search

Call products.search with a text query and optional filters. Returns immediately with a refId.
2

Poll for results

Use products.pollSearch to check status until it’s "complete" or "failed". See Polling for the reusable helper and strategies.
3

Read the results


Fetch product details

If you need more granular product information, such as available options and pricing, call products.details with the link from search for the full enriched payload.
1

Request product details

2

Poll for results

Use products.pollDetails to check status. See Polling for the reusable helper.
3

Read the enriched product

Henry caches product details internally. If details for a link are already fresh, pollDetails will return "complete" on the very first call.

Search by image instead of text. Pass a URL, data URL, or base64 payload to find visually similar products.
You can also pass a base64-encoded image:

Sync mode

All async operations support mode: "sync", which waits up to 30 seconds for the operation to complete before returning. This can simplify your code for quick lookups by avoiding polling entirely.
If the operation takes longer than 30 seconds, sync mode returns with a non-terminal status and you’ll need to poll normally. For operations that may take longer (e.g. large searches), use mode: "async" with Polling.

Use type: 'merchant' to search within a specific merchant’s catalog. Pass the merchant name, host, or any URL from that merchant.
Merchant search accepts a case-insensitive name (e.g. "Nike"), a host (e.g. "nike.com"), or any URL from the merchant. When query is omitted, the merchant’s catalog browse is returned.

Search parameters reference

Top-level parameters

Global search filters (type: 'global')

Global search results are ordered by merchant checkout coverage: products from supported merchants rank first, then testing, then unsupported (the search engine’s order is preserved within each tier). Passing sortBy disables this ranking - an explicit price sort is kept as-is. To exclude non-supported merchants entirely, set filters.supportedOnly: true.

Merchant search filters (type: 'merchant')


Error handling


Next steps

Universal Cart

Use the product link to add items to a cart

Merchants

Browse supported merchants beforehand