Clicky

The JSON-LD Markup Guide to Local Business Schema That Works

Your website shows up in search results…at the last page. Not because of any grand reason like your website being ugly or you don’t have reviews, but because Google literally can’t figure out what your business does or where you are.

JSON-LD schema markup fixes that. It’s code that tells Google exactly what your business is, where you are, when you’re open. All the basic information they need to show you to people looking for what you sell.

I’ve watched businesses go from invisible to booked solid just by adding this code. No redesign. No content overhaul. Just proper schema markup that works.

What Local Business Schema Does

Schema markup is structured data. Sounds fancy. It’s not.

It’s literally just telling Google “Hey, this is a dentist office. Here’s the address. Here’s the phone number. We’re open these hours.” Except in a format their robots understand.

Without it, Google has to guess what your business is based on whatever random text is on your page. With it, you’re handing them a perfectly organized fact sheet.

The difference shows up immediately in search results. Your listing can show star ratings, hours, phone numbers, even a map. All that extra info that makes people click instead of scrolling past.

I set this up for a restaurant last year. Their “restaurant near me” traffic tripled in two months. Not because they changed anything about their food or service. Just because Google finally understood what they were.

Why JSON-LD Beats Everything Else

Google officially prefers JSON-LD for structured data. They’ve said it repeatedly. Fighting that preference is stupid.

JSON-LD sits in your page’s code completely separate from your actual content. You’re not wrapping HTML tags around stuff or inserting weird attributes. Just a clean script that says what needs saying.

This matters because:

You can’t accidentally break your site’s appearance adding it
It loads faster than inline markup
You can update it without touching your HTML
Any decent developer can implement it in minutes

The alternative formats, Microdata and RDFa, require you to modify your actual HTML. Miss a closing tag and suddenly your whole page looks broken. JSON-LD avoids that completely.

The Properties That Matter

Most schema guides list every possible property you could include. That’s overwhelming and mostly useless.

Here’s what you need:

Name: Your exact business name. Not creative variations. What’s on your sign.

Address: Every component spelled out exactly how it appears on your Google Business Profile. Street address, city, state, postal code. No abbreviations unless that’s how you use them everywhere.

Phone: Your main number including area code. The one that gets answered.

Geographic coordinates: Your exact latitude and longitude. Right-click your location in Google Maps and copy the numbers. Use at least 5 decimal places or it’s not precise enough.

Hours: When you’re open. Not “by appointment” or “call for hours.” Specific days and times in 24-hour format.

Everything else is optional. Start with these five and you’re already ahead of 90% of your competitors.

Advanced Properties Worth Adding

Once the basics work, these properties can set you apart:

Logo: Direct link to your business logo image. Helps with brand recognition.

Description: One clear sentence about what you do. Not marketing fluff. What you do.

URL: Your website homepage. The full address, including https.

Social profiles: Links to your real social media accounts. Only include active ones.

Price range: Dollar signs indicating your general pricing. $ is cheap, $$$$ is expensive.

If you have legit customer reviews on your site (not fake testimonials), you can mark those up too. But only real reviews from actual customers. Google checks.

Choosing Your Business Type

Schema.org has dozens of business types. Using “LocalBusiness” for everything is lazy and less effective.

Be specific:

Restaurants use “Restaurant”
Dental offices use “Dentist”
Auto shops use “AutoRepair”
Retail stores use “Store”
Service businesses use “ProfessionalService”

Look up your industry on schema.org. Find the most specific type that accurately describes you. A pizza place should use “Restaurant” not “FoodEstablishment.” A chiropractor should use “MedicalBusiness” not “HealthAndBeautyBusiness.”

The more specific you are, the better Google understands your business. Which means showing up for the right searches.

Writing the Code

Here’s a real example for a dental office:

{

  "@context": "https://schema.org",

  "@type": "Dentist",

  "name": "Springfield Family Dental",

  "address": {

    "@type": "PostalAddress",

    "streetAddress": "742 Evergreen Terrace",

    "addressLocality": "Springfield",

    "addressRegion": "IL",

    "postalCode": "62701"

  },

  "telephone": "+1-217-555-0123",

  "geo": {

    "@type": "GeoCoordinates",

    "latitude": "39.78172",

    "longitude": "-89.64421"

  },

  "url": "https://springfieldfamilydental.com",

  "openingHoursSpecification": [

    {

      "@type": "OpeningHoursSpecification",

      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday"],

      "opens": "08:00",

      "closes": "17:00"

    },

    {

      "@type": "OpeningHoursSpecification",

      "dayOfWeek": "Friday",

      "opens": "08:00",

      "closes": "15:00"

    }

  ]

}

