Skip to content

GEO API

GEO (Generative Engine Optimization) is Iron’s AI-search visibility tracker. It measures whether an LLM answer engine names, cites, or ranks a client’s local business for the prompts a real prospect asks (for example, “best lawn care in Austin”). It replaces external trackers with an in-house, org-scoped implementation. Endpoints are under /api/v1/geo.

Method Path Description
GET /geo/config Get the org’s tracked-prompt config (one active config per org; null if unset).
PUT /geo/config Set the tracked-prompt config.
POST /geo/config/seed-from-gbp Seed prompts from the client’s Google Business Profile.
POST /geo/run Run a visibility check now (409 if no config).
GET /geo/overview Latest run per engine — the dashboard snapshot.
GET /geo/runs Run history (time series).
GET /geo/runs/{run_id} One run with per-prompt detail.
GET /geo/checklist The static Core-30 / answer-engine optimization rubric.

For each tracked prompt the scorer measures brand presence, ordinal position, citation, and competitor share-of-voice from an answer engine’s response. The neutral programmatic engine is Tavily; captured consumer-engine answers can also be submitted via POST /geo/run. A run that scores zero answers writes nothing, so an empty run never corrupts the time series.

A monthly beat runs the check for every org with an active config (monthly because the free Tavily key has a daily cap and AI recrawl lags days to weeks). The beat is a no-op without a Tavily key configured.

The on-page GEO layer (place-id JSON-LD, freshness/HowTo schema, AI-bot robots rules, llms.txt, combo pages) ships in the funnels’ shared Astro templates; this module surfaces the checklist and measures the result.