Scan report ·

oatly.com

Gaps. Discovery works, but trust does not.

Category · grocery

D
42 / 100
Gaps
Aisle Storefront · Simulated twin
This scan found 5 weaknesses an agent would hit at checkout, so we planted the same mechanisms in a simulated storefront. Watch an agent shop it, or send your own.
Aisle Max · Remediation packet
Every fix this scan flagged, one card at a time: ranked by points per effort, with copy-paste snippets, per-fix downloads, and a plan your AI coding agent can execute.
Discoverability
B
15 / 20
Machine Readability
E
1 / 20
Transactability
E
1 / 20
Agent Posture
A
13 / 15
Trust Signals
E
3 / 10
Agent-Native Content
C
9 / 15

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.

AI crawler posture: 6/6
https://oatly.com/robots.txt
1.1 · 6/6
!
Structured product data coverage: 3/6
sample · https://oatly.com/fi-fi/products/cold-foam/cold-foam-barista-1l
How to fixPro
1.2 · 3/6
Sitemap quality: 4/4
https://oatly.com/sitemap.xml
1.3 · 4/4
!
Agent-specific endpoints: 2/4
https://oatly.com/.well-known/ai-plugin.json
How to fixPro
1.4 · 2/4

EMachine Readability

Schema coverage, raw-HTML price, inventory, variants. broken.

×
Price in raw HTML: 0/8
sample · https://oatly.com/fi-fi/products/cold-foam/cold-foam-barista-1l
How to fixPro
2.1 · 0/8
×
Product attributes structured: 0/6
sample · https://oatly.com/fi-fi/products/cold-foam/cold-foam-barista-1l
How to fixPro
2.2 · 0/6
×
Inventory signals: 0/5
sample · https://oatly.com/fi-fi/products/cold-foam/cold-foam-barista-1l
How to fixPro
2.3 · 0/5
Variant handling: 1/1
sample · https://oatly.com/fi-fi/products/cold-foam/cold-foam-barista-1l
2.5 · 1/1

ETransactability

Checkout flow, guest, transparency, payment rails, cart API. broken.

×
Checkout flow structure: 0/6
How to fixPro
3.1 · 0/6
×
Guest checkout availability: 0/4
How to fixPro
3.2 · 0/4
×
Price transparency signals: 0/4
How to fixPro
3.3 · 0/4
!
Machine-native payment rails: 1/3
How to fixPro
3.4 · 1/3
×
Cart API accessibility: 0/3
How to fixPro
3.5 · 0/3

AAgent Posture

Bot detection, CAPTCHA, rate limiting, stated agent policy. strong.

Bot detection aggressiveness: 6/6
4.1 · 6/6
CAPTCHA prevalence: 4/4
4.2 · 4/4
Rate limiting posture: 3/3
4.3 · 3/3
×
Stated agent policy: 0/2
How to fixPro
4.4 · 0/2

ETrust Signals

Return policy, merchant verifiability, price history, third-party anchors. broken.

×
Return policy machine-readable: 0/3
How to fixPro
5.1 · 0/3
!
Merchant verifiability: 1/3
How to fixPro
5.2 · 1/3
Price history signals: 2/2
5.3 · 2/2
×
Third-party trust anchors: 0/2
How to fixPro
5.4 · 0/2

CAgent-Native Content

Specs, descriptions, decision support, delivery, stability, absence of manipulation. partial.

Specification completeness: 4/4
sample · https://oatly.com/fi-fi/products/cold-foam/cold-foam-barista-1l
6.1 · 4/4
Conversational product descriptions: 2/2
sample · https://oatly.com/fi-fi/products/cold-foam/cold-foam-barista-1l
6.2 · 2/2
!
Decision-support metadata: 1/3
sample · https://oatly.com/fi-fi/products/cold-foam/cold-foam-barista-1l
How to fixPro
6.3 · 1/3
×
Delivery date transparency: 0/2
sample · https://oatly.com/fi-fi/products/cold-foam/cold-foam-barista-1l
How to fixPro
6.4 · 0/2
×
Price stability signals: 0/2
sample · https://oatly.com/fi-fi/products/cold-foam/cold-foam-barista-1l
How to fixPro
6.5 · 0/2
Absence of manipulation tactics: 2/2
6.6 · 2/2