AEO · By Aidan Shaw · 14 min read

AEO Audit: How to Run an AI Visibility Audit (Free Checklist)

Published October 19, 2026
Part of our complete guide: 10 Best AEO Agencies in 2026, Compared on Price, Terms and Proof
The short answer

An AEO audit measures whether ChatGPT, Perplexity, Gemini and Google AI Overviews name you, cite you, and get your facts right on the questions your buyers ask, and whether their crawlers can reach and read your pages. Freeze a dated set of 50 prompts (40 unbranded across 10 buying topics, 10 branded), run each one 3 times per engine in logged-out sessions from your target market, and log mention, citation, the exact cited URL, position and competitors as separate columns. Then sort every cited URL into your page, a competitor's page, a third-party page you can reach, or one you cannot. Check robots.txt for search crawlers separately from training crawlers, fetch your pages with curl as each bot, and confirm your answer text is in the raw HTML. Fix access first, then accuracy, then the third-party pages the engines already cite.

The short answer

An AEO audit tells you three things: whether AI engines name you when your buyers ask for help, which pages those engines cite instead of yours, and whether anything on your site stops them from reading you. You can run one yourself with a spreadsheet and a terminal.

The method in one paragraph: write 50 prompts (40 unbranded across 10 buying topics, plus 10 branded), freeze and date them, then run each one 3 times in ChatGPT, Perplexity, Gemini and Google AI Overviews, logged out and from your target market. Log mention, citation, the exact cited URL, position and competitors named as separate columns. Sort every cited URL by who owns it. Check the branded answers against a sheet of your official facts. Then test crawler access three ways: robots.txt, a curl fetch as each bot, and a raw HTML check.

A disclosure before the detail: we sell an AI visibility audit. This page is the version you can run on your own, and we have tried to leave nothing out. If you only want a fast first look, our guide to checking whether ChatGPT recommends your brand takes an afternoon. This page is the fuller audit you act on and rerun.

What an AEO audit measures, and how it differs from an SEO audit

An SEO audit asks where your pages rank. An AEO audit asks what the answer says. A brand can do well on one and badly on the other.

The audit measures five things:

  1. Mention. Does the answer name your brand?
  2. Citation. Does the answer link one of your pages as a source?
  3. Cited URLs. Which exact pages does the engine cite, whoever owns them?
  4. Position and competitors. Where are you in the list, and who is named ahead of you?
  5. Accuracy and access. Are the facts about you right, and can the engine's crawlers fetch and read your pages?

Mention and citation are separate, and the audit falls apart if you merge them. An engine can name you and cite a competitor's comparison page as its source. It can also cite your page for a definition and never recommend you. Each case points to a different fix.

The cited URL column matters most. When you sort the cited URLs, expect your own site to be a small share. Most citations go to third-party editorial, community and reference pages, and those are the pages your plan has to reach.

An audit that only checks your own site misses most of what drives the answer.

Step 1: build the prompt set, then freeze it

The prompt set is the measuring tape. If it changes between runs, your numbers stop meaning anything.

Our recommendation: 50 prompts. Pick the 10 buying topics you most want to win. A topic is a job a buyer is trying to get done, like "choose payroll software for a 20-person company" or "find a dermatologist-recommended retinol." Write 4 phrasings for each topic, which gives you 40 unbranded prompts. Add 10 branded prompts: your name plus "reviews", "pricing", "vs [competitor]", "is [brand] legit", "alternatives to [brand]" and similar.

The logic behind those numbers:

That totals 600 answers across four engines, which is why we do not go bigger by hand.

Where the prompts come from. Do not invent them at your desk. Pull them from four places:

Write each prompt as a full sentence with the context a real buyer adds. "Best CRM" is a keyword. "What's the best CRM for a 10-person B2B sales team that already uses Gmail" is a prompt.

Freeze it. Give every prompt an ID, save the list with today's date, and do not edit it during the audit. If you think of a better prompt halfway through, add it to a list for the next version.

Step 2: run the prompts the same way every time

