AI visibility study 2026: 107 small-business websites
Aggregate results of SeeGeo's August 2026 audit of 107 real small-business websites in seven countries: how many block AI crawlers (per bot, explicit and effective), how many carry structured data, how many state what the business does, llms.txt adoption, grade distribution and per-platform splits. Counts only — no site is named. CC BY 4.0.
| Download | see-geo.com/data/ai-visibility-study-2026.jsonapplication/json · 2782 bytes |
|---|---|
| Repository | github.com/Tunisian-Aaron/ai-visibility-study-2026 (methodology, findings, llms.txt classification) |
| License | CC BY 4.0 — reuse freely with attribution |
| Sample | 107 sites audited of 120 sampled, 7 countries, run 2026-08-17 |
| Published | 2026-08-17, updated 2026-09-08 |
| Cite as | SeeGeo, AI visibility study of 107 small-business websites, 2026. |
The figures are read out one per question on the statistics page and told as a story in the write-up. Both render from this same file, so the three can never disagree. Individual businesses are never named: the dataset is counts only.
Fields
| Key | Meaning |
|---|---|
| generatedAt | ISO timestamp of the aggregation run. |
| sampleSize | Candidate domains collected before exclusions. |
| audited | Sites actually audited; the denominator for every share. |
| exclusions | Why candidates were dropped: unreachable, moved, or blocked the checker (never counted as blocking AI). |
| robots.served | Sites that returned a robots.txt. |
| robots.blocksAnyAiExplicit | Sites whose robots.txt names and disallows at least one major AI crawler. |
| robots.blocksAnyAiEffective | Same, also counting wildcard rules that happen to catch AI bots. |
| robots.perBot | Explicit and effective block counts per crawler (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, CCBot, OAI-SearchBot, Googlebot, Bingbot). |
| robots.causeBreakdown | Blocking sites split by whether CDN/WAF signals were also present. |
| cdn | Sites behind Cloudflare or showing WAF signals, where network-level blocking is possible regardless of robots.txt. |
| content.whatWeDoStatement | Homepages that plainly state what the business does near the top. |
| content.noJsContentMissing | Sites whose main content disappears without JavaScript. |
| schema | JSON-LD presence: none anywhere, on the homepage, beyond the homepage. |
| llmsTxt.present | Sites serving an llms.txt file. |
| platforms | Per-platform counts; blocksAnyAiExplicit and noSchema are null where n is too small to report (sufficient=false). |
| cloudflareSplit | Explicit AI blocking among Cloudflare-fronted vs other sites. |
| grades | Distribution of SeeGeo audit grades A–F across the audited sites. |
SeeGeo self-visibility trend: how often AI assistants name SeeGeo, scan by scan
SeeGeo's own AI-visibility measurement over time: for each completed scan, the share of tracked questions on which ChatGPT, Claude, Gemini and Google named or cited SeeGeo, per engine. Measured with SeeGeo's own tracking on the schedule every customer gets, live engines only. Updated as scans complete. CC BY 4.0.
| Download | see-geo.com/data/self-visibility.jsonapplication/json · live |
|---|---|
| Chart | Our visibility, live — the same data, drawn |
| License | CC BY 4.0 — reuse freely with attribution |
| Coverage | At least 3 scans from 2026-08-14, 2 tracked questions; the file carries every scan completed since, with its own timestamp |
| Published | 2026-08-17, updated as scans complete |
| Cite as | SeeGeo, self-visibility trend (AI assistants naming SeeGeo, per engine, per scan), 2026. |
A vendor publishing its own unedited AI-visibility line. The questions are the ones a buyer would ask (“free tool to check if AI can see my website”), the engines are asked on the schedule every customer gets, and a scan where an engine was not asked simply has no value for that engine — never a zero.
Fields
| Key | Meaning |
|---|---|
| exportedAt | ISO timestamp the file was produced. |
| source | "database" when read from the live scan history, "snapshot" when served from the last committed export. |
| prompts | The tracked questions, as asked to each engine. |
| trend[].startedAt | ISO timestamp the scan started. |
| trend[].grounded | Whether the engines were offered live web search in that scan (null when unknown). |
| trend[].visibility | Per engine (chatgpt, claude, gemini, google): share of question-and-run answers that named or cited SeeGeo, 0–1. An engine missing from a scan was not asked. |
Using the files
Fetch a file directly; both allow cross-origin requests, so a notebook or an agent can read them from anywhere.
curl https://see-geo.com/data/ai-visibility-study-2026.json
curl https://see-geo.com/data/self-visibility.jsonThis page, the statistics page and every article are also available as markdown: append .md to the URL or request them with Accept: text/markdown. The whole site in one file is at see-geo.com/llms-full.txt.