geo citations: LLM Providers & API Setup
LLM Providers for geo citations
Section titled “LLM Providers for geo citations”geo citations asks a real AI answer engine the questions your customers ask, then checks
whether your brand is mentioned and your domain is cited as a source. It needs an API key for
whichever provider you want to query. This page covers provider-specific setup that doesn’t fit
in the README Quick Start: wire formats, regional endpoints, and
model capabilities.
Perplexity is the recommended default (PERPLEXITY_API_KEY) because Perplexity Sonar returns
real web citation URLs, not just parametric knowledge. OpenAI, Anthropic, and Groq reveal what
the model already knows about your brand from training data, which is a different (and weaker)
signal — see the README’s Additional tools section for the
distinction.
MiniMax
Section titled “MiniMax”MiniMax supports either wire format (OpenAI-compatible or Anthropic-compatible) and both a global and a China API root:
export MINIMAX_API_KEY="your-api-key"export MINIMAX_API_FORMAT="openai" # or "anthropic"export MINIMAX_API_BASE_URL="https://api.minimax.io/v1"geo citations --provider minimax --brand "YourBrand" --domain yoursite.comFor the China endpoint, use https://api.minimaxi.com/v1 with the openai format, or
https://api.minimaxi.com/anthropic with the anthropic format. The global messages-format root
is https://api.minimax.io/anthropic. MINIMAX_THINKING accepts adaptive or disabled for
MiniMax-M3; MiniMax-M2.7 always uses thinking.
Set GEO_LLM_MODEL to select either supported model:
| Model | Context window | API input modalities | Thinking |
|---|---|---|---|
MiniMax-M3 |
1,000,000 tokens | Text, image, video | adaptive or disabled |
MiniMax-M2.7 |
204,800 tokens | Text | Always on |
geo citations currently sends text prompts only. The modalities column lists what each model’s
API accepts; query_llm currently types text and image content parts, so video input needs a
schema addition before it can be passed. See the
official MiniMax pricing page for current
rates.
Gemini
Section titled “Gemini”Gemini is checked directly against the Gemini API, not just simulated via crawler user-agents:
export GEMINI_API_KEY="your-api-key"geo citations --provider gemini --brand "YourBrand" --domain yoursite.comSet GEO_LLM_MODEL to pick a specific model (default: gemini-3.7-flash). This calls
generativelanguage.googleapis.com directly, not Vertex AI, so no extra dependency is needed.
DeepSeek
Section titled “DeepSeek”DeepSeek covers citation checks against the Chinese AI answer-engine ecosystem, which Western-only providers miss entirely:
export DEEPSEEK_API_KEY="your-api-key"geo citations --provider deepseek --brand "YourBrand" --domain yoursite.comFully OpenAI-compatible wire format against api.deepseek.com. Default model
deepseek-v4-flash; set GEO_LLM_MODEL=deepseek-v4-pro for the higher-capability tier.
SerpBase (Google SERP + AI Overview)
Section titled “SerpBase (Google SERP + AI Overview)”Google AI Overviews isn’t an LLM you can query — it’s a SERP feature — so --provider serpbase
takes a different path from every other provider on this page: instead of asking a model a
question, it runs a real Google search via serpbase.dev and checks
whether your brand appears in the organic results or the AI Overview block (when Google renders
one for the query), and whether your domain is among the cited sources.
export SERPBASE_API_KEY="your-api-key"geo citations --provider serpbase --brand "YourBrand" --domain yoursite.comBring-your-own-key, pay-as-you-go: 100 free searches, then $0.30/1k
(pricing). Never auto-detected — SERPBASE_API_KEY alone does nothing
unless --provider serpbase is passed explicitly, since it’s a different kind of check (SERP
observation, not an LLM answer) and a paid one past the free tier.
Two things this provider does differently from the rest:
--runsis ignored. A Google SERP isn’t resampled the way a non-deterministic LLM answer is — asking again immediately would mostly return the same page, just at the cost of another API call. Every check is a single live snapshot per query.- The AI Overview block isn’t always present. Google only renders one for some queries, and
serpbase’s docs don’t publish its internal field schema, so
ai_overviewis parsed defensively — a query without one still runs the citation check against the organic results, it just won’t have an AI Overview signal to add. How often it actually surfaces is logged (serpbase: AI Overview present in N/M queries) rather than promised.