what (free text — a product, technology, or capability) · optional location. Returns: the companies whose business is that thing.
This is the template for the long tail: corrugated cardboard, solid-state batteries, hydrogen electrolyzers, quantum computing. GOI’s corpus is SME- and niche-heavy and web-verified, so the companies exist — the trick is precision. A bare semantic search drifts to adjacent topics; the fix is to anchor.
The recipe
SetISTARI_API_KEY, then swap in your what and anchor terms. The request maps to POST /v2/search.
keywords.must_all) is what turns a fuzzy semantic match into a precise one. The describe field carries the nuance the anchor can’t (solid-state, green hydrogen, fault-tolerant).
What each lever does
Validated examples
One pattern, five wildly different niches — all returned the real players:Notes
- The anchor is everything. Drop
keywords.must_alland the semantic query drifts to neighbors (battery analytics, packaging consultants). Keep it tight and literal. - Handle spelling/synonyms with
must_any.["electrolyzer","electrolyser","electrolysis"]caught makers using any spelling. Same for regional terms. - One anchor word beats two.
["corrugated"]pulled some corrugated-metal makers;["corrugated","cardboard"](both required) fixes it. Add a second anchor only to disambiguate. - Ignore the
Totalfield in keyword mode — it shows0while returning a full page. Count the rows. - Don’t set
min_score— hybrid retrieval collapses under a floor here. - This is also how you find “innovative / deep-tech companies in X”: anchor on the technology, not on a company
type(startup typing is sparse in the corpus and will cost you real matches).