LocalBusiness Schema: The Complete Copy-Paste Template With Every Field Explained

If you run a local business and you only ever implement one type of schema markup, make it LocalBusiness. The reason is simple: LocalBusiness schema is the structured declaration of who you are, where you are, and how customers can reach you -- which is the exact information that Google, Bing, Apple Maps, and increasingly AI search tools need to recommend your business to potential customers. Getting this right is not an optimization; it is a prerequisite.

This post walks through LocalBusiness schema from beginning to end. Every field, every sub-type, every common mistake. By the time you finish reading, you will be able to implement correct LocalBusiness schema on your site regardless of your platform, and you will understand what each field does and why it matters.

This post is part of the Schema Markup Guide hub. If you are entirely new to schema, start with our beginner's guide to schema markup first and come back.

The Complete Template

Here is a complete, working LocalBusiness schema template. Copy this, adapt it to your business, and you will have a valid implementation.

{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "@id": "https://yourdomain.com/#business",
  "name": "Your Business Name",
  "image": "https://yourdomain.com/images/storefront.jpg",
  "logo": "https://yourdomain.com/images/logo.png",
  "url": "https://yourdomain.com",
  "telephone": "+39 059 123456",
  "email": "info@yourdomain.com",
  "priceRange": "€€",
  "description": "A one-sentence description of what the business does and for whom.",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "123 Via Roma",
    "addressLocality": "Modena",
    "addressRegion": "MO",
    "postalCode": "41121",
    "addressCountry": "IT"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 44.6471,
    "longitude": 10.9252
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
      "opens": "08:00",
      "closes": "18:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": "Saturday",
      "opens": "09:00",
      "closes": "13:00"
    }
  ],
  "sameAs": [
    "https://www.facebook.com/yourbusiness",
    "https://www.instagram.com/yourbusiness",
    "https://www.linkedin.com/company/yourbusiness"
  ],
  "areaServed": {
    "@type": "City",
    "name": "Modena"
  }
}

Place this inside a <script type="application/ld+json"> tag in your HTML, typically in the <head> section. On WordPress, Shopify, or similar platforms, your SEO plugin will generate this automatically based on your site settings -- you do not need to add it manually.

Every Field, Explained

Let me walk through each field, so you understand what to put where and why.

@context and @type

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

These two lines identify the schema vocabulary (Schema.org) and the specific type (LocalBusiness). Every schema block needs them. They are not negotiable, and you do not need to change them.

The @type field, however, can be something more specific than LocalBusiness. See the section below on sub-types -- using a specific sub-type like Restaurant or Dentist instead of the generic LocalBusiness is almost always better.

@id

"@id": "https://yourdomain.com/#business"

This field is technically optional but strongly recommended. It gives your business entity a unique identifier that search engines can use to connect this schema to other schema blocks on other pages. The convention is to use your domain followed by #business or #organization.

The @id allows you to reference the same business entity across multiple pages without duplicating all the information. Advanced, but worth setting up.

name

"name": "Your Business Name"

Your exact business name as it appears on your signage, your Google Business Profile, and your legal documents. Consistency matters. If your Google Business Profile says "Rossi's Plumbing" and your schema says "Rossi Plumbing & Heating," you are confusing search engines about which entity you are. Pick one canonical form and use it everywhere.

Do NOT add keyword stuffing like "Rossi's Plumbing - Best Plumber in Modena, Emergency Service, 24/7." This is a common mistake and violates Google's guidelines.

image and logo

"image": "https://yourdomain.com/images/storefront.jpg",
"logo": "https://yourdomain.com/images/logo.png"

