Closed suites
Strong features, but ranking you can't look into, and a contract that is hard to get out of.
OrbSearch turns your catalog into fast search and navigation that knows what shoppers mean, follows your rules and explains every result.
Self-hosted · AGPL + MIT





8 of 5,098 · 6.0 ms · Release d48231f
For a catalog of 10,000 productsHow we measure
Takes your export as it is
Merchant Center XML
CSV
TSV
Excel
JSON
Gzip
03 · The problem
Strong features, but ranking you can't look into, and a contract that is hard to get out of.
Fast and open, but they can't tell a sofa from a sofa bed. Each team rebuilds the rest.
Meilisearch retrieves. OrbSearch understands the query, applies your rules and shows why.
04 · How it works
Up to 2 GB of Merchant Center XML, CSV, Excel or JSON, as your shop writes it.
Units, colors and sizes are read from the values. What isn't lands in the report.
Every setting is data in a release. Preview the draft, publish it, roll back in a click.
Prices and stock change in place, without a rebuild. Answers name their release.
Snapshot 2026-10-09Release 79f2487Live
05 · Shoppers
149 results
“graues sofa” finds the sofas, already filtered to grey.
10 results
“weiss” finds Weiß, but a typo in a part number finds no other.
394 results
Write “couch, sofa”, press Enter, and couch finds the sofas.
“160 x 230” becomes a size and “unter 200 €” a price range.
Categories, brands and values as they type: 20.6 ms at p95.
21 results without Color Yellow
When nothing matches, it drops its guesses and says which.
06 · Merchants







Kaldern Frederick Mid-Century Modern Tufted Velvet Sofa Couch, 77.5"W, Grey
Position 1 of 8
Pinned to position 1 by the rule “Velvet in autumn”. · until 30 Nov
“sofa” named Category Sofas
“grey” named Color Grey

Villa Marden Westcott Tufted Loveseat Sofa Couch, 60"W, Velvet
Position 2 of 8
The rule “Velvet in autumn” boosts it. · until 30 Nov
“sofa” named Category Sofas
“grey” named Color Grey
Found by every word of the query.
Its business score of 0.29 orders it among the hits that match as well.
rating 0.22sales_30d 0.07released_at 0.00

Kaldern Emerly Modern Sofa Chaise, 96"W
Position 3 of 8
“sofa” named Category Sofas
“grey” named Color Grey
Found by every word of the query.
Its business score of 0.81 orders it among the hits that match as well.
sales_30d 0.38rating 0.30released_at 0.13

Kaldern Eva Mid-Century Modern Tufted Velvet Down-Filled Loveseat Sofa Couch, 60.5"W
Position 4 of 8
“sofa” named Category Sofas
“grey” named Color Grey
Found by every word of the query.
Its business score of 0.63 orders it among the hits that match as well.
sales_30d 0.35rating 0.28released_at 0.00

Kaldern Emerly Modern Sectional Sofa, 96"W
Position 5 of 8
“sofa” named Category Sofas
“grey” named Color Grey
Found by every word of the query.
Its business score of 0.56 orders it among the hits that match as well.
rating 0.28sales_30d 0.27released_at 0.00

Kaldern Emerly Modern Loveseat Sofa, 63"W
Position 6 of 8
“sofa” named Category Sofas
“grey” named Color Grey
Found by every word of the query.
Its business score of 0.44 orders it among the hits that match as well.
rating 0.24sales_30d 0.19released_at 0.00

Kaldern Frederick Mid-Century Modern Tufted Velvet Sofa Couch, 77.5"W, Forest Green
Not on the page
“grey” named the filter Color Grey, which drops it. Remove the filter to see it.
Release 9e25efbSnapshot 60e5960
Drag a product to the first place, and the others make room.
A banner takes its place in the grid, for the window you set.
Every change goes live as a release you can take back.
07 · Developers
Products, categories, brands and content, in sections.
Resolve any path of your shop, with real 301 and 410 answers.
React components restyled by tokens, or the typed client.
import { ProductTile, useTile, type TileProps } from "@orbsearch/react";export function ShopTile(props: TileProps) {return (<ProductTile.Root {...props}><ProductTile.Title /><ProductTile.Media><ProductTile.Image /><ProductTile.Badges><QuickBadge /></ProductTile.Badges></ProductTile.Media><ProductTile.Price /><ProductTile.Brand /></ProductTile.Root>);}function QuickBadge() {const { product } = useTile();if (product.delivery === null || product.delivery.max > 2) return null;return <ProductTile.Badge>Schnell bei dir</ProductTile.Badge>;}import { createSearch } from "@orbsearch/client";const search = createSearch({ endpoint: "http://127.0.0.1:7800" });const response = await search.query("sofa", { locale: "de", filters: { color: ["grey"] } });const product = await search.product({ id: "SOFA-ASKA-2" }, { locale: "de" });const page = await search.resolve("/wohnen/sofas?color=grey");curl -s 'http://127.0.0.1:7800/v1/search?query=graues+sofa&per_page=2'curl -s http://127.0.0.1:7800/v1/search -H 'Content-Type: application/json' \-d '{ "query": "graues sofa", "filters": { "width": { "lte": 220 } }, "per_page": 2 }'const navigate = useNavigate();useEffect(() => {const registration = new AbortController();registerAgentTools(search, {locale: "de",signal: registration.signal,navigate: (href) => navigate(href, { preventScrollReset: true }),}).catch(reportError);return () => registration.abort();}, [navigate]);Response
POST /v1/search {"query":"graues sofa","per_page":2,"debug":true}{"release": "d48231fd8ff340a3cff76b2c","query": {"typed": "graues sofa","searched": "graues sofa"},"sections": [{"type": "product","total": 149,"hits": [{"entity": "product:B07BW8P2DS","fields": {"title": "Fjordholm Andover Schonbezug Sitzgruppe, leinen","price": 1459.9}},{"entity": "product:B07JC4M6VR","fields": {"title": "Kaldern Rockwood Modernes Sofa, Polyester, dunkelgrau","price": 1006.99}}]}],"trace": {"steps": [{"step": "resolve","detections": [{"words": "sofa","as": {"category": { "within": "wohnen/sofas" }},"entry": "the title \"Sofas\" of the category wohnen/sofas"},{"words": "graues","as": { "color": "grey" },"entry": "the label \"Grau\" of the color grey"}]}],"timings": {"total_ms": 4.77,"own_ms": 0.6,"before_engine_ms": 0.21}}}08 · Engine room
The Query API is written in Rust and compiles your configuration when you publish. A query is pure computation plus one call to Meilisearch, so nothing can go stale.
Search · “grey velvet sofa”Median of 50 runs
5.66ms100× slower
Rust API 0.68 ms
The rest is one call to Meilisearch
09 · Every shopper
Keyboard, screen readers, visible focus and reduced motion are built and tested with every component, as EU law has asked of online shops since June 2025.
10 · Open source
$ make .env$ docker compose up --detach --waitpostgresLivemeilisearchLiveorbsearchLiveindexerLivecontrolLive# then upload your catalog and publish a release$ curl -s 'localhost:7800/v1/search?query=sofa'{"query_id": "01a12053-a6a4-76bc-922e-4b25f975bd2b","release": "d48231fd8ff340a3cff76b2c","snapshot": "60e5960671ed88e632e9836a","query": {"typed": "sofa","searched": "sofa"},$
