AEO (Answer Engine Optimization) gives your agent tools to understand and optimize for AI search. Track how LLMs like ChatGPT, Claude, Gemini, and Perplexity respond to queries, monitor brand mentions in AI responses, scrape ChatGPT Search results with citations, and analyze AI search volume trends.
CLI First
SDK
Per-user and AccountKit-gated; usage is metered against the tenant’s plan (see Customer Billing). Full surface in the aeo sub-client; also available to agents via agentTools().
Endpoints
| API | Endpoint | Description | Speed | Cost |
|---|
| LLM Responses | POST /v1/aeo/llm-responses/:platform | Get responses from ChatGPT, Claude, Gemini, Perplexity | Live (~5-15s) | 30 credits |
| LLM Responses | POST /v1/aeo/llm-responses/:platform/task | Async task submission (chatgpt, claude, gemini only) | Standard | 30 credits |
| LLM Responses | GET /v1/aeo/llm-responses/:platform/task/:id | Retrieve async task results | GET | Free |
| LLM Responses | GET /v1/aeo/llm-responses/:platform/tasks-ready | Check for completed tasks | GET | Free |
| LLM Responses | GET /v1/aeo/llm-responses/:platform/models | List available models for a platform | GET | Free |
| LLM Scraper | POST /v1/aeo/llm-scraper/chatgpt | Scrape ChatGPT Search (advanced format) | Live | 30 credits |
| LLM Scraper | POST /v1/aeo/llm-scraper/chatgpt/html | Scrape ChatGPT Search (HTML format) | Live | 30 credits |
| LLM Scraper | POST /v1/aeo/llm-scraper/chatgpt/task | Async scraper task submission | Standard | 30 credits |
| LLM Scraper | GET /v1/aeo/llm-scraper/chatgpt/task/:id | Retrieve scraper results (advanced) | GET | Free |
| LLM Scraper | GET /v1/aeo/llm-scraper/chatgpt/task/:id/html | Retrieve scraper results (HTML) | GET | Free |
| LLM Scraper | GET /v1/aeo/llm-scraper/chatgpt/tasks-ready | Check for completed scraper tasks | GET | Free |
| AI Keywords | POST /v1/aeo/ai-keywords/search-volume | AI search volume estimates | Live | 20 credits |
| LLM Mentions | POST /v1/aeo/llm-mentions/search | Detailed mentions with counts and cited links | Live | 20 credits |
| LLM Mentions | POST /v1/aeo/llm-mentions/aggregated-metrics | Consolidated metrics across dimensions | Live | 20 credits |
| LLM Mentions | POST /v1/aeo/llm-mentions/cross-aggregated-metrics | Compare metrics across multiple targets | Live | 20 credits |
| LLM Mentions | POST /v1/aeo/llm-mentions/top-domains | Most frequently mentioned domains | Live | 20 credits |
| LLM Mentions | POST /v1/aeo/llm-mentions/top-pages | Top mentioned pages for a keyword | Live | 20 credits |
| General | POST /v1/aeo/id-list | List task IDs across all sub-APIs | POST | Free |
LLM Responses
Get responses from major AI models to see what they say about your brand, product, or topic.
| LLM | Live Endpoint | Standard (async) | Models |
|---|
| ChatGPT | POST /v1/aeo/llm-responses/chatgpt | task, task/:id, tasks-ready | GET .../chatgpt/models |
| Claude | POST /v1/aeo/llm-responses/claude | task, task/:id, tasks-ready | GET .../claude/models |
| Gemini | POST /v1/aeo/llm-responses/gemini | task, task/:id, tasks-ready | GET .../gemini/models |
| Perplexity | POST /v1/aeo/llm-responses/perplexity | Live only — no async | GET .../perplexity/models |
Response:
Parameters
| Param | Type | Required | Default | Description |
|---|
user_prompt | string | Yes | — | Query to send to the LLM |
model_name | string | Yes | — | Model to use (e.g. “gpt-4o-mini”) |
location_code | number | No | — | Location code |
language_code | string | No | — | Language code |
The CLI maps --keyword to user_prompt and defaults model_name to gpt-4o-mini if --model is not specified.
When to use
- Monitoring what LLMs say about your brand or product
- Comparing how different AI models describe a topic
- Identifying which competitors get mentioned in AI responses
- Auditing AI search visibility across platforms
LLM Scraper
Scrape ChatGPT Search results including citations, source links, and structured response data. Two output formats: advanced (structured JSON) and HTML (raw rendered output).
| Endpoint | Description | Method |
|---|
POST /v1/aeo/llm-scraper/chatgpt | Scrape ChatGPT Search (advanced format) | Live |
POST /v1/aeo/llm-scraper/chatgpt/html | Scrape ChatGPT Search (HTML format) | Live |
POST /v1/aeo/llm-scraper/chatgpt/task | Submit async scraping task | Standard |
GET /v1/aeo/llm-scraper/chatgpt/task/:id | Get results (advanced format) | GET |
GET /v1/aeo/llm-scraper/chatgpt/task/:id/html | Get results (HTML format) | GET |
GET /v1/aeo/llm-scraper/chatgpt/tasks-ready | Check for completed tasks | GET |
Parameters
| Param | Type | Required | Default | Description |
|---|
keyword | string | Yes | — | Query to send to ChatGPT Search |
location_code | number | No | — | Location code |
language_code | string | No | — | Language code |
When to use
- Getting full ChatGPT Search results with source citations
- Analyzing which sources ChatGPT cites for your keywords
- Comparing live ChatGPT output vs. LLM Responses API data
AI Keyword Data
Get search volume estimates for keywords in AI search engines.
Response:
Parameters
| Param | Type | Required | Default | Description |
|---|
keywords | string[] | Yes | — | Keywords to check (up to 1000) |
location_code | number | No | — | Location code |
When to use
- Estimating AI search demand before creating content
- Comparing traditional vs. AI search volume
- Prioritizing keywords for AEO optimization
LLM Mentions
Track how often brands, domains, and keywords appear in LLM responses. All endpoints use Live method.
| Endpoint | Description |
|---|
search | Detailed mentions data with counts and cited links |
aggregated-metrics | Consolidated metrics across dimensions |
cross-aggregated-metrics | Compare metrics across multiple targets |
top-domains | Most frequently mentioned domains for a keyword |
top-pages | Top mentioned pages for a keyword |
Response:
Parameters
| Param | Type | Required | Default | Description |
|---|
keyword | string | — | — | keyword OR domain (exactly one required) |
domain | string | — | — | keyword OR domain (exactly one required) |
target | object[] | Yes | — | Targets to track, array of objects with domain key |
location_code | number | No | — | Location code |
date_from | string | No | — | Start date (YYYY-MM-DD) |
date_to | string | No | — | End date (YYYY-MM-DD) |
When to use
- Monitoring your brand’s presence in AI-generated answers
- Benchmarking competitor visibility across LLMs
- Identifying which domains dominate AI search for your keywords
- Tracking mention trends over time
Error Handling
| Error | Cause | Recovery |
|---|
insufficient_credits | Not enough credits | Check balance with GET /v1/status |
invalid_llm | Unknown LLM platform name | Use chatgpt, claude, gemini, or perplexity |
invalid_keywords | Empty or malformed keyword list | Provide at least one keyword string |
invalid_input | Platform doesn’t support async tasks | Perplexity is live-only; use chatgpt, claude, or gemini for tasks |
provider_error | Data provider returned an error | Retry after a few seconds |
Perplexity only supports the Live method — no async task endpoints. For batch processing across multiple LLMs, submit async tasks for ChatGPT, Claude, and Gemini, then use live calls for Perplexity.
Typical Workflow
Credit Costs
| Operation | Credits |
|---|
| LLM Responses live | 30 |
| LLM Responses task_post | 30 |
| LLM Scraper live | 30 |
| LLM Scraper task_post | 30 |
| AI Keywords live | 20 |
| LLM Mentions live | 20 |
| Models GET | Free |
| Task retrieval (task/:id, tasks-ready) | Free |
| id-list | Free |