Run conditions change answers. Control them and write them down.

Step 3: score every answer on one sheet

Use one row per answer: one prompt, one engine, one run. Copy these columns into a spreadsheet:

Prompt ID Prompt Topic Branded? Engine Run Date Region Mentioned (Y/N) Cited (Y/N) Exact cited URL (ours) Position Competitors named All cited URLs Fact errors
T03-2 "best [category] for [use case]" Topic 3 N ChatGPT 1 2026-10-19 US Y N 4 Competitor A, Competitor B, Competitor C thirdparty.com/best-list, competitor-a.com/vs
T03-2 "best [category] for [use case]" Topic 3 N Perplexity 1 2026-10-19 US N N Competitor A, Competitor D reddit.com/r/[sub]/[thread], review-site.com/[category]
B07 "[brand] pricing" Branded Y Gemini 2 2026-10-20 US Y Y yoursite.com/pricing 1 yoursite.com/pricing States old plan price

A few rules keep the sheet honest:

Three numbers come out of it. Mention rate is the share of answers that name you. Citation rate is the share that cite one of your pages. Average position is your mean rank where you appear. Work them out per topic and per engine, as well as overall. "We are named in most ChatGPT answers on topic 3 and almost none on Perplexity" is something you can act on. One blended score is not.

Step 4: find the exact pages the engines cite, and sort them

Fill the "All cited URLs" column for every answer. Perplexity and ChatGPT search show sources with the answer, Google AI Overviews show linked source cards, and Gemini shows sources on some answers. Open each source and copy the full URL.

Then make a second tab with one row per unique URL, how many answers cited it, and which prompts. Sort it by count. The top 20 URLs on that list are usually where the work is.

Tag each URL with one of four labels:

Bucket What it is What you do with it
Ours A page on your own site Check it says the right thing and answers the prompt directly
Competitor A competitor's own page, such as its comparison or "alternatives" page Note what question it answers that your site does not
Third party we can reach A listicle with an owner or editor, a review site, a directory, a community thread, a publication that takes contributions Find the owner or editor, or the place to take part, and add it to an outreach list
Third party we cannot reach Encyclopedias, government pages, closed archives Make sure your facts are correct in the places those pages draw from

The third bucket is often where the quickest wins are. If one roundup is cited in a dozen answers and you are not on it, that page is worth more to you than another post on your own blog. Our AI citation checklist covers how to earn those placements.

Step 5: check accuracy against your official facts

Before you read the branded answers, write a one-page facts sheet: current pricing and plans, product names, features you have and features you do not, locations and service areas, founding year, leadership, and any compliance or regulatory statements. This is the answer key.

Read every branded answer against it and log each error in the "Fact errors" column: old prices, discontinued products, features you never had, a wrong headquarters, confusion with a similarly named company.

For each error, check the cited URLs on that answer. The wrong fact usually comes from a specific page: an old page of yours, an outdated review or a directory listing. Fix or update your own page first, then ask the owner of the third-party page for a correction.

Add three or four brand-safety prompts to the branded set too: "is [brand] a scam", "[brand] complaints", "[brand] lawsuit", "problems with [brand]". You want to know what an engine tells a nervous buyer before that buyer asks.

Step 6: check that the engines can reach and read you

Access problems produce the most dramatic audit results and the easiest fixes. One of our clients, Cortico Health, had GPTBot, PerplexityBot, ChatGPT-User and Google-Extended blocked at the robots.txt and CDN level for months. Nobody knew until an AI visibility audit came back with zero citations on every tracked prompt. A zero that complete points to access, not content.

robots.txt: search crawlers and training crawlers are separate

The major AI companies document separate tokens for search and for training. Blocking a training crawler is a business decision. Blocking a search crawler removes you from that engine's search answers. Here is what each vendor's own documentation says, checked October 13, 2026:

Vendor Search or answer retrieval Model training User-triggered fetch
OpenAI OAI-SearchBot: used to surface sites in ChatGPT's search features GPTBot: crawls content that may be used to train its foundation models ChatGPT-User: visits pages when a user asks; robots.txt rules may not apply
Anthropic Claude-SearchBot: indexes content to improve search results ClaudeBot: collects content that could contribute to model training Claude-User: fetches pages when a user asks Claude a question
Perplexity PerplexityBot: surfaces and links sites in Perplexity search; not used to crawl for foundation models No training crawler listed Perplexity-User: fetches pages for user questions; generally ignores robots.txt
Google Googlebot: Google Search and all Google Search features Google-Extended: controls use of content for training Gemini models and for grounding in Gemini Apps and Vertex AI Not covered here

Google-Extended needs care. Google says it does not affect a site's inclusion in Google Search and is not a ranking signal there. Google's page does not mention AI Overviews by name. Its affected products are Gemini Apps and Vertex AI. If you care about AI Overviews, the token to check is Googlebot.

A robots.txt that keeps you in AI search answers while opting out of training looks like this:

User-agent: OAI-SearchBot
Allow: /

User-agent: Claude-SearchBot
Allow: /

User-agent: PerplexityBot
Allow: /

User-agent: GPTBot
Disallow: /

User-agent: ClaudeBot
Disallow: /

Blocking training crawlers is your call. The audit checks that the file is deliberate and that no broad User-agent: * rule blocks the search bots by accident.

curl as each bot: catch CDN and firewall blocks

robots.txt can say "allow" while your CDN or firewall returns a 403. Fetch your key pages with each bot's user agent string, as published in the vendor docs, and look at the status code:

curl -s -o /dev/null -w "%{http_code}\n" \
  -A "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot" \
  https://yoursite.com/pricing

curl -s -o /dev/null -w "%{http_code}\n" \
  -A "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; PerplexityBot/1.0; +https://perplexity.ai/perplexitybot)" \
  https://yoursite.com/pricing

A 200 is a pass. A 403, 429 or a challenge page means something between the bot and your site is turning it away. One caveat: some firewalls check that a request claiming to be a bot comes from the vendor's published IP ranges, so a block here can be the firewall correctly catching a fake bot. Check your CDN's bot settings and logs to see what happens to the real crawler.

Raw HTML: is the answer in the source?

Some crawlers do not run JavaScript, so content that only appears after scripts load may be invisible to them. Pick a sentence that answers one of your prompts on a key page, and check that it is in the raw HTML:

curl -s https://yoursite.com/pricing | grep -i "plans start at"

If grep prints nothing but the sentence shows in a browser, the page is rendered client side and some engines may never see it. We have watched a category leader hit this after rebuilding its site as an application. Pages were rendered client side, so to a crawler the site had almost nothing on it to read.

These checks are preconditions. Passing them makes your pages possible to fetch and quote. It does not make an engine cite you. The same is true of schema markup, and llms.txt is unproven and optional. Neither is a fix for a low citation rate.

The self-audit checklist

Run down this table when you finish. Each row has a pass bar, so there is no "sort of."

Check Pass bar
Prompt set built from real buyer language 50 prompts, each traceable to a call, query, PAA box or thread
Prompt set frozen Saved with a date and IDs; no edits during the audit
Branded and unbranded split 40 unbranded across 10 topics, 10 branded including brand-safety prompts
Run conditions recorded Every row has engine, date, region and logged-out or fresh session
Repeat runs 3 runs per prompt per engine, over at least two days
Mention and citation separate Both columns filled on every row, independently
Exact cited URLs Full page URL for every source shown, not just the domain
Cited pages sorted Every unique URL tagged Ours, Competitor, Reachable or Unreachable
Facts checked Every branded answer checked against the facts sheet; every error traced to a cited page
robots.txt deliberate Search crawlers you want are allowed; no broad rule blocks them by accident
curl fetch 200 for each bot user agent on your 10 most important pages, or a confirmed reason for any block
Raw HTML The answer sentence appears in the raw HTML of every key page
Rerun scheduled A date on the calendar to rerun the same 50 prompts

What to fix first, by finding

