Skip to main content
Inputs: 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

Set ISTARI_API_KEY, then swap in your what and anchor terms. The request maps to POST /v2/search.
The anchor (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_all and 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 Total field in keyword mode — it shows 0 while 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).