Narrative
Oatly scores 42 out of 100, landing squarely in the Gaps band, and the diagnosis is unusually clean: this is a brand site that reads beautifully to humans and is almost entirely opaque to machines. The crawlers are welcomed, the content is rich, the copy is charming, and then the entire commercial layer just is not there. An agent sent to buy a liter of Barista would find nothing to transact against.
The single largest wound is price. Across all ten sampled product pages, in three locales, price appeared in zero raw HTML responses and zero rendered responses (check 2.1, eight points lost). Pages like oatly.com/en-gb/products/oat-drink/oat-drink-baristamatic-1-5l return 200 OK with a full Product JSON-LD block, but no Offer, no price, no currency, nothing. Check 1.2 confirms this structurally: ten of ten pages carry Product schema, zero of ten carry Offer schema. This is a defensible product-brand choice (Oatly routes purchase through retailers), but from an agent's perspective the site is a catalog with the prices torn off. That single architectural decision cascades through the rest of the scorecard.
The transactability dimension therefore collapses entirely. Cart returned 404, checkout returned a network error, so checkout flow (3.1), guest checkout (3.2), price transparency (3.3), and cart API accessibility (3.5) all scored zero. That is seventeen points forfeited to a single fact: oatly.com does not sell anything directly. Fine as strategy, brutal as agent-readiness. If Oatly ever wants an AI shopping agent to add a carton to a basket, there is currently no basket to add to and no rail to pay on. Machine-native payment rails (3.4) picked up a single point on hints alone.
Trust signals are the next soft spot at three of ten. There is no reachable /returns page and no returns link from the homepage (5.1, zero of three), and no third-party review anchors were detected across Trustpilot, Yotpo, Bazaarvoice, Feefo, or the other eight platforms checked (5.4, zero of two). The merchant verifiability classifier could confirm the business name Oatly but found no physical address and no registration ID in the crawled surfaces (5.2, one of three). For a B corp with genuine sustainability credentials, leaving the provenance signals off the machine-readable surface is a missed layup.
The bright spots are real and worth naming. Crawler posture is fully open: GPTBot, ClaudeBot, PerplexityBot, Google-Extended, CCBot, anthropic-ai, Applebot-Extended, Bytespider, and Amazonbot are all allowed in robots.txt (1.1, full credit). Bot detection, CAPTCHA, and rate limiting all scored full marks; zero 403s across 32 fetches. And the content itself is genuinely agent-friendly: specification completeness scored nine of ten high-signal hits with full ingredient lists and nutrition data in every locale (6.1), conversational descriptions scored nine of ten (6.2), and no manipulation tactics were detected anywhere (6.6). The prose an agent needs to reason about the product is all there.
Oatly's biggest opportunity is to add Offer schema with price, currency, and availability to every product page, even if the checkout itself lives at a retailer, because right now the site tells agents everything about the product except whether it exists for sale.
BDiscoverability
Robots, sitemap, agent endpoints. mostly strong.
EMachine Readability
Schema coverage, raw-HTML price, inventory, variants. broken.
ETransactability
Checkout flow, guest, transparency, payment rails, cart API. broken.
AAgent Posture
Bot detection, CAPTCHA, rate limiting, stated agent policy. strong.
ETrust Signals
Return policy, merchant verifiability, price history, third-party anchors. broken.
CAgent-Native Content
Specs, descriptions, decision support, delivery, stability, absence of manipulation. partial.