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.
Endpoints used
POST /v1/projectsone per customer workspacePOST /v1/queriestheir prompt set, tagged by topicPOST /v1/jobs/executenightly, recurrence: dailyPOST /v1/visibility/entitiesthe headline scorePOST /v1/models/platform-detailsthe per-engine tabPOST /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 section | Endpoint |
|---|---|
| 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.
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.
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.
Start from an endpoint
AI Visibility API →
The headline number every pattern starts from.
AI Model Comparison API →
Per-engine rows for the platform tab.
Prompt Tracking API →
Import, tag and run the prompt set.
Fan-Out API →
Turn follow-up questions into briefs.
Citations API →
The sources behind each answer, for the client report.
Shopping API →
Products and merchants in shopping answers.
Themes & Perception API →
How each brand is framed, theme by theme.