← Oleksii Turovskyi

AEO Adoption Scan, 2026

Seven queries, 93 pages, nine signals, one day in August 2026. The method, the full results, and what the numbers cannot tell you — so the articles that quote them do not each carry their own copy.

Three articles on this site quote numbers from one scan. This is the scan: what was collected, how each signal was defined, what came out, and what the numbers cannot tell you. If you want to cite a figure, cite this page — the articles link here rather than repeating the method.

What was measured#

On 9 August 2026 I pulled the top 20 United States, English-language Google organic results for seven queries, using the DataForSEO SERP API:

llms.txt · answer engine optimization · generative engine optimization · how to get cited by ai · geo vs seo · aeo vs seo · ai visibility checker

That returned 123 URLs. 117 answered with a 200. After dropping platform domains — YouTube, Reddit, LinkedIn, Instagram, Medium, Wikipedia and X, none of which control their own head markup in a way that means anything here — 93 pages across 78 domains remained. Every number below is out of those 93 unless it says otherwise.

These are pages that already rank for the queries where AEO is discussed. That makes them a useful sample of what the field practises, and a poor sample of the web at large.

How each signal was defined#

A number is only as good as the check behind it, so here are the checks.

Signal Counted when
llms_txt GET /llms.txt returns 200 with a non-HTML content type
ai_bot_blocked robots.txt has a named group for the bot containing Disallow: /
faqpage @type FAQPage appears in any JSON-LD block on the ranking URL
md_variant GET <url>.md returns 200 with a markdown content type
question_heading an h2 or h3 whose text ends with ?

Everything else is a plain presence check on the fetched HTML: a JSON-LD block, a dateModified field, an author field, a <table>.

Results#

Signal Pages Share
JSON-LD of any type 76 / 93 81.7%
dateModified present 55 / 93 59.1%
author in JSON-LD 58 / 93 62.4%
At least one question heading 69 / 93 74.2%
llms.txt served 49 / 93 52.7%
At least one comparison table 34 / 93 36.6%
FAQPage markup 24 / 93 25.8%
Markdown variant of the page 8 / 93 8.6%
Blocks at least one AI bot 8 / 93 8.6%
HowTo markup 3 / 93 3.2%

Two figures are not page counts. Across all 2,195 headings in the sample, 410 end in a question mark — 18.7%. And the median page runs 2,511 words.

The shape of that table is the finding. The signals that a CMS or an SEO plugin emits without being asked — JSON-LD, dateModified, an author field — clear 59%. The signals that require someone to decide something — a markdown variant, HowTo, a comparison table — sit under 37%. llms.txt is the interesting middle at 52.7%, and the next section is why that number is softer than it looks.

The llms.txt number has a footnote#

41 of the 78 domains serve a working file. The sizes are not comparable to each other in any useful way:

Bytes Domain
Smallest 648 llmstxt.org — the site that publishes the specification
Median 8,072
Largest 2,500,078 coursera.org

A 2.5 MB file is not a curated index. It is an export, and an agent reading it will truncate long before the end.

More to the point: 5 of the 41 domains, 12.2%, got the file from an SEO plugin update rather than a decision.

Domain Plugin
aioseo.com All in One SEO Pro v5
visiblefactors.com All in One SEO Pro v5
www.fasturtle.com All in One SEO v5
www.boralagency.com Yoast SEO v27
www.yoghurtdigital.com Yoast SEO v27

Those five sites did not choose a curation strategy. Their plugin shipped a feature. They are in every llms.txt adoption statistic published after that release, including this one.

Who blocks AI bots#

Eight of 93 pages sit on a domain that blocks at least one AI crawler outright. Six of them are worth naming, because what they block is informative:

Domain Ranks for Blocks
forbes.com answer engine optimization (#4) GPTBot, ClaudeBot, PerplexityBot, CCBot, Bytespider, Applebot-Extended, anthropic-ai, meta-externalagent
builtin.com generative engine optimization (#19) GPTBot, ChatGPT-User, OAI-SearchBot, PerplexityBot
lib.guides.umd.edu how to get cited by ai (#8) GPTBot, ChatGPT-User, CCBot, Bytespider, Google-Extended, Applebot-Extended
libguides.brown.edu how to get cited by ai (#16) GPTBot, ChatGPT-User, CCBot, Bytespider, Google-Extended, Applebot-Extended
llmclicks.ai ai visibility checker (#19) CCBot, Bytespider, meta-externalagent
coursera.org answer engine optimization (#6) meta-externalagent

Two university library guides ranking for "how to get cited by ai" block the crawlers that would cite them. Forbes blocks anthropic-ai, a token Anthropic has retired, which tells you when that file was last opened.

What this does not show#

  • It measures presence, not effect. Nothing here says a page with llms.txt gets cited more often. Testing that needs citation data these checks do not collect.
  • The sample is self-selected. Pages that rank for "answer engine optimization" are written by people who think about AEO. Treat every number as an upper bound for the wider web.
  • One country, one language, one day. US, English, 9 August 2026. Google results move.
  • Presence is not correctness. A FAQPage block counts here whether or not its answers match the visible text. So does an llms.txt that lists dead URLs.
  • 93 is small. A five-point difference between two signals in this sample is noise.

The baseline: this site, on the day of the scan#

The same run measured alexturik.com, which is how the gaps got prioritised. This is the state on 9 August 2026, before any of it was addressed:

This site, 2026-08-09 Sample median or share
Median words per post 1,383 2,511
Question headings 7 / 130 (5.4%) 18.7%
Pages with FAQPage 3 / 22 (all under /plugins, none in the blog) 25.8%
Markdown variants 15 pages 8.6% of the sample had any
AI bots blocked 0 8.6% blocked at least one
llms.txt 10,750 bytes median 8,072

Those figures are deliberately frozen at the scan date and are no longer current — the blog now runs FAQ markup and question headings throughout, and every page has a markdown twin. Rerunning the scan is the only honest way to update them, which is the point of writing the method down.

How to cite this#

Turovskyi, O. (2026). AEO Adoption Scan, 2026: 93 pages ranking for AEO and GEO queries. alexturik.com/aeo/research-2026. Measured 9 August 2026.

The raw dataset is in the repository as docs/reports/aeo-adoption-dataset-2026-08-09.json. If you rerun the same seven queries, I would like to see the numbers.