All posts
SEO Basics·6 min read·July 12, 2026

LocalBusiness Schema: Complete Guide + Generator

LocalBusiness schema tells Google your hours, address, phone number, and reviews — and unlocks the map-pack and knowledge-panel results that drive local customers. Here's how to write it correctly.

TC
Written by Tyler C., founder

What LocalBusiness schema does

LocalBusiness is a schema.org type that tells Google, explicitly, the facts about your physical or service-area business: name, address, phone number, hours, price range, and (if you have them) aggregate ratings. It's the structured-data foundation behind the local knowledge panel, map-pack listings, and rich local search results — the difference between Google guessing your hours from your homepage text and Google displaying them with confidence directly in search results.

If you run a plumbing company, a dental practice, a restaurant, a salon, or any business that serves customers in a specific area, this is one of the highest-leverage pieces of schema you can add — arguably more impactful than generic Organization markup, which LocalBusiness effectively extends with location- and service-specific fields.

The core LocalBusiness JSON-LD

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "Joe's Diner",
  "image": "https://joesdiner.com/storefront.jpg",
  "@id": "https://joesdiner.com",
  "url": "https://joesdiner.com",
  "telephone": "+1-555-123-4567",
  "priceRange": "$$",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "123 Main St",
    "addressLocality": "Austin",
    "addressRegion": "TX",
    "postalCode": "78701",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 30.2672,
    "longitude": -97.7431
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
      "opens": "11:00",
      "closes": "22:00"
    }
  ],
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.7",
    "reviewCount": "230"
  }
}
</script>

Every field above is optional except @type, name, and address — but the more you fill in accurately, the more of the local rich-result surface you become eligible for.

Field-by-field notes

  • @type — use a more specific subtype when one exists instead of the generic LocalBusiness: Restaurant, Dentist, Plumber, HairSalon, AutoRepair, and dozens more are all valid schema.org types that inherit LocalBusiness's fields while telling Google more precisely what kind of business you are.
  • @id — a stable identifier (usually your canonical URL) that lets Google connect this entity across your Organization schema, your Google Business Profile, and any mentions elsewhere. Keep it consistent everywhere you reference this business.
  • priceRange — a rough indicator like $, $$, or $$$, or an explicit range like $10-$30. Helps set searcher expectations before they click.
  • geo — latitude/longitude. Not strictly required if your address is unambiguous, but it removes any geocoding guesswork and is cheap to add if you know your coordinates.
  • openingHoursSpecification — use the structured array format shown above, not a free-text string. Multiple entries let you express different hours for different day groups (e.g., shorter Saturday hours, closed Sunday).
  • aggregateRating — only include this if you have a genuine review system feeding real numbers. Schema.org's guidelines (and Google's own policies) prohibit fabricated or self-assigned ratings; misuse here is a manual-action risk, not a growth hack.
See this in action on your own site

Paste your URL for a free, instant SEO check — no signup required.

Multiple locations? Use one LocalBusiness block per address

If you have several physical locations, each location gets its own LocalBusiness block on its own dedicated location page — not one combined block trying to represent all addresses at once, and not one block per location crammed onto a single page. Google's local ranking is inherently per-location; your schema structure should mirror that.

How this relates to your Google Business Profile

LocalBusiness schema and your Google Business Profile are two separate systems that should describe the same facts consistently. Schema markup feeds Google's structured understanding of your website; your Business Profile is the free listing you manage directly in Google's local ecosystem. Mismatched hours, addresses, or phone numbers between the two are a real (if soft) trust signal problem — keep them identical. If you haven't set up your profile yet, that's covered as step one in our small business SEO guide.

Generate it automatically

Writing this by hand for one location is a ten-minute job; writing it correctly for ten locations, or getting the nested address/geo/openingHoursSpecification objects right without a validator, is where most sites make mistakes. Peak Visibility generates schema markup matched to your actual page content — including LocalBusiness and its more specific subtypes — as part of a full scan. Running WordPress? See our WordPress-specific guide for exactly where to paste the generated JSON-LD.

FAQ

Do I need LocalBusiness schema if I already have a Google Business Profile?

Yes — they serve different purposes. Your Business Profile is Google's own local listing system; LocalBusiness schema is what your website tells any search engine or AI system about your business independently. Having both, consistent with each other, is stronger than either alone.

What LocalBusiness subtype should I use?

The most specific one that accurately describes your business. Check schema.org's LocalBusiness hierarchy for your industry — a restaurant should use Restaurant, not the generic LocalBusiness, since the specific type unlocks additional relevant properties (like servesCuisine or menu).

Can I add fake reviews to boost my aggregateRating?

No — this violates both schema.org's structured data guidelines and Google's policies, and is treated as a manual-action risk, not a gray-area growth tactic. Only mark up ratings you can back with a real review system.

Does LocalBusiness schema guarantee I'll show up in the map pack?

No single factor guarantees map-pack placement — that's driven primarily by your Google Business Profile, proximity, relevance, and review signals. Schema markup supports and reinforces those signals; it doesn't override them.

Try Peak Visibility free

Paste your URL and get a complete SEO package — sitemap, schema, meta tags, robots.txt — in under 3 minutes. First 5 pages free.

More from the blog