Structured Data · Type Guide · Part 6

LocalBusiness Schema: Address, Hours & Local Search Results

~14 min read Updated 2026-06-24 MagicSEO Editors · Human Reviewed Type Guide

The most common misconception about local business markup is thinking that adding LocalBusiness structured data to your website guarantees inclusion in Google's map pack or local rankings. The reality is that local results are primarily driven by Google Business Profile, while structured data serves to help Google connect the dots between your website's business information—name, address, hours—and the physical establishment. Understanding this division of labor is key to using LocalBusiness where it actually matters.

What is LocalBusiness#

LocalBusiness is a Schema.org type describing physical business establishments—restaurants, stores, clinics, gyms, law firms, and more. It tells search engines: this is a local business with a specific address, operating hours, and contact information. Google may use this information to present business information more richly in search results, knowledge panels, and other features.

Official documentation: Google Search Central: Local business (LocalBusiness) structured data.

First, distinguish two thingsLocal rankings (map pack/local finder) are driven by Google Business Profile; LocalBusiness structured data on your website is a supplementary signal, not a switch for entering the local pack. Keep information consistent between both sources.

Division of Labor with Google Business Profile#

Google Business ProfileLocalBusiness Structured Data
WhereGoogle's business backendJSON-LD on your website pages
Primary PurposeDrives map pack, local finder, business panelHelps Google understand website-to-physical-location mapping
PriorityPrimary data source for local resultsSupplementary, corroborative, consistency
Can Self-RateReviews from real usersCannot self-rate stars

The correct sequence: first claim and optimize your Google Business Profile, then markup your corresponding location pages on your website with LocalBusiness using the same business name, address, phone, and hours—let both sources validate each other.

Required & Recommended Fields#

Google has minimal hard requirements for LocalBusiness—essentially just name and address; but for information to be genuinely useful, you should fill out nearly all recommended fields.

FieldRequiredDescription
nameRequiredBusiness name, consistent with signage and business profile
addressRequiredUse PostalAddress, break down address fields where possible
telephoneRecommendedContact phone with country code
openingHoursSpecificationRecommendedStructured operating hours, supports cross-day and special dates
geoRecommendedGeoCoordinates latitude/longitude
urlRecommendedOfficial URL for this location
imageRecommendedBusiness or product photos
priceRangeRecommendedPrice tier, e.g., $$

Complete JSON-LD Example#

Below is an example for a restaurant location page, using the more specific subtype Restaurant (which inherits from LocalBusiness).

local-business.json
{
  "@context": "https://schema.org",
  "@type": "Restaurant",
  "name": "Chenguang Noodle House · Wangjing Branch",
  "image": "https://example.com/photos/storefront.webp",
  "url": "https://example.com/stores/wangjing",
  "telephone": "+86-10-12345678",
  "priceRange": "$$",
  "servesCuisine": "Noodles",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "101, No. 1 Wangjing Street",
    "addressLocality": "Beijing",
    "addressRegion": "Beijing",
    "postalCode": "100102",
    "addressCountry": "CN"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 39.9968,
    "longitude": 116.4810
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
      "opens": "09:00",
      "closes": "21:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Saturday", "Sunday"],
      "opens": "10:00",
      "closes": "22:00"
    }
  ]
}

The page should display the same business name, address, phone, and hours visible to users—structured data is simply the machine-readable counterpart of this visible information.

Use More Specific Subtypes#

LocalBusiness has numerous subtypes—use the most specific type available rather than the generic LocalBusiness.

  • Restaurant, CafeOrCoffeeShop, BarOrPub: dining, can add servesCuisine, menu;
  • Store and its subclasses (ClothingStore, GroceryStore, etc.): retail;
  • MedicalBusiness, Dentist, LegalService: professional services;
  • LodgingBusiness, HealthClub, AutoRepair, and more.

The more specific the type, the better Google can understand what this business offers. If no exact subtype matches, fall back to LocalBusiness.

How to Write Opening Hours#

openingHoursSpecification is clearer than the old string format and can express special cases:

  • Cross-day hours (e.g., 22:00–02:00 next day): split into two segments or use appropriate opens/closes;
  • 24-hour operations: set both opens and closes to 00:00;
  • Holiday special hours: add entries with validFrom and validThrough;
  • Closed for the day: use opens and closes both 00:00 and do not cover that day, or follow official guidance for expressing closures.

