ScanMyGEO

JSON-LD (JavaScript Object Notation for Linked Data) is the recommended way to add structured data to your business website. It tells AI engines and search engines exactly what your business is, where it's located, and what you offer — in a machine-readable format they parse natively.

Blog / JSON-LD for Local Businesses

JSON-LD for Local Businesses: The Complete Guide

By Bay Area Systems

If you want AI engines to recommend your business, they need to understand it first. JSON-LD structured data is the most direct way to give AI engines — Google's Gemini, ChatGPT, Perplexity, and others — a clear, machine-readable description of your business.

This guide covers everything you need to know: what JSON-LD is, how to create it, which fields matter for AI visibility, and the common mistakes that undermine your efforts.

What Is JSON-LD?

JSON-LD stands for JavaScript Object Notation for Linked Data. It's a standardized format recommended by Google for adding structured data to web pages. In practice, it's a block of code you place in your website's <head> section that describes your business using the schema.org vocabulary.

Here's why it matters: when an AI engine visits your website, it sees HTML, CSS, images, and text. It has to interpret all of that to figure out what your business does. JSON-LD eliminates the guesswork by providing explicit, structured facts the AI can read instantly.

A basic example for a plumbing business:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Plumber",
  "name": "Bay Area Plumbing Co.",
  "url": "https://bayareaplumbing.com",
  "telephone": "+1-408-555-1234",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "456 Oak Street",
    "addressLocality": "San Jose",
    "addressRegion": "CA",
    "postalCode": "95112",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 37.3382,
    "longitude": -121.8863
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
      "opens": "07:00",
      "closes": "19:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": "Saturday",
      "opens": "08:00",
      "closes": "17:00"
    }
  ],
  "priceRange": "$$",
  "areaServed": [
    { "@type": "City", "name": "San Jose" },
    { "@type": "City", "name": "Santa Clara" },
    { "@type": "City", "name": "Sunnyvale" }
  ],
  "description": "Licensed plumbing company serving San Jose and the South Bay since 2008. Specializing in emergency pipe repair, drain cleaning, and water heater installation. Available for same-day emergency service.",
  "foundingDate": "2008",
  "sameAs": [
    "https://www.yelp.com/biz/bay-area-plumbing-san-jose",
    "https://www.facebook.com/bayareaplumbingco"
  ]
}
</script>

This code block tells every AI engine that visits your site exactly what you are, where you are, when you're open, what areas you serve, and where else you exist online. No interpretation needed.

Choosing the Right Schema Type

The @type field is the most important choice in your JSON-LD. Schema.org defines hundreds of business types. Use the most specific type available for your business:

  • Restaurants: Restaurant (not FoodEstablishment)
  • Dentists: Dentist (not MedicalBusiness)
  • Plumbers: Plumber (not HomeAndConstructionBusiness)
  • Law firms: LegalService or Attorney
  • Real estate: RealEstateAgent
  • Accountants: AccountingService
  • Therapists: PsychologicalTreatment or MedicalBusiness
  • Auto repair: AutoRepair
  • Hair salons: HairSalon or BeautySalon

Using a specific type instead of the generic LocalBusiness helps AI match your business to more relevant queries. When someone asks "Find a dentist near me," AI engines specifically look for entities with @type: "Dentist".

Essential Fields for AI Visibility

Not all JSON-LD fields carry equal weight for AI visibility. Based on our analysis of businesses that score well in ScanMyGEO scans, these fields have the highest impact:

Must-Have Fields

name — Your exact business name, matching your Google Business Profile.

address — Full postal address with street, city, state, zip, and country.

telephone — In international format: +1-408-555-1234.

url — Your website URL.

openingHoursSpecification — Complete weekly hours. AI engines use this to answer "Is [business] open right now?" queries.

geo — Latitude and longitude coordinates. Critical for "near me" queries where AI needs to calculate proximity.

description — A detailed description of your business including specialties, service area, and differentiators. This is the text AI is most likely to quote directly.

High-Impact Fields

areaServed — List the cities and neighborhoods you serve. This directly maps to geographic queries.

priceRange — Helps AI answer "affordable" or "budget" queries.

sameAs — Links to your profiles on Yelp, Facebook, LinkedIn, industry directories. This helps AI verify your identity across sources.

foundingDate — Establishes how long you've been in business. AI values longevity as a trust signal.

hasOfferCatalog — List your specific services with descriptions and price ranges. This is one of the most powerful fields for matching service-specific queries.

Common JSON-LD Mistakes That Hurt AI Visibility

Using generic LocalBusiness type. As covered above, always use the most specific business type. LocalBusiness should be a last resort.

NAP mismatch with Google Business Profile. Your JSON-LD name, address, and phone must exactly match your GBP. Even small differences ("St." vs. "Street") can cause AI to treat them as different entities.

Missing geo coordinates. Without latitude and longitude, AI can't accurately place your business for proximity-based queries. Use Google Maps to find your exact coordinates.

Empty or vague description. "We provide quality service" tells AI nothing. Include your specialty, service area, years in business, and specific services.

Hardcoded hours that become outdated. If your JSON-LD says you're open until 9pm but you changed to 7pm six months ago, AI may recommend you based on incorrect hours. Keep this updated.

Placing JSON-LD only on the homepage. Your homepage schema should cover your overall business. Each service page should have its own additional schema relevant to that specific service.

Testing Your JSON-LD

After adding JSON-LD to your site, validate it using Google's Rich Results Test (search.google.com/test/rich-results) or Schema.org's validator (validator.schema.org). These tools verify that your code is syntactically correct and uses valid schema.org properties.

However, passing validation doesn't guarantee AI visibility. Validation confirms the code is correctly formatted — not that it contains the right information for AI to recommend you. That's what ScanMyGEO's AI visibility scan checks: whether AI engines actually mention your business when people search for your services.

Next Steps

Start with the basic LocalBusiness JSON-LD on your homepage. Match every field to your Google Business Profile. Then read our guide on advanced schema markup to learn about nested entities, FAQ schema, HowTo schema, and industry-specific extensions that further boost your AI visibility.

If you need help implementing structured data, our Fix It report includes a ready-to-paste JSON-LD block customized for your specific business, industry, and location.

Does Your Structured Data Actually Work?

Having JSON-LD isn't enough. Find out if AI engines actually recommend your business.

Scan My Business Free