Skip to main content

Search

Search Products

GET /ajax/search/products

Parameters:

ParameterTypeDescription
qstringSearch query
collectionIdstringFilter by collection
sortstringSort order
filters[key][]stringFilter by option value (can send multiple)
filters[price][min]numberMinimum price
filters[price][max]numberMaximum price
filters[rating][min]numberMinimum rating (1-5)

Sort Options:

  • rating-asc / rating-desc
  • price-asc / price-desc
  • created-asc / created-desc

Filters:

Filters use bracket notation in the query string. The key is the filter name (e.g. gender, color, size), and you can send multiple values for the same filter.

GET /ajax/search/products?q=dress&filters[gender][]=women&filters[gender][]=men&filters[price][min]=50&filters[price][max]=500

Example:

GET /ajax/search/products?q=House&collectionId=6793f5bea1f27ed3027ec202&sort=rating-asc

Search Suggestions

GET /ajax/search/suggest

Parameters:

ParameterTypeDescription
qstringSearch query
resources[type]stringResource types (comma-separated)
resources[limit]numberResults limit

Resource Types: product, collection

Example:

GET /ajax/search/suggest?q=House&resources[type]=product,collection&resources[limit]=5

JavaScript Example

async function searchProducts(query, filters = {}) {
const params = new URLSearchParams({ q: query });

// Add filters: filters[key][] = value
if (filters.gender) {
filters.gender.forEach(v => params.append('filters[gender][]', v));
}

// Add price range
if (filters.priceMin) params.set('filters[price][min]', filters.priceMin);
if (filters.priceMax) params.set('filters[price][max]', filters.priceMax);

const res = await fetch(`/ajax/search/products?${params}`);
return res.json();
}

// Example usage
searchProducts('dress', {
gender: ['women', 'men'],
priceMin: 50,
priceMax: 500
});

async function getSuggestions(query, limit = 5) {
const params = new URLSearchParams({
q: query,
'resources[type]': 'product,collection',
'resources[limit]': limit
});
const res = await fetch(`/ajax/search/suggest?${params}`);
return res.json();
}