How to Markup Multiple Locations#

Best practices for chains and multi-location brands:

  1. Create a separate, crawlable, indexable page for each location;
  2. Markup only that location's LocalBusiness on each page, using its own address, geo, phone, and hours;
  3. Do not mix multiple locations in a single structured data block;
  4. Use Organization on the main brand site to describe the enterprise as a whole (see Organization).

Do Not Self-Rate Stars#

The most common compliance trap for local businesses is embedding AggregateRating or Review pointing to themselves on their own website's LocalBusiness markup to artificially inflate ratings.

Self-serving reviews are无效Google explicitly excludes self-rated stars on pages controlled by the reviewed entity from the review snippet feature. Businesses should not markup their own pages with AggregateRating/Review. For boundaries, see Review Snippet.

Why This Site Doesn't Implement LocalBusiness#

MagicSEO is a content website, not a physical business—it has no street address or operating hours. Therefore, this page will not force-fit LocalBusiness markup purely for demonstration purposes.

This site's approachThis page continues to use Article, BreadcrumbList, and FAQPage—because its true identity is a tutorial article. Honestly marking only what you truly are is itself best practice for structured data.

Validation and Monitoring#

  1. Use Rich Results Test to check syntax and required fields.
  2. Verify that name, address, phone, and hours are consistent across three sources: page content, Google Business Profile, and structured data.
  3. Claim and optimize your Google Business Profile—this is the primary engine for local results.
  4. For multiple locations, check each page's structured data individually to ensure it points to the correct address.
  5. After launch, monitor invalid items in Search Console's relevant enhancement reports.

Common Mistakes#

MistakeWhy It's RiskyFix
Thinking markup guarantees map pack inclusionMisunderstanding local ranking mechanicsStart with Google Business Profile; structured data is supplementary
Writing address as a single stringHard to parse, prone to inconsistencyUse PostalAddress with broken-out fields
Self-rating starsIneligible for review snippet featureDo not markup own pages with AggregateRating/Review
Stuffing multiple locations on one pageCannot map to specific entitiesDedicated page and markup per location
Conflicting info between site and Business ProfileWeakens trust signalsUnify name, address, phone, hours across all three sources

LocalBusiness Launch Checklist#

  • Claimed and optimized Google Business Profile
  • name matches signage and business profile
  • address uses PostalAddress with broken-out fields
  • Include telephone, geo, url, image, priceRange where possible
  • openingHoursSpecification covers normal and special hours
  • Use most appropriate subtype (Restaurant, Store, etc.)
  • Multiple locations: separate page and markup per location
  • Do not self-rate stars on own pages
  • Page visible content matches JSON-LD
  • Rich Results Test passes with no critical errors

Frequently Asked Questions#

Does marking up LocalBusiness structured data guarantee inclusion in the local three-business map pack?

No, it does not directly guarantee inclusion. Local results (map pack, local finder) are primarily driven by Google Business Profile, while structured data helps Google better understand information about your business on your website—it is not a switch for entering the local pack. To improve local rankings, first claim and optimize your Google Business Profile, then use LocalBusiness markup to keep your website information consistent with your profile.

What fields are required for LocalBusiness?

Google's core requirements for LocalBusiness are name and address. Address should use PostalAddress and include streetAddress, addressLocality, addressRegion, postalCode, and addressCountry where possible. To display more information, supplement with recommended fields like telephone, openingHoursSpecification, geo, url, image, and priceRange.

Can local businesses display their own star ratings on their website?

No. Google explicitly excludes self-rated star ratings on pages controlled by the reviewed entity from the review snippet feature. Businesses should not embed AggregateRating or Review pointing to themselves on their own LocalBusiness pages to artificially inflate ratings—let genuine user reviews accumulate through compliant channels.

How should I mark up multiple locations?

Create separate, crawlable pages for each location. On each page, markup only that location's LocalBusiness with its own address, geo, opening hours, and telephone. Do not combine multiple locations in a single structured data block on one page, and do not stuff all locations onto your homepage.