That’s it. That tells Google everything they need to show this dentist properly in local search results.

Multiple Locations Need Multiple Schemas

Got more than one location? Don’t try cramming everything into one schema object.

Use Organization schema for your main business, then separate LocalBusiness schemas for each location:

{

  "@context": "https://schema.org",

  "@type": "Organization",

  "name": "Bob's Auto Group",

  "subOrganization": [

    {

      "@type": "AutoRepair",

      "name": "Bob's Auto North",

      "address": {

        "@type": "PostalAddress",

        "streetAddress": "123 North St",

        "addressLocality": "Springfield",

        "addressRegion": "IL",

        "postalCode": "62701"

      }

    },

    {

      "@type": "AutoRepair", 

      "name": "Bob's Auto South",

      "address": {

        "@type": "PostalAddress",

        "streetAddress": "456 South Ave",

        "addressLocality": "Springfield",

        "addressRegion": "IL",

        "postalCode": "62702"

      }

    }

  ]

}

Each location gets its own complete information. Google can then show the right location for “auto repair near me” searches.

Where This Code Goes

Put your JSON-LD inside a script tag in your page’s head section:

<script type="application/ld+json">

{

  "@context": "https://schema.org",

  "@type": "YourBusinessType",

  ...

}

</script>

For single location businesses, this goes on your homepage. Multiple locations? Put location-specific schema on each location’s page.

Critical rule: Only mark up information that’s visible on that page. If your hours aren’t shown on the page, don’t include them in schema. Google checks and penalizes mismatches.

Testing Your Schema

Before going live, test your markup. Google has a Rich Results Test tool. Use it.

Paste your code or URL. Look for:

Errors (red): Fix these immediately or your schema won’t work
Warnings (yellow): Worth fixing but not critical
Valid items (green): What Google successfully understood

Common mistakes:

Missing commas between properties
Wrong date/time formats
Marking up info that’s not on the page
Using the wrong business type
Forgetting required fields

The tool shows exactly what’s wrong. Fix it, test again, repeat until clean.

Service Area Businesses Are Different

Mobile businesses (plumbers, house cleaners, delivery services) need different markup. You’re not trying to get people to visit your office. You go to them.

Use this structure:

{

  "@context": "https://schema.org",

  "@type": "ProfessionalService",

  "name": "Mike's Plumbing",

  "areaServed": {

    "@type": "City",

    "name": "Springfield"

  },

  "geo": {

    "@type": "GeoCoordinates",

    "latitude": "39.78172",

    "longitude": "-89.64421"

  },

  "address": {

    "@type": "PostalAddress",

    "addressLocality": "Springfield",

    "addressRegion": "IL"

  }

}

You’re defining your service area, not encouraging visits to your location. This helps you show up for “plumber near me” searches throughout your service area, not just near your office.

Advanced Tricks That Work

Once basic schema works, expand strategically.

Add FAQ schema for common questions. Product schema for what you sell. Event schema for classes or workshops. Review schema for testimonials (real ones only).

You can also use multiple types. A restaurant that’s also a bar? Use both:

{

  "@context": "https://schema.org",

  "@type": ["Restaurant", "Bar"],

  "name": "Joe's Bar & Grill"

}

Monitor performance in Google Search Console. Watch for rich result impressions and clicks. If you’re not seeing them after a month, something’s wrong with your implementation.

Making This Happen

Schema markup isn’t going to win you design awards. But it works.

I’ve seen struggling businesses become the default choice in their area just by implementing proper schema because Google finally understood what they do.

The businesses crushing local search aren’t necessarily the best. They’re the ones Google understands. Schema markup is how you join that club.

Start simple. Name, address, phone, coordinates, hours. Get those live and tested. Then add more properties as needed.

Your customers are searching for businesses like yours right now. Make sure Google knows you’re the answer to their search.

Stop reading about it. Go implement it. Today.

Leave a Comment

Your email address will not be published. Required fields are marked *