AI answer tools
What ChatGPT, Claude, Gemini, Perplexity and Google's AI answers say and cite, and whether a site is ready for them.
Find out what AI engines say about your brand, and whether your site is ready for them. The data comes from DataForSEO, except aeo_get_site_readiness, which reads your site itself and is free. See our step-by-step guide to checking ChatGPT brand recommendations.
The engines are named like this in the results:
chatgptandgeminiare the answers their consumer apps show a person, read live from chatgpt.com and gemini.google.com.claudeandperplexityare live answers from their model APIs, with web search on.ai_overviewandai_modeare Google's AI answers.
A few terms the results use. A prompt is a question people ask an engine. A mention is your brand in the answer text. A citation is a source the engine links to.
A good first baseline takes three steps. Run aeo_get_site_readiness to check the engines can read your site. Find the prompts that matter with aeo_search_prompts. Then run them with aeo_run_ai_answers, with the brands to look for. AI answers run as an async task and are never cached, because the point is what the engines say now.
To connect these tools to your agent, see the AI visibility MCP page.
| Tool | What it does | Cost |
|---|---|---|
aeo_run_ai_answers | Run AI answers for a prompt | From 2 credits |
aeo_search_prompts | Search AI prompts | From 31 credits |
aeo_get_site_readiness | Get AI readiness for a site | Free |
Run AI answers for a prompt
aeo_run_ai_answersWhat AI engines answer for a prompt, with the brands they mention and the sources they cite. Slow: returns a task_id, then read the result with get_task.
"does ChatGPT recommend us for X", "who do AI engines cite for X", an AI visibility baseline for a brand across engines.
- Which prompts people ask, use
aeo_search_prompts. - Google's ten blue links, use
seo_get_serp(ai_overview: true adds the overview to it at 1 credit). - Whether a site is ready for AI crawlers, use
aeo_get_site_readiness.
A task_id at once, because the work runs in the background. When it is done, get_task returns rows[] per prompt and engine (answer, mentions[] (brand, mentioned, position, cited), citations[] (position, url, domain, title), search_results[] (pages retrieved, cited or not), search_queries[] (the web searches the engine ran), named_brands[] (brands ChatGPT tagged in the answer, not only yours)) and errors[] for cells that failed. answer null = the engine showed no AI answer. search_results[] and named_brands[] are filled for chatgpt only, search_queries[] for chatgpt and claude. named_brands[] drops a tag ChatGPT gives as a description instead of the brand, so it can miss brands; read the answer for a full list. chatgpt and gemini are what their apps show a person, model chosen by the app; claude and perplexity come from their model APIs. Answers are live and non-deterministic; results are kept 30 days and never cached.
Per prompt, 15 credits for claude, 6 for perplexity, 2 each for chatgpt, gemini, ai_overview and ai_mode. Default 1 prompt on the five default engines = 27 credits. A cell that fails is not charged.
Parameters
| Parameter | Default and notes |
|---|---|
prompts[] | Required. Questions to ask each engine, as a person would type them. At most 10. |
engines[] | One of chatgpt, claude, gemini, perplexity, ai_overview, ai_mode. Engines to ask. Default chatgpt, claude, gemini, perplexity, ai_overview. At most 6. |
brands[] | Brand names or domains to detect in every answer. At most 10. |
location | Provider location name or code. Default United States. |
language | ISO 639-1 language code. Default en. |
It also takes the common parameters max_credits and dry_run.
{
"prompts": [
"best crm for startups"
],
"brands": [
"HubSpot",
"pipedrive.com"
]
}Search AI prompts
aeo_search_promptsPrompts people ask an AI engine (ChatGPT or Google AI Overview) about a topic or brand, from the provider's index of observed answers. Not keywords.
"what do people ask ChatGPT about X", "which prompts mention our brand", building an AI visibility baseline.
- Google keywords and volumes, use
seo_search_keywords. - What the AI engines answer right now, use
aeo_run_ai_answers.
A list. Each row has prompt, ai_search_volume (a People Also Ask proxy, not query logs), engines[], mentions_brand (a domain input is cited, a keyword input appears in the answer), cited_domains[], retrieved_domains[] (read while answering but not cited), search_queries[] (the web searches the engine ran), named_brands[], answer_preview, first_seen, last_seen.
31 + 31 per 100 rows. Default 50 rows = 47 credits. Cached 7 days.
Parameters
| Parameter | Default and notes |
|---|---|
keyword | A topic or brand name. |
domain | A domain cited or mentioned in answers. |
engine | Default chatgpt. One of chatgpt, ai_overview. |
location | Provider location name or code. Default United States. |
language | ISO 639-1 language code. Default en. |
limit | Max rows. Default 50, cap 500. |
Give exactly one of keyword or domain.
It also takes the common parameters cursor, max_credits and dry_run.
{
"domain": "example.com",
"limit": 50
}Get AI readiness for a site
aeo_get_site_readinessWhether a site is set up for AI answer engines, from about seventeen live fetches of its origin, free. Checks what the engines document as gating their answers: robots.txt access for every known AI crawler (search, user fetch, training), CDN or WAF rules that turn away the answer crawlers' user agents before robots.txt is read, content present in the raw HTML without JavaScript on the homepage and on one page sampled from the sitemap, noindex and snippet directives, then freshness signals, redirect chains, sitemap, title and description, structured data, and llms.txt.
"is our site ready for AI search", "do we block GPTBot", "are we blocking ChatGPT at Cloudflare", "do we have an llms.txt", before an AI visibility push.
- What the engines answer, use
aeo_run_ai_answers. - A full technical audit, use
seo_run_technical_crawl. - One page's on-page tags, use
seo_get_page.
One record with checks[] (check, ok, tier, detail, source), failing checks first. tier says how much a check is worth: blocks_citations is documented by an engine, evidence_backed is measured, hygiene is standard practice, policy is a legitimate choice that never fails, unproven is reported but never fails on absence (llms.txt, schema presence). Plus the findings behind them: robots_txt (ai_bots[], sitemaps, content_signal), edge (probes[] per answer crawler user agent), homepage and sample_page (status, word_count and js_shell from the raw HTML, canonical, robots and schema tags, dates; sample_page is the first content URL in the sitemap, null when there is none), markdown (whether the origin answers Accept: text/markdown, which passes the JavaScript check), redirects[], sitemap, llms_txt and llms_full_txt. No crawl, no LLM call.
0 credits, rate limited. Cached 1 hour.
Parameters
| Parameter | Default and notes |
|---|---|
target | Required. A domain or URL. Every fetch goes to its origin. |
{
"target": "example.com"
}