Loading...

Use it in your app

catalog is now an ordinary searchable list. You query it like any other — the feed keeping it fresh is invisible from here.

With the client library

@searchstack/public-api is a typed client for the whole search API:

npm install @searchstack/public-api
import { SearchStackClient, fieldText, fieldNumber } from '@searchstack/public-api'

const client = new SearchStackClient({
  apiKey: 'YOUR_SEARCH_KEY',
  baseUrl: 'https://api.searchstack.dev',
})

const result = await client.Search.searchList('Demo', 'catalog', 1, {
  query: 'warm jacket for winter',
  filter: "brand eq 'Kestrel' and in_stock eq true",
  size: 10,
})

// every method returns a Response envelope instead of throwing
if (result.isSuccess) {
  for (const hit of result.toSuccess().results) {
    // a facet always comes back as an array — these readers hand you the values,
    // whether the field holds one or several
    render(hit.name, fieldText(hit, 'description'), fieldNumber(hit, 'price'))
  }
}

Because the manifest marked description as vectorised, that query matches by meaning — “warm jacket for winter” finds the down jacket even though those words aren't in its text — and the brand/in_stock filter narrows it in the same call.

Or plain HTTPS

The client is a convenience over ordinary requests, so any language works:

POST https://api.searchstack.dev/search/Demo/catalog/1
X-API-Key: {your key}
Content-Type: application/json

{ "query": "warm jacket for winter", "filter": "brand eq 'Kestrel' and in_stock eq true", "size": 10 }

The same list is reachable over MCP, so an agent can search your synced data from the one key-scoped setup.

Go deeper: The search API — queries, filters and paging in the reference.

Top