---
title: "Business Suggest"
method: GET
path: "/v1/teams/{team_id}/geo/business/suggest"
tags: ["geo"]
---

# Business Suggest

`GET /v1/teams/{team_id}/geo/business/suggest`

## Request

- Base URL: `https://api.stormy.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.stormy.ai/v1/teams/{team_id}/geo/business/suggest`
- Auth: none declared

Typeahead for "what is your business called" — one keystroke, five rows.

The rows are a QUESTION, never a conclusion: a person confirms which one is
theirs before anything is pulled or connected.

── WHY THIS ROUTE OWNS A CACHE AND THE PROVIDER DOES NOT ──────────────────

`MapsRuntime` is a provider seam: it holds a key and speaks to Google, and
giving it a database handle would make every test of it need one. The
question "have we been asked this before" is not a fact about Google, so it
is answered here, against the Supabase directory
(`runtime/business_directory.py`, tables in migration 0164).

Owner, 2026-09-03: *"i mean supabase search"*. The first person to type a
shop's name pays Google; everybody after them is served from our own rows.

## Path parameters

- `team_id` string, uuid, required

## Query parameters

- `query` string, required
- `limit` integer
- `region` string
- `near_lat` number, nullable
- `near_lng` number, nullable
- `provider` 'google' | 'simulation', nullable
- `visual` boolean

## Headers

- `authorization` string, nullable
- `x-darwin-token` string, nullable

## Response `200`

Successful Response

- object

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/stormy/apis/stormy-control-plane.md) · [All operations](https://skmtc.dev/stormy/apis/stormy-control-plane/llms.txt) · [OpenAPI document](https://skmtc.dev/stormy/apis/stormy-control-plane/revisions/8f749ef0f9db?raw)
