Integration patterns

Three ways teams put GEO data to work

Each pattern below is the same four-endpoint loop (import prompts, execute, read analytics, join to your own data) wired to a different consumer.

Pattern 01

SEO platforms: ship a GEO module

Your customers already ask where they stand in ChatGPT. Building the answer means six scrapers, an entity resolver and a sentiment pipeline. Buying it means mapping one project per workspace.

·One organisation, one project per customer workspace, so data stays isolated.
·No branding in the payload; the numbers appear as your own metrics.
·Resale is explicitly allowed, so pricing stays your decision.
·Volume tier at 250k+ credits gives priority execution queues.

Endpoints used

POST /v1/projectsone per customer workspace
POST /v1/queriestheir prompt set, tagged by topic
POST /v1/jobs/executenightly, recurrence: daily
POST /v1/visibility/entitiesthe headline score
POST /v1/models/platform-detailsthe per-engine tab
POST /v1/sources/domainsthe "why" behind the score
// nightly worker, one pass per workspace
for (const ws of await workspaces()) {
  const headers = { ...auth, "x-project-id": ws.geoProjectId };

  await post("/jobs/execute", {
    models: ws.plan === "pro"
      ? ["chatgpt","perplexity","google-ai-mode","claude"]
      : ["chatgpt"],
    executionsPerQuery: 1,
  }, headers);
}

// on dashboard load, unmetered read
const { results } = await post("/visibility/entities", {}, headers);

The monthly deliverable, generated

Report sectionEndpoint
Visibility vs 3 competitors/v1/visibility/entities
Per-engine breakdown/v1/models/platform-details
Topic performance/v1/tags/stats
Citation opportunities/v1/sources/domains
Content briefs/v1/fan-outs/top
Sentiment shift/v1/sentiment/timeseries
Verbatim evidence/v1/queries/responses

Every number in the deck traces back to a stored response you can quote verbatim, which is what survives the client asking "how do you know?".

Pattern 02

Agencies: reporting that survives an audit

GEO reporting done by hand is a screenshot exercise: someone asks ChatGPT the same ten questions and pastes the answers. It cannot be aggregated or trended, and it does not hold up when a client asks for the method.

One project per client, prompts tagged by service line, one run per reporting period, and the report pulls itself into your BI tool, a sheet or a slide generator.

·Tag prompts by market to bill per country.
·Credits never expire, so a paused client does not burn budget.
·Raw responses are retrievable as evidence for any claim.
Prompt Tracking API

Pattern 03

E-commerce: win the recommendation before the click

When an engine answers "best trail shoes for wide feet" with three products and two merchants, that is the whole funnel. Shopping answers carry products, prices, ratings and the merchant that gets credited.

·Join returned products to your catalogue on external id or SKU.
·Track which merchant is cited for your own product, including resellers.
·Watch price positioning: the engine quotes a price, and it is not always yours.
·Per-theme perception tells you whether you are the "premium" or the "cheap" option.
POST /v1/shopping/products
{}

→ {
  "results": [
    { "product": "Ridgeline Scree 3 Wide",
      "externalId": "SKU-4471",
      "visibility": 41.8,
      "avgPrice": 148.0,
      "priceRange": [129.0, 165.0],
      "avgRating": 4.6,
      "topMerchants": [
        { "merchant": "trailoutfitter.com",
          "citations": 62, "price": 129.0 },
        { "merchant": "ridgeline.com",
          "citations": 24, "price": 148.0 }
      ],
      "shareOfVoice": 17.4 }
  ]
}

The uncomfortable finding

In this sample, the brand's own store is not the most-cited merchant. That is a merchandising decision you can only make if the merchant layer is in your data warehouse.

Prototype your pattern on one project first