Back to demo

How It Works

Find products across the web, with prices, images, and links to the original listings.

Why Exa

Prices and product images change across retailer pages. Exa searches those pages directly and returns the price text, image candidates, and source URL together, so each recommendation can be checked against its listing.

The Pipeline

Overview

The browser calls /shopping-demo/api/search-stream and receives Server-Sent Events. Specific-product queries take one direct search path; broad or trend queries first discover product names and then fan out into targeted product searches.

Steps

1

Search specific products with inline contents

The direct path expands the country hint and sends one POST /search with type auto, category product, and numResults 20. The same request asks for five rich image links, one raw image link, structured price and currency, and up to 4,000 characters of price-focused highlights per result.

/search

2

Discover products for broad queries

The discovery path first searches with type auto, numResults 10, no product category, and full page text. A language model extracts up to five concrete product names, and each name gets a targeted product search with numResults 3 and the same inline extras, summary, and highlights.

/search

3

Validate images, prices, and result quality

The app removes marketplace pages, prefers prices parsed from raw highlights over the summary fallback, probes image URLs, asks a language model to select the product image from surviving candidates, deduplicates results, and returns at most 12 ranked cards.

4

Stream progress and products

Planning, sources, extracted product names, step completion, and final products are emitted incrementally over Server-Sent Events so the interface shows whether the query is taking the direct or discovery path.

Endnote

Each product search requests price, highlights, and image metadata directly. The live flow does not use the legacy product-filter flag or make a follow-up /contents request.