Structure each product record as a JSON object; keep attributes to what will be searched or displayed. Push records in batches using POST /1/indexes/{indexName}/batch (up to 1000 objects per batch call).
In index settings, set searchableAttributes in priority order (e.g., title, brand, category) and add attributes you need to filter or facet on to attributesForFaceting (prefix with 'filterOnly' for attributes that should only filter, not count).
Configure customRanking with business-priority fields (e.g., desc(popularity), desc(in_stock)) so relevance ties are broken by business signals.
At query time, pass facets: ['brand', 'category', 'price_range'] to receive counts alongside results, and pass filters (using Algolia filter syntax, e.g., 'in_stock:true AND price < 100') to narrow results.
Implement InstantSearch.js or a React/Vue InstantSearch widget library on the frontend to wire up the refinementList, rangeInput, and hits widgets to the index with minimal boilerplate.
Known gotchas
The free plan has limits on record count and operations per month — validate your catalog size against your plan before ingesting.
attributesForFaceting must be declared before facet counts can be returned; adding the attribute after ingestion requires a settings update but not a full reindex.
Algolia search is case-insensitive by default, but filtering is exact-match; normalise attribute values (e.g., lowercase brand names) consistently at index time.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp