Skip to main content

Method Signature

constructorio.browse.getBrowseFacetOptions(facetName, parameters?, networkParameters?)
Retrieves all available options for a specific facet (filter) in your catalog.

Parameters

facetName
string
required
The name of the facet to retrieve options for (e.g., ‘brand’, ‘color’, ‘size’).
parameters
object
Optional parameters to customize the request.
networkParameters
object
Network-specific parameters.

Response

Returns a Promise that resolves to a GetBrowseFacetOptionsResponse object.
response
object
The facet options response data.
result_id
string
Unique identifier for this request.

Examples

Get Brand Options

const brandOptions = await constructorio.browse.getBrowseFacetOptions('brand');

console.log('Available brands:', brandOptions.response.facets[0].options);

Get Color Options

const colorOptions = await constructorio.browse.getBrowseFacetOptions('color');

colorOptions.response.facets[0].options.forEach(color => {
  console.log(`${color.display_name}: ${color.count} products`);
});

For a Specific Section

const sizeOptions = await constructorio.browse.getBrowseFacetOptions('size', {
  section: 'Clothing'
});

Building a Filter Dropdown

async function loadBrandFilter() {
  const response = await constructorio.browse.getBrowseFacetOptions('brand');
  
  const brands = response.response.facets[0].options.map(option => ({
    value: option.value,
    label: option.display_name,
    productCount: option.count
  }));
  
  // Populate dropdown
  renderBrandDropdown(brands);
}

With Error Handling

try {
  const response = await constructorio.browse.getBrowseFacetOptions('category');
  
  if (response.response.facets.length > 0) {
    const categories = response.response.facets[0].options;
    console.log(`Found ${categories.length} categories`);
  }
} catch (error) {
  console.error('Failed to load category options:', error);
}

Custom Network Timeout

const priceRanges = await constructorio.browse.getBrowseFacetOptions(
  'price_range',
  {},
  { timeout: 3000 }
);

Use Cases

Dynamic Filter Population

Load facet options dynamically based on user interaction:
function onFacetExpand(facetName) {
  constructorio.browse.getBrowseFacetOptions(facetName)
    .then(response => {
      const options = response.response.facets[0].options;
      displayFacetOptions(facetName, options);
    });
}
Implement type-ahead search within facet options for facets with many values.

Category Tree Building

For hierarchical facets like categories, use the options to build navigation trees.

Error Handling

try {
  const response = await constructorio.browse.getBrowseFacetOptions('brand');
  console.log('Options loaded successfully');
} catch (error) {
  if (error.message.includes('facet not found')) {
    console.error('Facet does not exist:', error);
  } else {
    console.error('Error loading facet options:', error);
  }
}

Build docs developers (and LLMs) love