Local SEO GuideSchema Markup

LocalBusiness Schema

Implementing LocalBusiness structured data on your website

LocalBusiness is the core schema type for businesses with a physical location. This guide shows how to implement it properly.

Complete LocalBusiness Example

{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "Joe's Plumbing Services",
  "image": "https://www.joesplumbing.com/images/logo.png",
  "url": "https://www.joesplumbing.com",
  "telephone": "+1-312-555-1234",
  "email": "info@joesplumbing.com",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "123 Main Street, Suite 100",
    "addressLocality": "Chicago",
    "addressRegion": "IL",
    "postalCode": "60601",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 41.8781,
    "longitude": -87.6298
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
      "opens": "08:00",
      "closes": "18:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": "Saturday",
      "opens": "09:00",
      "closes": "14:00"
    }
  ],
  "priceRange": "$$",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.8",
    "reviewCount": "127"
  },
  "sameAs": [
    "https://www.facebook.com/joesplumbing",
    "https://twitter.com/joesplumbing",
    "https://www.yelp.com/biz/joes-plumbing-chicago"
  ]
}

Required Properties

@type

Must be "LocalBusiness" or a more specific subtype.

name

Your official business name, matching GBP exactly.

address

Complete postal address using PostalAddress type.

telephone

Phone number in international format: +1-555-123-4567

url

Your website homepage URL.

image

Logo or business image URL.

geo

Latitude and longitude coordinates.

openingHoursSpecification

Business hours in structured format.

priceRange

Price indicator: $, $$, $$$, or $$$$

Address Schema

"address": {
  "@type": "PostalAddress",
  "streetAddress": "123 Main Street, Suite 100",
  "addressLocality": "Chicago",
  "addressRegion": "IL",
  "postalCode": "60601",
  "addressCountry": "US"
}

Properties

  • streetAddress: Street and suite/unit
  • addressLocality: City
  • addressRegion: State (use abbreviation)
  • postalCode: ZIP code
  • addressCountry: Country code

Opening Hours Schema

"openingHoursSpecification": [
  {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
    "opens": "08:00",
    "closes": "18:00"
  }
]

Properties

  • dayOfWeek: Day(s) these hours apply
  • opens: Opening time (24-hour format)
  • closes: Closing time (24-hour format)

Closed Days

Don't include days you're closed, or explicitly set with no opens/closes.

Social Profiles (sameAs)

Link to your social profiles:

"sameAs": [
  "https://www.facebook.com/yourbusiness",
  "https://twitter.com/yourbusiness",
  "https://www.linkedin.com/company/yourbusiness",
  "https://www.instagram.com/yourbusiness"
]

Reviews Schema

If displaying reviews on your site:

"aggregateRating": {
  "@type": "AggregateRating",
  "ratingValue": "4.8",
  "reviewCount": "127",
  "bestRating": "5",
  "worstRating": "1"
}

Note: Only use if you have actual reviews on your website. Don't pull from Google.

Implementation Methods

Manual Addition

Add JSON-LD directly to your HTML:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "Your Business"
  ...
}
</script>

WordPress Plugins

Popular options:

  • Rank Math
  • Yoast SEO
  • Schema Pro

Page Builders

Many page builders have schema modules built in.

Multi-Location Schema

For businesses with multiple locations:

  • Each location page needs its own schema
  • Include specific address, phone, hours for each
  • Can nest under an Organization with multiple locations

Common Mistakes

Mismatched Information

Schema doesn't match GBP or website = confusion.

Missing Required Fields

Always include name and address minimum.

Fake Reviews

Don't add aggregateRating without actual reviews on your site.

Wrong @type

Use specific subtypes when available (Restaurant, not just LocalBusiness).

Key Takeaways

  1. Include all recommended properties
  2. Match GBP information exactly
  3. Use specific business types when available
  4. Include geo-coordinates
  5. Test after implementation

On this page