Two thirds of 48 auto-parts retailers turn a plain page fetch away at the door. On pages an agent can read, price is machine-readable and fitment is not.
An AI shopping agent fetches an auto-parts product page the way most of them do, without running JavaScript. It sees the part. It sees the price. It does not see the car the part fits.
That is the short answer from a probe of 60 auto-parts sites, run on 3 September 2026. Of the 48 that sell parts, 32 answered with a bot challenge or a 403 before serving a single page. On the six product pages that were readable, the product was declared in structured data every time. The fitment list never was.
Fitment is the relation that decides whether an order comes back. Auto parts already carry the highest return rate in retail. The agents now being wired into checkout through Google's Universal Commerce Protocol and platform MCP servers are expected to answer "does this fit my car" before they add anything to a cart.
This is what they have to work with today.
Sixty sites. Thirty from our own research on retailers with visible fitment pain. Thirty market leaders across the US, UK, Germany, France, Poland, the Netherlands, Sweden and Italy.
Twelve were set aside after probing: appliance parts, a manufacturer or dealer with no catalog, closed, or the wrong domain. The analysis covers the remaining 48.
Each store got at most five plain HTTP fetches, desktop identity, no JavaScript: the homepage, robots.txt, llms.txt, one category or sitemap page, and one product page for a common wear part such as brake pads.
We recorded only what the raw HTML showed. A challenge page counts as blocked.
For a readable product page we recorded five things: JSON-LD Product, price in the HTML, how many vehicle lines appear in a fitment section, whether a fitment container exists but is empty until script runs, and any structured fitment markup.
Any store in the sample can be re-probed by hand.
Why no JavaScript: the crawlers behind ChatGPT, Claude and Perplexity fetch pages without executing scripts. Their operators document it, and Vercel measured it across its network. What is not in the HTML does not exist for them.

Two thirds of stores are closed to an unlisted agent. 32 of 48 returned a challenge or a 403 on the homepage. Cloudflare on 25, Akamai on 3, DataDome on 2, Imperva on 1, and one domain that never answers.
The pattern is strongest among market leaders, 23 of 28, and in continental Europe, 12 of 14. The 20 mid-size retailers from our research were split evenly.

A challenge page does not prove that GPTBot or ClaudeBot are blocked. Content delivery networks keep per-bot allowlists that nobody can see from outside.
It proves what any unlisted agent gets: a custom shopping agent, a new assistant, a browsing tool with no verified address range, or a merchant's own MCP client in testing. Whether an exemption exists is a question only the merchant can answer.
Where an agent gets in, the product is readable and the fitment is not. Six stores served a readable product page: K2 Industries, R44 Performance, AcuraPartsWarehouse, Arnold Clark Autoparts, RANDYS Worldwide and D2P Autoparts.
All six declare the product and its price in JSON-LD. None declares what vehicles it fits in a form an agent can read. Four ship a fitment container that is empty in the HTML until a script fills it. One shows a single vehicle line. One has no fitment section at all.
Two expose OE cross-reference numbers. None uses isCompatibleWith, a vehicle additionalProperty, or an ACES identifier.

| Store | Platform | Product in JSON-LD | Fitment lines in HTML | Fitment widget empty until script |
|---|---|---|---|---|
| K2 Industries | Shopify | yes | 0 | yes |
| R44 Performance | Shopify | yes | 1 | no |
| AcuraPartsWarehouse | custom | yes | 0 | no section |
| Arnold Clark Autoparts | Shopify | yes | 0 | yes |
| RANDYS Worldwide | Shopify | yes | 0 | yes |
| D2P Autoparts | Shopify | yes | 0 | yes |
Six more stores keep the catalog inside a session. GSF Car Parts will not list a category until a vehicle is chosen. kfzteile24 gates product URLs behind a vehicle cookie, and its sitemap lists only categories. Euro Car Parts and Car Parts 4 Less render listings client-side, so the HTML holds no product links. iParts answers the product URL with a challenge. RockAuto exposes no product path at all.
The three stores in the sample with TecDoc visible in their markup all belong to this group. The fitment data exists, and it exists only inside a session.
Policy is mostly silence. Of the 26 robots.txt files we could read, 8 disallow at least one named AI crawler, 1 names them to allow, and 17 say nothing. Seven stores serve an llms.txt, and six of the seven run Shopify.
Product data is solved. JSON-LD on every readable page is a decade of Google Shopping pressure.
Fitment never had that pressure. It lives in a widget, a cookie, or a script, where an agent cannot reach it.
Adobe's measurement of retail content visibility to AI put whole categories between 47 and 63 percent machine-readable. For the one attribute that decides a return in this vertical, the readable share in our sample is 0 of 6.
The fix is not a bigger fitment widget. It is one of three things, in rising order of effort:
The third is what an MCP tool or a UCP catalog binding needs anyway. For TecDoc-based European stores it is the only option that survives their session architecture, and it is the shape we build.
Before any of that, one question for every merchant reading this. Does your CDN exempt the crawlers you want, and do you know which ones you want?
Two thirds of your peers are answering that question by accident.
Six readable product pages is a small denominator, reported with it everywhere. The finding is the pattern, not a percentage.
One product template per store, so a store may expose fitment elsewhere. A challenge to a generic fetch is not evidence about listed crawlers.
Version 2 samples three templates per store, adds a headless-browser pass to separate script-only fitment from absent fitment, and covers 200 stores.
Only if the crawlers the store wants are not exempted. Cloudflare, Akamai and DataDome all support per-bot rules. The question is whether anyone set them. Check the CDN dashboard, not robots.txt.
Googlebot renders JavaScript, so Google usually sees it, with delay. The AI crawlers documented by OpenAI, Anthropic and Perplexity do not, and neither do most custom agents.
Server-render the applicability list that the widget already shows. It is the same data, placed in the HTML instead of fetched by script.
No. Whatever data feeds the widget today can feed the page or an endpoint. ACES, PIES and TecDoc matter for correctness and coverage, not for readability.
Fetch it with a command-line tool and search the response for a vehicle you know fits. If the vehicle is not in the response, an agent does not see it. We run this check as the first step of a catalog readability audit.
Version 2 follows in October.
We run 2-hour feasibility calls at no cost. We'll tell you what applies to your project.