image should be a high-quality photo of your business -- ideally the storefront or exterior for retail businesses, or a characteristic image for service businesses. Minimum 1200x630 pixels, and the URL must be an absolute URL (starting with https://).

logo is your brand logo, typically a PNG with transparent background. Used by Google for knowledge panel display and brand recognition.

Both should match the images you use on your Google Business Profile for consistency.

url

"url": "https://yourdomain.com"

Your website's canonical homepage URL. Include the protocol (https://) and the www or non-www version, whichever is your canonical form. Do not include a trailing slash unless your canonical URLs include one.

telephone and email

"telephone": "+39 059 123456",
"email": "info@yourdomain.com"

Your primary business phone number in international format. The + symbol and country code matter -- this is the format search engines prefer. US businesses: +1 555 123 4567. UK: +44 20 1234 5678. Italy: +39 059 123456.

Email is optional but recommended. Use a business address, not a personal one.

priceRange

"priceRange": "€€"

A rough indication of your price tier. Use the currency symbol 1-4 times: for budget, €€ for moderate, €€€ for expensive, €€€€ for luxury. For non-European markets, substitute the local currency symbol. This field is sometimes displayed in knowledge panels and helps search engines categorize your business.

description

"description": "A one-sentence description of what the business does and for whom."

One or two sentences describing your business. Avoid marketing language -- this is a descriptive field, not a promotional one. "A family-owned plumbing company serving Modena and the surrounding area since 1987" is better than "The best plumbers you will ever hire, guaranteed satisfaction."

address (nested PostalAddress)

"address": {
  "@type": "PostalAddress",
  "streetAddress": "123 Via Roma",
  "addressLocality": "Modena",
  "addressRegion": "MO",
  "postalCode": "41121",
  "addressCountry": "IT"
}

Your physical address, structured as a nested PostalAddress object. Every field is important:

  • streetAddress: The street name and number
  • addressLocality: The city or town
  • addressRegion: The state, region, or province (use the official abbreviation)
  • postalCode: The postal/ZIP code
  • addressCountry: The ISO 3166-1 alpha-2 country code (US, IT, GB, etc.)

These fields must match exactly what appears on your Google Business Profile. Any inconsistency creates NAP (Name-Address-Phone) mismatches that hurt local ranking.

geo (nested GeoCoordinates)

"geo": {
  "@type": "GeoCoordinates",
  "latitude": 44.6471,
  "longitude": 10.9252
}

The exact latitude and longitude of your business. Critical for appearing in "near me" searches and on maps. Get your coordinates from Google Maps (right-click your business pin, and the coordinates appear) or from your Google Business Profile.

Use decimal format, not degrees/minutes/seconds. Six decimal places is more than enough precision.

openingHoursSpecification

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

An array of OpeningHoursSpecification objects, each describing a consistent pattern. The example above says "Monday-Friday 8am-6pm, Saturday 9am-1pm, closed Sunday."

dayOfWeek can be a single day or an array of days. opens and closes use 24-hour format. Closed days are simply omitted.

For businesses with complex schedules (different hours by season, holidays, etc.), Google Business Profile is actually the better place to manage this -- it feeds into search results more directly and is easier to update.

sameAs

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

An array of URLs to your business's official profiles on other sites -- social media, Yelp, Wikipedia if applicable, trade association pages. This is how you tell search engines "this business, over here, is the same business as the one on these other sites." It helps build your entity graph and reinforces your brand identity.

areaServed

"areaServed": {
  "@type": "City",
  "name": "Modena"
}

The geographic area your business serves. For a brick-and-mortar business, this is typically the city or region where you are located. For a service-area business that travels to customers, this can be broader (a list of cities or a geographic region).

The Sub-Types That Make Your Schema More Specific

Schema.org defines specific sub-types of LocalBusiness for many common business categories. Using a specific sub-type instead of the generic LocalBusiness is almost always better -- it gives search engines more precise information about what you do.

Common sub-types:

  • Restaurant (with Bakery, BarOrPub, CafeOrCoffeeShop, FastFoodRestaurant, IceCreamShop, and others as further sub-types)
  • MedicalBusiness (with Dentist, Physician, Optician, Pharmacy, and more)
  • ProfessionalService (with AccountingService, Attorney, Electrician, Plumber, Notary, and more)
  • Store (with ClothingStore, FurnitureStore, HardwareStore, etc.)
  • AutomotiveBusiness (with AutoBodyShop, AutoDealer, AutoRepair, GasStation)
  • EmergencyService (for services like emergency plumbers, 24/7 veterinarians)
  • Hotel, Campground, BedAndBreakfast
  • ExerciseGym, SportsClub, DayCare
  • HairSalon, BeautySalon, NailSalon
  • FinancialService, InsuranceAgency, RealEstateAgent
  • TravelAgency
  • LegalService

For a full list, check Schema.org's LocalBusiness hierarchy directly. Pick the most specific type that describes your business. For a plumber, use "@type": "Plumber" (or its parent ProfessionalService), not the generic LocalBusiness.

Example for a dentist:

{
  "@context": "https://schema.org",
  "@type": "Dentist",
  "name": "Modena Dental Care",
  ...
}

The rest of the fields work identically. Only @type changes.

Common Mistakes and How to Avoid Them

Mistake 1: Schema that does not match visible content. Your schema declares one address but your Contact page shows a different address. This is the single most common problem. Fix: audit regularly.

Mistake 2: Missing geo coordinates. Many schema implementations include the address but omit the GeoCoordinates block. Coordinates are critical for local map results. Always include them.

Mistake 3: Inconsistent NAP across schema, GBP, and website. Your schema says "Suite 200," your GBP says "#200," your website footer says "Unit 200." Pick one format and use it everywhere.

Mistake 4: Generic LocalBusiness instead of specific sub-type. As discussed, always use the most specific type available.

Mistake 5: Keyword stuffing in the name field. "Rossi Plumbing - Best Plumber Modena - Emergency 24/7" is a Google guidelines violation. Use your actual business name only.

Mistake 6: Broken image URLs. Your schema references images that have moved or been deleted. Google will warn about this in Search Console. Fix the URLs or remove them.

Mistake 7: Using relative URLs. Always use absolute URLs (starting with https://) in schema, never relative paths.

Testing Your Schema

Three free tools to verify your schema:

  1. Rich Results Test (search.google.com/test/rich-results): Paste your page URL and confirm LocalBusiness schema is detected.
  1. Schema Markup Validator (validator.schema.org): Technical validation against the Schema.org vocabulary.
  1. Google Search Console Enhancements: Once live, check the Enhancements reports for any errors Google detects.

Run all three before assuming your schema is working correctly.

What Happens After You Implement This

Within a few days, Google will typically re-crawl your homepage and start processing the schema. Within a few weeks, you may see your knowledge panel become more complete in search results -- with hours, reviews, and the map integration appearing automatically. Within a few months, if everything else on your site is in order, you should see improved visibility in local pack results.

Schema is not a magic ranking boost by itself. It is a prerequisite that lets everything else you do work better. Without it, you are competing with one hand tied behind your back.

Related Resources

And as always, if you want to know whether your current schema is correctly implemented, run the free Licheo audit. It tests for schema validity, NAP consistency, and the other signals that matter for local search. Thirty seconds, no account required.