What JSON-LD actually is
JSON-LD stands for JavaScript Object Notation for Linked Data. It's a specific way of writing structured information that AI systems, search engines, and other machines can read reliably.
The "Linked Data" part is important. JSON-LD doesn't just describe your business — it links your business to a shared vocabulary of concepts that every major AI system understands. That vocabulary is called Schema.org, and it's maintained by Google, Microsoft, Yahoo, and Yandex.
When your website includes JSON-LD schema, you're essentially saying to every AI system: "Here is exactly what my business is, using the same definitions you already know."
Why JSON-LD and not other formats
There are three ways to add structured data to a website: JSON-LD, Microdata, and RDFa. Google recommends JSON-LD for all new implementations, and it's the format that ChatGPT, Perplexity, and Google's AI Overview rely on most heavily.
The reason is practical: JSON-LD sits in a separate block in your page's <head> section. It doesn't mix with your visible content, which means it's easier to add, easier to update, and less likely to break your design. Microdata and RDFa require you to annotate your HTML directly, which is more error-prone and harder to maintain.
What JSON-LD looks like for a local business
Here's a real example of JSON-LD schema for an HVAC company:
{
"@context": "https://schema.org",
"@type": "HVACBusiness",
"name": "Chicago Climate Control",
"url": "https://chicagoclimatecontrol.com",
"telephone": "+1-312-555-0200",
"email": "[email protected]",
"address": {
"@type": "PostalAddress",
"streetAddress": "456 Oak Ave",
"addressLocality": "Chicago",
"addressRegion": "IL",
"postalCode": "60614"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 41.9242,
"longitude": -87.6484
},
"areaServed": [
{"@type": "City", "name": "Chicago"},
{"@type": "City", "name": "Evanston"},
{"@type": "City", "name": "Naperville"}
],
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
"opens": "07:00",
"closes": "19:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Saturday"],
"opens": "08:00",
"closes": "16:00"
}
],
"hasOfferCatalog": {
"@type": "OfferCatalog",
"name": "HVAC Services",
"itemListElement": [
{"@type": "Offer", "itemOffered": {"@type": "Service", "name": "AC Installation"}},
{"@type": "Offer", "itemOffered": {"@type": "Service", "name": "Furnace Repair"}},
{"@type": "Offer", "itemOffered": {"@type": "Service", "name": "Emergency HVAC"}}
]
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "127"
}
}
{
"@context": "https://schema.org",
"@type": "HVACBusiness",
"name": "Chicago Climate Control",
"url": "https://chicagoclimatecontrol.com",
"telephone": "+1-312-555-0200",
"email": "[email protected]",
"address": {
"@type": "PostalAddress",
"streetAddress": "456 Oak Ave",
"addressLocality": "Chicago",
"addressRegion": "IL",
"postalCode": "60614"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 41.9242,
"longitude": -87.6484
},
"areaServed": [
{"@type": "City", "name": "Chicago"},
{"@type": "City", "name": "Evanston"},
{"@type": "City", "name": "Naperville"}
],
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
"opens": "07:00",
"closes": "19:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Saturday"],
"opens": "08:00",
"closes": "16:00"
}
],
"hasOfferCatalog": {
"@type": "OfferCatalog",
"name": "HVAC Services",
"itemListElement": [
{"@type": "Offer", "itemOffered": {"@type": "Service", "name": "AC Installation"}},
{"@type": "Offer", "itemOffered": {"@type": "Service", "name": "Furnace Repair"}},
{"@type": "Offer", "itemOffered": {"@type": "Service", "name": "Emergency HVAC"}}
]
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "127"
}
}
When an AI system reads this, it has a complete, unambiguous picture of the business: what type it is, where it's located, what areas it serves, when it's open, what services it offers, and how customers have rated it.
How this affects AI recommendations
AI systems that generate local recommendations — ChatGPT, Perplexity, Google's AI Overview — are essentially answering the question: "Which business in this area can I confidently recommend for this specific need?"
Confidence comes from data. A business with complete JSON-LD schema gives the AI system everything it needs to be confident. A business without it requires the AI to infer details from unstructured text — and AI systems are conservative. When they're uncertain, they recommend the business they're most certain about.
This is why JSON-LD schema is the single most impactful technical change you can make to a local service business website. It doesn't guarantee AI recommendations, but without it, you're competing with one hand tied behind your back.
The most important schema types for tradespeople
Schema.org has hundreds of types, but for a local service business, these are the ones that matter:
| Schema Type | What It Does | Priority |
|---|---|---|
| LocalBusiness / specific trade type | Identifies your business category | Essential |
| PostalAddress | Confirms your physical location | Essential |
| GeoCoordinates | Pins your location precisely | High |
| areaServed | Lists the cities/areas you serve | High |
| hasOfferCatalog | Lists your specific services | High |
| openingHoursSpecification | Confirms your hours | High |
| aggregateRating | Shows your review score | Medium |
| FAQPage | Marks up Q&A content | Medium |
The specific business type matters. Schema.org has dedicated types for Plumber, Electrician, HVACBusiness, Locksmith, RoofingContractor, and many others. Using the specific type rather than the generic LocalBusiness type gives AI systems more confidence in what your business does.
What happens if the schema has errors
Invalid JSON-LD is silently ignored. If there's a syntax error, a missing required field, or an incorrect type, the schema is simply not processed — and your site behaves as if it has no structured data at all.
This is why implementation quality matters. Adding schema markup incorrectly is not better than not having it. You can check your schema using Google's Rich Results Test at search.google.com/test/rich-results.
Frequently asked questions
Does JSON-LD schema directly improve my Google ranking? Not directly for traditional search rankings. However, it significantly affects your eligibility for Google's rich results (star ratings, FAQ dropdowns in search results) and for Google's AI Overview recommendations.
How often should I update my schema? Update it whenever your business information changes: new services, new service areas, changed hours, new phone number. Outdated schema can actively hurt you — if the AI recommends you based on schema that says you're open on Sundays but you're not, that's a bad experience for the customer.
Can I have multiple JSON-LD blocks on one page? Yes. It's common to have a LocalBusiness block on every page and an additional Service or FAQPage block on specific pages. Each block is processed independently.
What's the difference between JSON-LD and Open Graph? Open Graph tags (og:title, og:description, og:image) are for social media sharing — they control how your page looks when shared on Facebook, LinkedIn, or WhatsApp. JSON-LD schema is for AI systems and search engines. Both are important, but they serve different purposes.
Related reading
- What is schema markup and why does it matter?
- How to get your local business into Google AI Overview
- What is an AI-ready website?
If you want to see what an AI-ready site would look like for your business, get a free preview — we build the preview first, you only pay if you like it.
