Skip to main content
Technical SEO 14 min read

Local Business Schema: The Complete Guide for Local SEO

Learn how to implement LocalBusiness structured data to boost your local search visibility, enhance Google Business Profile signals, and dominate local search results.

Part of our Structured Data Guide series

Chris Drinkard

Written by

14 years in hospitality management

5 years helping independent hotels grow their online presence. Passionate about AI, search, and digital strategy.

What is Local Business Schema?

Local Business schema is structured data markup that provides search engines with detailed information about your physical business location. It includes critical details like your business name, address, phone number (NAP), hours of operation, and services offered.

Key benefit: Local Business schema reinforces your Google Business Profile data and helps search engines confidently display your business in local results, map packs, and knowledge panels.

How Local Business Schema Helps SEO

NAP Consistency

Ensures your name, address, and phone match across your website, GBP, and citations—a critical local ranking factor.

Knowledge Panel Support

Provides structured data Google can use to populate knowledge panels for branded searches.

Rich Results

Can enable rich results showing hours, ratings, and price range directly in search results.

Voice Search

Helps voice assistants accurately answer questions about your business hours, location, and services.

Choosing the Right Schema Type

Schema.org provides many specific subtypes of LocalBusiness. Using the most specific type gives Google more context about your business:

Business Type Schema Type
Restaurant, Cafe, BarRestaurant, CafeOrCoffeeShop, BarOrPub
Retail StoreStore, ClothingStore, ElectronicsStore
Medical PracticeDentist, Physician, MedicalClinic
Legal ServicesAttorney, LegalService
Real EstateRealEstateAgent
Home ServicesPlumber, Electrician, HVAC Business
Auto ServicesAutoRepair, AutoDealer, GasStation
Hotel/LodgingHotel, Motel, BedAndBreakfast
FitnessHealthClub, SportsActivityLocation
Other/GenericLocalBusiness

View all LocalBusiness subtypes on Schema.org →

JSON-LD Implementation

Basic Local Business Schema

Here's a complete example with all recommended properties:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Restaurant",
  "name": "Joe's Coffee House",
  "image": "https://example.com/photos/storefront.jpg",
  "url": "https://example.com",
  "telephone": "+1-555-123-4567",
  "email": "[email protected]",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "123 Main Street",
    "addressLocality": "San Francisco",
    "addressRegion": "CA",
    "postalCode": "94102",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 37.7749,
    "longitude": -122.4194
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
      "opens": "07:00",
      "closes": "18:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Saturday", "Sunday"],
      "opens": "08:00",
      "closes": "16:00"
    }
  ],
  "priceRange": "$$",
  "servesCuisine": "Coffee, Pastries",
  "acceptsReservations": "False",
  "menu": "https://example.com/menu",
  "sameAs": [
    "https://facebook.com/joescoffee",
    "https://instagram.com/joescoffee",
    "https://yelp.com/biz/joes-coffee-sf"
  ]
}
</script>

Service Business Example

For service businesses that visit customers (plumbers, electricians, etc.):

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Plumber",
  "name": "Quick Fix Plumbing",
  "image": "https://example.com/logo.png",
  "url": "https://quickfixplumbing.com",
  "telephone": "+1-555-987-6543",
  "address": {
    "@type": "PostalAddress",
    "addressLocality": "Austin",
    "addressRegion": "TX",
    "postalCode": "78701",
    "addressCountry": "US"
  },
  "areaServed": {
    "@type": "City",
    "name": "Austin",
    "sameAs": "https://en.wikipedia.org/wiki/Austin,_Texas"
  },
  "priceRange": "$$",
  "openingHoursSpecification": {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
    "opens": "08:00",
    "closes": "18:00"
  },
  "hasOfferCatalog": {
    "@type": "OfferCatalog",
    "name": "Plumbing Services",
    "itemListElement": [
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "Emergency Plumbing"
        }
      },
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "Water Heater Installation"
        }
      }
    ]
  }
}
</script>

Required vs. Recommended Properties

Required (for rich results)

  • name - Business name
  • address - Full postal address

Highly Recommended

  • telephone
  • url - Website URL
  • openingHoursSpecification
  • geo - Coordinates
  • image
  • priceRange
  • sameAs - Social profiles

Multi-Location Businesses

If you have multiple locations, create a dedicated page for each location with its own Local Business schema:

Recommended Structure:

  • /locations/ - List of all locations
  • /locations/san-francisco/ - SF location page with SF schema
  • /locations/los-angeles/ - LA location page with LA schema
  • /locations/new-york/ - NYC location page with NYC schema

Each location page should have unique content about that specific location, not just a copy of the main page with a different address.

Important: Don't put multiple LocalBusiness schema blocks on a single page for different locations. Each location should have its own dedicated page.

Integration with Google Business Profile

Your Local Business schema should match your Google Business Profile exactly. Consistency is key:

Business Name

Exact match. No extra keywords, same capitalization.

Address

Same format: "123 Main St" or "123 Main Street" - pick one.

Phone Number

Use international format with country code.

Business Hours

Match GBP hours. Update both when hours change.

Common Mistakes to Avoid

1. NAP Inconsistency

Having different name, address, or phone formats across schema, GBP, and citations confuses search engines.

2. Using Generic LocalBusiness Type

When a more specific type exists (Restaurant, Dentist, etc.), using generic LocalBusiness provides less context.

3. Missing Coordinates

Without geo coordinates, Google may not accurately place your business on maps. Get exact lat/long from Google Maps.

4. Outdated Hours

Schema showing wrong hours hurts user experience and trust. Update when hours change, especially holidays.

5. Adding Schema to Every Page

Local Business schema should only be on relevant pages (contact, about, location pages), not blog posts.

Frequently Asked Questions

What is Local Business schema?

Local Business schema is structured data that provides search engines with detailed information about a business location, including name, address, phone number (NAP), hours of operation, geographic coordinates, and more. It helps Google understand and display your business in local search results and Maps.

Is Local Business schema the same as Google Business Profile?

No, they are complementary. Google Business Profile (GBP) is a separate listing you manage through Google. Local Business schema on your website reinforces and validates your GBP information, creating consistency that helps local SEO rankings.

Which Local Business schema type should I use?

Use the most specific type that matches your business. Schema.org has many subtypes like Restaurant, Dentist, Store, RealEstateAgent, etc. Using a specific type provides more context than the generic LocalBusiness type.

Does Local Business schema help with local pack rankings?

Local Business schema alone won't get you into the local pack, but it supports your local SEO efforts. Consistent NAP data across your website (with schema), GBP, and citations helps Google trust your business information, which can positively influence local rankings.

Should I add Local Business schema to every page?

No. Add Local Business schema only to relevant pages like your homepage, about page, contact page, and individual location pages. Don't add it to blog posts or product pages unless they specifically relate to that location.

How do I add schema for multiple business locations?

Create a separate Local Business schema block for each location. Each should have its own unique address, phone number, and coordinates. Ideally, each location should have its own dedicated page with that location's schema.

Validate Your Local Business Schema

Test your LocalBusiness markup to ensure Google can parse your NAP data correctly for local search results.