Skip to content
Technical Deep DiveE-Commerce AI 7 minRES_08

What does an AI shopping agent see on an auto-parts site?

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.

How we looked

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.

What we found

Funnel of the probe: 60 auto-parts sites probed, 48 actually sell parts after 12 were set aside, 16 served a page at all because 32 returned a challenge or a 403, and 6 had a readable product page.

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.

Bar chart of what blocked the 32 stores: Cloudflare 25, Akamai 3, DataDome 2, Imperva 1, and one domain that never answers. Blocking is strongest among market leaders at 23 of 28 and in continental Europe at 12 of 14.

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.

Side by side: on the six readable product pages, 6 of 6 declare the product and its price in JSON-LD, and 0 of 6 declare which vehicles the part fits. Four ship a fitment container that stays empty until a script fills it, one shows a single vehicle line, one has no fitment section at all.

StorePlatformProduct in JSON-LDFitment lines in HTMLFitment widget empty until script
K2 IndustriesShopifyyes0yes
R44 PerformanceShopifyyes1no
AcuraPartsWarehousecustomyes0no section
Arnold Clark AutopartsShopifyyes0yes
RANDYS WorldwideShopifyyes0yes
D2P AutopartsShopifyyes0yes

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.

What it means

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:

  • Server-render the applicability list on the product page, so that it sits in the HTML.
  • Publish it as structured data.
  • Expose an endpoint that answers "does article X fit vehicle Y" without a session.

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.

Limits

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.

FAQ

Does blocking bots at the CDN hurt a store in AI search?

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.

Is fitment in a JavaScript widget invisible to Google too?

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.

What is the cheapest change that makes fitment readable?

Server-render the applicability list that the widget already shows. It is the same data, placed in the HTML instead of fetched by script.

Do we need ACES or TecDoc to do this?

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.

How do I know what my own product page exposes?

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.

Sources

Key Takeaways
32 of 48 auto-parts stores answered a plain fetch with a bot challenge or a 403 before any page
On the six product pages an agent could read, price was machine-readable 6 of 6 times and the fitment list 0 of 6
Six more stores keep the catalog behind a vehicle cookie or client-side rendering
8 of 26 readable robots.txt files disallow at least one named AI crawler; one names them to allow
Want to go deeper?

We run 2-hour feasibility calls at no cost. We'll tell you what applies to your project.

Start a conversation