JSON-LD for AI agents: practical schema examples
JSON-LD gives software an explicit description of the facts on your page. Use these examples to mark up your business, services and products, then validate the result against the information customers actually see.
Reviewed October 1, 2026 · 6 min read
On this page5 sections
JSON-LD is a structured data format, commonly placed in an application/ld+json script on a web page. With the Schema.org vocabulary, it can describe a business, an offer, a product or a set of questions and answers. The script does not normally appear in the visible page.
Its value is precision: a price can be identified as a price, with a currency and an associated offer. That makes the information easier for supporting systems to interpret. Valid markup does not prove that a fact is true or guarantee that an assistant will cite it.
Google documents structured data as one way it understands page content. Its structured data guidance also stresses accurate, complete information. Treat markup as a clear description of your page, not a substitute for useful content or a working purchase flow.
Below are examples for business identity, services, products and FAQs, followed by validation checks. For the wider context, see generative engine optimization and agentic commerce.
Why use JSON-LD?#
Google supports JSON-LD, Microdata and RDFa. JSON-LD is often the easiest to maintain because the data sits in a separate block rather than being spread through HTML attributes. Use the format your publishing system can keep accurate, and revalidate after template changes.
Choose types that match your content#
These four patterns cover common business pages. You do not need every type on every site. A valid Schema.org type also does not necessarily qualify for a Google rich result.
| Type | What it describes | Where it belongs |
|---|---|---|
| LocalBusiness / Organization | Business identity, contact details and location | The relevant business or location page |
| Service + Offer | A service and its commercial terms | The page describing that service |
| Product + Offer | A product, price and availability | The matching product page |
| FAQPage | Visible questions with a single published answer each | A page containing those questions and answers |
1. LocalBusiness: your identity block#
Use a valid type that fits the business, such as Restaurant, Plumber or MedicalClinic. Be careful with similar names: Physiotherapy is an enumeration value, not a business type. This fictional practice uses MedicalClinic:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "MedicalClinic",
"name": "Riverside Physio",
"url": "https://physio.example",
"telephone": "+1-512-555-0142",
"address": {
"@type": "PostalAddress",
"streetAddress": "412 Riverside Dr",
"addressLocality": "Austin",
"addressRegion": "TX",
"postalCode": "78704",
"addressCountry": "US"
},
"openingHoursSpecification": [{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "08:00",
"closes": "18:00"
}],
"areaServed": "Austin, TX",
"priceRange": "$$"
}
</script>2. Service with an Offer: what you do and what it costs#
A Service describes the work you offer; an Offer describes its price and terms. Put the markup on the matching service page and explain what the quoted price includes. This example uses a fixed assessment fee:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Service",
"name": "Initial Physiotherapy Assessment",
"serviceType": "Sports physiotherapy",
"provider": { "@type": "MedicalClinic", "name": "Riverside Physio" },
"areaServed": "Austin, TX",
"offers": {
"@type": "Offer",
"price": "140.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
}
}
</script>3. Product with an Offer: catalog data#
Keep product markup consistent with the visible product page and any merchant feed. The rating below is illustrative: replace it with genuine, visible product review data or remove it. Never copy sample ratings into production as if they were real.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Recovery Foam Roller Pro",
"description": "High-density foam roller, 45cm, for post-training recovery.",
"sku": "RFR-PRO-45",
"image": "https://example.com/img/roller.jpg",
"brand": { "@type": "Brand", "name": "Riverside" },
"offers": {
"@type": "Offer",
"price": "39.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"url": "https://example.com/products/foam-roller-pro"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "132"
}
}
</script>4. FAQPage: your canonical answers#
FAQPage describes visible question-and-answer pairs. It does not guarantee citation or special search presentation. Google retired its FAQ rich result feature in May 2026. Keep FAQs because they answer useful questions, and use markup only when it accurately describes the page:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": "Do you take walk-in appointments?",
"acceptedAnswer": {
"@type": "Answer",
"text": "No, all visits are by appointment. Same-day slots are often available and can be booked online."
}
}]
}
</script>Keep the markup accurate#
A small, accurate graph is more useful than a large one full of stale or unsupported details. Build these checks into your publishing process:
- Match the visible page. Do not add hidden services, prices or claims that customers cannot find there.
- Generate changing values from maintained data. Recheck prices, availability and currency against checkout, including cached pages.
- Use the expected formats: valid dates and times, supported enumeration values, absolute URLs and a price value with currency in its own field.
- Connect related entities with stable @id values where useful, and use consistent names and canonical URLs.
- Use @graph if it makes related entities easier to maintain. Several valid script blocks can also work; correctness matters more than packaging.
Watch for invalid types and misleading ratings
Common errors include invalid JSON, the wrong schema type, stale prices and markup that describes content absent from the page. Review markup has additional rules: Google does not award self-serving LocalBusiness or Organization review stars. Genuine product reviews follow a different policy. See reviews and ratings for AI agents before adding aggregate ratings.
Validate before you trust it#
Test the published URL with Google's Rich Results Test for supported search features, and with the Schema.org validator for vocabulary and syntax. Inspect both the initial HTML and rendered page if scripts add the data. A successful test in one tool does not mean every crawler can access the same response.
Inspect the structured data on your site
The Nexez scanner extracts public JSON-LD and checks the business information it can find. Use its report to locate gaps, then compare the extracted facts with your current pages and checkout.
Scan your site freeWhere JSON-LD stops#
Structured data describes an offer; it does not reserve stock or create an appointment. Those actions need a supported transaction flow, whether through a website, API or connected MCP tool. Read what an MCP server does when you are ready to connect live actions.
Adapt the examples to your own pages and remove fields that do not apply. If your platform generates markup, check its output rather than assuming it is complete. Nexez generates supported structured data from listing information, which reduces duplicate editing but still depends on accurate source data.
Publish consistent business information
See how Nexez uses listing data to produce public pages, structured data and supported discovery resources. Start with the information your customers need to choose and book an offer.
See how it worksFrequently asked questions
What is JSON-LD in simple terms?
JSON-LD is a way to publish structured data in a web page. Using Schema.org terms, it can identify a business, service, price or product explicitly. Supporting systems can parse those facts, but the markup itself does not verify that they are correct.
Does JSON-LD actually help with AI visibility?
It can help supporting systems understand page content, and Google documents its use in Search. There is no universal citation multiplier or guaranteed AI ranking benefit. Accurate visible content, accessible pages and consistent business information remain essential.
Where do I put JSON-LD on my website?
In a script tag with type application/ld+json, conventionally in the head, on the page the data describes: LocalBusiness on your homepage or contact page, each Service or Product block on its own page, FAQPage on your questions page. Marking up only the homepage is a common mistake; the deeper pages are the ones that answer specific queries.
Do I need a plugin or can I write JSON-LD by hand?
Either can work. Hand-written markup is manageable for a small number of stable facts. Generate changing prices and availability from your maintained data where possible, then test the published output. Plugins and shared data sources can still produce errors or stale cached values.
Which schema types should a small business start with?
Start with Organization or an appropriate LocalBusiness subtype for identity. Add Service and Offer for service pages, or Product and Offer for product pages. FAQPage is optional for visible questions and answers; it no longer produces Google's former FAQ rich result.
Can I add review or rating markup for my own business?
Google treats self-serving LocalBusiness and Organization review markup as ineligible for review stars. That is a search eligibility rule, not a claim that every rating field is invalid Schema.org. Genuine product reviews have different requirements. Use only accurate review data and check the relevant feature policy.
Can wrong structured data hurt me?
Yes. Misleading markup can make a page ineligible for search features, and stale facts may be picked up by other systems. Validate the syntax and compare the values with your visible page and checkout. A scanner can identify fields; it cannot establish their truth on its own.
Keep reading
Reviews and AI visibility: business ratings, product reviews and schema
Reviews help customers evaluate your business, but Google’s rules differ for business ratings and product reviews.
7 min readAgent readinessAI readiness study: what we found on 652 small-business websites
We checked 652 small-business websites across five industries for public access, structured information and selected agent-discovery files.
9 min readAgent readinessGenerative engine optimization: a practical GEO guide
GEO aims to improve how your business appears in AI-generated answers.
7 min read