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.txtgets 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
FAQPageblock counts here whether or not its answers match the visible text. So does anllms.txtthat 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.