Structured data is one of the highest-leverage technical improvements you can make for AI visibility. It tells AI systems — and search engines — exactly what your business is, where it operates, what it offers, and how it's rated, in a precise machine-readable format.
Most businesses rely on AI inferring their details from unstructured text. Businesses with schema markup give AI an explicit, authoritative declaration of their identity. The difference is measurable in how confidently AI systems recommend them.
This guide walks through exactly how to implement JSON-LD schema for maximum AI visibility impact.
What Is JSON-LD Schema?
JSON-LD (JavaScript Object Notation for Linked Data) is the recommended format for schema markup — a structured vocabulary that search engines and AI systems understand. It's defined by Schema.org, a collaborative maintained by Google, Microsoft, Yahoo, and Yandex.
You add JSON-LD to your web pages inside a <script> tag. It's invisible to users but readable by machines.
A basic example for a local business:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Acme Services",
"telephone": "+15125550100",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main St",
"addressLocality": "Austin",
"addressRegion": "TX",
"postalCode": "78701",
"addressCountry": "US"
}
}
</script>
Why Schema Matters for AI Specifically
Traditional SEO benefits from schema (rich results, knowledge panels), but for AI visibility the impact is even more significant:
- Precision over inference: AI systems are pattern matchers that synthesize text. Schema removes ambiguity — "this is a
Dentistat this address" vs. trying to infer it from page copy - Entity disambiguation: Multiple businesses with similar names become distinct entities when each has clear, unique structured data
- Category association: Your
@typedirectly tells AI what kind of business you are, which maps to category-specific recommendation queries - FAQ surfaces:
FAQPageschema makes your Q&A content directly parseable — AI systems can incorporate your answers into their responses
The Four Schema Types That Matter Most
1. LocalBusiness (or Specific Subtype)
This is the foundation. Always use the most specific business type available rather than the generic LocalBusiness:
| Business Type | Schema Type |
|---|---|
| Restaurant | Restaurant |
| Dentist | Dentist |
| Doctor | Physician |
| Lawyer | Attorney |
| Plumber | Plumber |
| Electrician | Electrician |
| Hotel | Hotel |
| Gym | SportsActivityLocation or HealthClub |
| General business | LocalBusiness (fallback) |
Full LocalBusiness implementation:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Your Business Name",
"url": "https://yourbusiness.com",
"logo": "https://yourbusiness.com/logo.png",
"image": "https://yourbusiness.com/storefront.jpg",
"description": "Brief, accurate description of what you do and where.",
"telephone": "+15125550100",
"email": "hello@yourbusiness.com",
"priceRange": "$$",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main St Suite 100",
"addressLocality": "Austin",
"addressRegion": "TX",
"postalCode": "78701",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 30.2672,
"longitude": -97.7431
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "09:00",
"closes": "18:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday",
"opens": "10:00",
"closes": "15:00"
}
],
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "127",
"bestRating": "5",
"worstRating": "1"
},
"sameAs": [
"https://www.google.com/maps?cid=YOUR_CID",
"https://www.yelp.com/biz/your-business",
"https://www.facebook.com/yourbusiness",
"https://www.linkedin.com/company/yourbusiness"
]
}
</script>
The sameAs field is important for AI. It links your schema entity to your other authoritative profiles, helping AI systems connect the dots between your website and your other citations.
2. Organization
Organization schema works alongside LocalBusiness to establish your brand identity. Use it on your homepage and about page:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Your Business Name",
"url": "https://yourbusiness.com",
"logo": {
"@type": "ImageObject",
"url": "https://yourbusiness.com/logo.png",
"width": 200,
"height": 60
},
"foundingDate": "2018",
"description": "What your business does and why.",
"contactPoint": {
"@type": "ContactPoint",
"telephone": "+15125550100",
"contactType": "customer service",
"availableLanguage": "English"
},
"sameAs": [
"https://www.facebook.com/yourbusiness",
"https://www.linkedin.com/company/yourbusiness",
"https://twitter.com/yourbusiness"
]
}
</script>
3. FAQPage
FAQPage schema is one of the most valuable for AI visibility because it surfaces your content in a directly parseable format. AI systems can incorporate your FAQ answers into their responses verbatim.
Add this to any page with FAQ content:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "How long does a dental cleaning take?",
"acceptedAnswer": {
"@type": "Answer",
"text": "A routine dental cleaning typically takes 45-60 minutes for adults. This includes the cleaning itself, polishing, and a brief exam by the dentist."
}
},
{
"@type": "Question",
"name": "Do you accept dental insurance?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes, we accept most major dental insurance plans including Delta Dental, Cigna, Aetna, MetLife, and United Concordia. We also offer flexible payment plans for uninsured patients."
}
},
{
"@type": "Question",
"name": "Are you accepting new patients?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes, we welcome new patients. You can book your first appointment online or call us at 512-555-0100."
}
}
]
}
</script>
Make your FAQ answers specific and complete. Vague answers like "Yes, we do" are worthless. Complete answers that stand alone when AI pulls them are what you want.
4. Product or Service Schema
If you offer specific products or services that people search for by name, add individual schema for them:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Service",
"name": "Invisalign Clear Aligners",
"provider": {
"@type": "Dentist",
"name": "Bright Smile Dental",
"address": {
"@type": "PostalAddress",
"addressLocality": "Austin",
"addressRegion": "TX"
}
},
"description": "Custom clear aligner treatment for straightening teeth without traditional metal braces. Treatment typically takes 6-18 months.",
"areaServed": {
"@type": "City",
"name": "Austin"
},
"offers": {
"@type": "Offer",
"priceRange": "$3000-$6000"
}
}
</script>
Where to Add Schema on Your Site
| Schema Type | Where to Add |
|---|---|
| LocalBusiness | Homepage (minimum), contact page |
| Organization | Homepage, about page |
| FAQPage | Any FAQ page, service pages with Q&A, blog posts with Q&A sections |
| Service / Product | Individual service pages |
| Article | Blog posts and guides |
| BreadcrumbList | All interior pages |
Do not add the same schema block to every page indiscriminately — place it where it's contextually relevant.
How to Test Your Schema
Always validate your schema after implementation. Use these tools:
- Google's Rich Results Test — search.google.com/test/rich-results — checks if your schema is valid and eligible for Google rich results
- Schema.org Validator — validator.schema.org — validates against the Schema.org specification
- Google Search Console — after deployment, check the Enhancements section for any schema errors at scale
Common errors to watch for:
- Missing required fields (e.g.,
nameis required forLocalBusiness) - Incorrect value types (e.g.,
ratingValuemust be a number, not "4.8 stars") - URLs that return 404 errors
- Images that don't meet minimum size requirements
Implementation by Platform
WordPress: Use the Yoast SEO plugin (paid Local SEO extension) or Schema Pro plugin. Both add schema without manual coding.
Squarespace: Squarespace adds basic Organization schema automatically. For LocalBusiness and FAQPage schema, inject the JSON-LD via Settings > Advanced > Code Injection.
Wix: Add schema via the custom code panel (Settings > Custom Code). Add to <head> or <body> depending on page type.
Shopify: Add schema via the theme's layout/theme.liquid file or use an app like JSON-LD for SEO.
Custom HTML/React: Add the <script type="application/ld+json"> tag directly in your page's <head> or via a component.
Common Schema Mistakes to Avoid
- Using generic
LocalBusinesswhen a specific type exists — always be more specific - Inconsistent NAP in schema vs. other sources — your schema NAP must exactly match your Google Business Profile
- Outdated rating counts — if you're hardcoding
reviewCount, update it regularly - Missing
sameAslinks — these are critical for AI entity disambiguation - Not including schema on mobile pages — schema must be present on the indexed version of each page
- Keyword stuffing in descriptions — keep descriptions accurate and natural, not SEO-stuffed
After implementing schema, run a free Scope scan to see how the changes affect your AI visibility across ChatGPT, Claude, Gemini, and Perplexity. Schema improvements typically show measurable results within 4-8 weeks.
Q: Do I need to update my schema regularly?
A: Some fields need regular updates — particularly aggregateRating.reviewCount, hours if they change seasonally, and price ranges. Other fields like your address and @type only need updating if your business changes. Set a quarterly reminder to review your schema for accuracy.
Q: Does schema markup directly cause AI to recommend me? A: Schema markup is one input among many — it doesn't guarantee recommendations, but it significantly reduces the ambiguity that can prevent AI from confidently recommending a business. Think of it as giving AI a direct, authoritative briefing about your business rather than making it infer everything from your website text.
Q: My website is built on a platform I don't control. Can I still add schema? A: Most website platforms have some mechanism for adding custom code. For platforms with no code injection option, contact your platform provider or developer. At minimum, ensuring your profile pages on third-party platforms (Google, Yelp, etc.) are complete provides AI-readable structured signals even without website schema.