What AI assistants can read from 10,110 Shopify stores
Every store in the Shelfglance directory, scored the same way on the same checks. The scan reads only public pages, so anyone can reproduce any row of this by opening the store themselves. The full list is at /stores, one report per store, and the rows are one CSV download (CC BY 4.0).
The short version
The median store scores 74 out of 100, and 26% land at C or below. Almost none of that is Shopify's fault. Shopify ships the robots.txt, the sitemap, the page metadata and now llms.txt on every plan, and nearly every store passes those. What separates the stores is the product data itself — whether a page states its price, its availability and its identifiers in a form a machine can read without guessing.
Grades
| Grade | Share | Stores | |
|---|---|---|---|
| A | 17% | 1,699 | |
| B | 57% | 5,772 | |
| C | 10% | 1,049 | |
| D | 12% | 1,251 | |
| F | 3% | 339 |
What they fall short on
Across the 10,110 stores scanned since this was recorded. Falls short counts every store that did not pass the check outright, down to a single missing field — so a product page carrying price, currency and stock but no brand is counted here, and most of this column is stores in exactly that position, not stores with nothing. Fails outright counts only the stores where the thing an assistant needs is absent altogether: no product schema at all, rather than product schema missing a field.
| Check | Falls short | Fails outright | |
|---|---|---|---|
| Product structured data | 80% | 18% | |
| Page metadata | 26% | 0% | |
| The catalogue their agent endpoint serves | 25% | 0% | |
| llms.txt | 3% | 0% | |
| An XML sitemap | 2% | 0% | |
| AI shopping crawler access | 1% | 0% | |
| Content readable without JavaScript | 0% | 0% | |
| A homepage that is not a JavaScript redirect | 0% | 0% |
The llms.txt nearly every store has is not its own
Almost every Shopify store now serves a file at /llms.txt, and the
check above passes them for it. That pass is thinner than it looks. The file is
generated by Shopify, it is the same file on store after store, and what it
contains is routing instructions for agents — install the Shop skill, here
are the Universal Commerce Protocol endpoints — rather than anything about
the catalogue it sits next to.
Of 200 stores sampled from this corpus on 1 September 2026, 91% served Shopify's generated file, 5% had written their own, and 4% served none. Of the generated ones, 95% were identical in shape: five links under eleven headings, on stores selling nothing alike.
The stores that wrote their own read completely differently — they open with what the shop sells, who it is for, and which categories it carries. That is what the convention was for, and it is the version an assistant can use to tell one store from another. So the honest reading of the llms.txt row in the table above is not that the problem is solved: it is that Shopify solved its own half and the merchant's half is mostly unwritten.
Sample of 200 taken deterministically — every
Nth host of the sorted corpus, not a chosen set — with one request per store.
Counted as Shopify-generated when the file opens with an Agent
Instructions heading and points at shop.app/SKILL.md. Check any
row yourself: fetch /llms.txt from any Shopify store you like.
Method
Each store is fetched the way any crawler fetches it: the homepage, the
robots.txt, the sitemap, llms.txt, and one product page reached from the sitemap.
Nothing is rendered in a browser, because the assistants doing the reading do not
render one either. Checks are weighted by how much an assistant needs them —
a missing price counts for more than a missing llms.txt — and the score is 100
minus the penalties. Stores that disallow ShelfglanceBot in robots.txt
are not scanned and are not in these numbers; see /bot.
Figures are recomputed on every request from the stored reports, which are kept for three months and re-scanned as they age, so this page moves as the corpus does.
Studies
Findings with their own page, method and rows. New ones appear in the feed.
- 133 of 10,099 Shopify stores block an AI crawler. 6 block the one ChatGPT shops with. (2026-09-02)
The robots.txt of 10,099 Shopify storefronts, read for twelve AI crawlers. 133 block at least one, almost all of them training crawlers by a copied whole-site rule; 13 block a crawler that fetches at answer time, and no store blocks the shopping crawler while allowing the training one. - Shopify's agent-commerce category filter didn't filter on any of 190 stores (2026-09-02)
Every Shopify store answers an agent-commerce endpoint whose schema declares a category filter. Sent to 200 live stores with a price-filter control: 186 ignored it, 4 rejected every value, 0 filtered.
Citing this
Everything here is CC BY 4.0: reuse any figure, any table, or the whole CSV, and the licence asks only that the reuse link back to this page. The numbers move as the corpus is re-scanned, so a citation should say when it was read and archive the CSV it read:
Shelfglance, “What AI assistants can read from
10,110 Shopify stores”,
shelfglance.com/research, read [date]. Data: shelfglance.com/research/data.csv.
Where your store lands
Free, no signup. Takes about ten seconds.
And whether any of it is selling
A grade says what assistants can read. It cannot say whether one of them sent you a buyer. Shopify records the referring site on every order, so that question has an exact answer, and Shelfglance reads it: how many orders came from ChatGPT, Perplexity, Copilot and the rest, and what they were worth.
Install Shelfglance on my storeInstalls on any Shopify store. The free plan needs no card, and the dashboard runs on sample data if you would rather look first.