Fix in this order. Each step makes the next one count.

  1. Zero citations everywhere, or a failed curl. Fix access before anything else. Nothing else matters while the door is shut.
  2. Answer text missing from raw HTML. Server-render the pages that answer your priority prompts.
  3. Wrong facts in branded answers. Correct your own pages, then contact the owners of the third-party pages the engine cited for the wrong fact.
  4. Competitors named, you missing, and the cited pages are reachable third parties. This is the outreach list. Start with the URLs cited most often across your highest-value topics.
  5. Mentioned but not cited. The engine knows you but prefers another page as its source. Compare your page to the one it cited: usually the cited page answers the question in its first lines and yours does not.
  6. Competitors' own pages cited. They have published a page that answers the question, such as a comparison or an "alternatives" page, and you have not. Write the honest version.

Then rerun the same 50 prompts and compare the sheets.

Key takeaways

Want it done for you?

If you would rather not read 600 answers yourself, that is what our AI visibility audit is for. It includes a demand-weighted map of your category prompts, citation and mention share across ChatGPT, Perplexity, Gemini and Google AI Overviews, a competitor benchmark on the same prompts, a technical retrievability check covering crawlability, structured data and rendering, and a prioritized 90-day action plan delivered up front.

If you are weighing who to hire for the fixes after the audit, see our list of the best AEO agencies. And if you want to start smaller, run the quick check in how to check if ChatGPT recommends your brand this week.

Frequently asked questions

What is an AEO audit?

An AEO audit, also called an AI visibility audit, measures how AI answer engines treat your brand on the questions your buyers ask. It records whether each engine mentions you, whether it cites one of your pages, which pages it cites instead, where you appear against competitors, and whether the facts it states about you are right. It also checks whether the engines' crawlers can reach and read your site.

How is an AEO audit different from an SEO audit?

An SEO audit looks at rankings, links and on-page factors for Google's blue links. An AEO audit looks at the answers themselves: who gets named, which URLs get cited, and what the engine says about you. The technical part overlaps, but an AEO audit adds checks an SEO audit skips, such as whether you allow AI search crawlers separately from AI training crawlers.

How many prompts should an AEO audit use?

We recommend 50: 40 unbranded prompts across 10 buying topics (4 phrasings each) and 10 branded prompts. Run each prompt 3 times per engine. That gives every topic 12 answers per engine, enough to tell a pattern from a one-off answer, while staying small enough to run by hand. Freeze the list and date it so a rerun compares like with like.

Which AI engines should an AI visibility audit cover?

Start with the four engines our own audit benchmarks: ChatGPT with search on, Perplexity, Gemini and Google AI Overviews. Add others only if your buyers use them. Run every engine logged out or in a fresh session with memory off, and from the market you sell into, because location changes answers.

Can I run an AEO audit for free?

Yes. Everything on this page needs only a spreadsheet, the engines' free tiers and a terminal for the curl checks. The cost is time: 50 prompts, 3 runs and 4 engines comes to 600 answers to read and log. That is the point where people either automate it or hire it out.

Does blocking GPTBot remove me from ChatGPT search?

Not by itself, according to OpenAI's crawler documentation. OpenAI says GPTBot and OAI-SearchBot settings are independent: you can allow OAI-SearchBot to appear in ChatGPT search results while disallowing GPTBot to keep content out of model training. Anthropic and Perplexity document a similar split. Check each token separately.

Do schema markup or llms.txt fix a bad AEO audit?

Not on their own, and we do not treat either as a citation lever. Clean markup and server-rendered HTML are preconditions: they let an engine fetch and read your page. Whether it then cites you depends on whether your page answers the question and whether the third-party sources it trusts name you. llms.txt is unproven and optional.

How often should I rerun an AI visibility audit?

Rerun the same frozen prompt set after each round of fixes, and at least once a quarter. Keep the original sheet. The change in your mention and citation rates on the same 50 prompts is the result, and you can only see it if the prompts did not change.

See where you stand in AI search

Free audit. No commitment.

Book a call

Keep reading