Manticore Search
Live Manticore Search demo

Faceted search that adapts to
every filter.

Keep filters useful after every click. One facet query can preserve alternatives, expose impossible choices, and control exactly which filters each facet inherits.

80realistic products
4live facets
1live request
JSON request
{
  "facet_filter_mode": "max",
  "exclude_filters": ["color"],
  "zeroes": true
}
Coral6
Ocean4
Citrus0
Interactive storefront

Filter products without dead ends

Use the catalog like a shopper. Switch modes to see how Manticore changes facet behavior behind the same familiar interface.

Try a live example

Each example applies the stated filters and settings to the catalog. Watch the product count and facet choices update below.

MAX

What filters should each facet count use?
One live requestInspect the JSON, alternative SQL, and native buckets after the catalog

Live catalog

Products

Loading…
Browser/searchManticoreproducts + 4 facets
Single live request

One request → products + 4 facets

Every change sends one bounded request to Manticore Search. It returns the product result and native Brand, Category, Color, and Size buckets—no client-side count building.

1 request4 aggregations
Generated JSON requestSent by Manticore’s official JavaScript client
Alternative SQL requestThe same main query and four FACET clauses
Raw facet responseNative bucket count and status returned by the same request
Browser integration

Facet logic, directly in the frontend.

Use Manticore’s official JavaScript client to send one JSON request and render the buckets it returns. These are annotated production patterns: they show the essential Manticore calls, while endpoint policy, credentials, and filter-building remain specific to your application. No custom application backend is required to translate facets.

  • One requestproducts and aggregations arrive together
  • Native statesrender selected, available, and unavailable
  • Read-only accessgive browser code only the table and permissions it needs

For a public site, expose a read-only HTTP endpoint over HTTPS. This demo uses a small same-origin gateway for that boundary; it does not contain application-side facet logic.

Create the client onceAnnotated production pattern · see live demo source
import Manticoresearch from 'manticoresearch';

const client = new Manticoresearch.ApiClient(
  'https://search.example.com'
);
client.authentications.basicAuth.username = 'catalog_readonly';
client.authentications.basicAuth.password = 'public-read-only-password';

const search = new Manticoresearch.SearchApi(client);

Replace the example endpoint and read-only credentials with your own deployment values. The live demo source uses location.origin, so its static page and read-only search endpoint share one origin.

Ready to use the pattern?Build this with Manticore Search.
Open the sourceRead the docsTalk to us