What structured data do AI agents need to read your products?
AI agents need schema.org Product and Offer data in JSON-LD on every product page, with at least name, sku or gtin, price, priceCurrency and availability, and it must match what the page shows. Structured data removes guesswork: an agent reading "price": "12.40" and "priceCurrency": "GBP" cannot misread a struck-through list price or a per-pack figure.
By the Axidort team · Updated
Why agents depend on it
A product page shows many numbers: a list price, a sale price, a price per unit, a finance offer, a delivery charge. A person works out which is which from the layout. An agent reading the HTML has to guess, and a wrong guess means a wrong recommendation. Structured data states the facts in a fixed vocabulary, and it is in the HTML, so reader agents that never run JavaScript still get it.
The fields that matter
| Field | Why an agent needs it |
|---|---|
name, description, brand | To match the product to what the buyer asked for. |
sku, mpn, gtin | To compare the same item across suppliers. Identifiers are the strongest match signal. |
offers.price, offers.priceCurrency | The price to quote. A number and an ISO currency code, not a formatted string. |
offers.availability | Whether it can be bought now: InStock, OutOfStock, BackOrder, PreOrder. |
offers.priceValidUntil | How long the price can be trusted. |
offers.eligibleQuantity, unit price | Minimum order quantity and the selling unit, essential in B2B. |
offers.shippingDetails, hasMerchantReturnPolicy | Delivery cost, delivery time and return terms, which decide many comparisons. |
An example
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "M8 x 40 mm Hex Bolt, A2 Stainless, Box of 100",
"sku": "HB-M8-40-A2-100",
"gtin13": "5012345678900",
"brand": { "@type": "Brand", "name": "Example Fasteners" },
"description": "DIN 933 fully threaded hex bolt in A2 stainless steel. Sold in boxes of 100.",
"offers": {
"@type": "Offer",
"url": "https://www.example.com/products/hb-m8-40-a2-100",
"price": "12.40",
"priceCurrency": "GBP",
"availability": "https://schema.org/InStock",
"priceValidUntil": "2026-12-31",
"eligibleQuantity": { "@type": "QuantitativeValue", "minValue": 1, "unitText": "box" },
"itemCondition": "https://schema.org/NewCondition"
}
}
</script>Rules that keep it trustworthy
- It must match the page. The same price, currency and stock a person sees. A mismatch is worse than no markup, because the agent will quote the wrong figure.
- Render it on the server. Markup added by a tag manager after load is invisible to agents that do not run scripts.
- State the unit. "12.40 per box of 100" in the name or description, so a per-box price is not compared with a per-item price.
- Keep availability current. Generate it from the same stock data as the page.
- One product per page, or use
ProductGroupwith variants, so the agent knows which price belongs to which variant. - Do not add ratings or reviews you cannot show on the page.
Beyond products
Organization on the home page tells agents who you are. FAQPage gives direct answers to quote. BreadcrumbList shows where a page sits. For services, Service with an Offer plays the role Product plays for goods. Google documents the fields it uses for product results, and the full vocabulary is at schema.org.
Structured data and feeds
A product feed lists the same facts for the whole catalog in one file, and is what shopping surfaces and several agentic commerce programmes ingest. Markup serves agents that arrive at a page. A feed serves platforms that want everything at once. Generate both from one source so they cannot disagree. See agentic commerce protocols.
How to check it
Use Google’s Rich Results Test or the Schema Markup Validator on a product URL, then compare the values with the visible page by eye. In an Axidort scan, product data quality, pricing visibility and stock availability together make up 40% of the score, and each checks that an agent could read the fact without a browser.
Frequently asked questions
01Do AI agents read JSON-LD?
Agents that fetch a page’s HTML can read JSON-LD because it is part of that HTML, and it is the clearest statement of price, currency and stock on the page. It works only if it is in the server response rather than added by a script.
02Which is better for AI agents, JSON-LD or microdata?
Both use the same schema.org vocabulary. JSON-LD is easier to generate, keep correct and read, and is the format Google recommends.
03Does structured data make AI assistants recommend my products?
It makes your products readable and comparable, which is a precondition. Whether you are recommended still depends on price, availability, reputation and whether the agent could reach the page at all.