localwebadvisor
WIKI← Wiki home

What Is LocalBusiness Schema?

By FayUpdated Jul 9, 2026EVERGREEN
⚡ THE ANSWER

LocalBusiness schema is a type of structured data from schema.org that describes a physical, place-based business to search engines in a machine-readable format. Added to a page as JSON-LD, it states the business name, address, phone number, hours, geographic coordinates, price range, and service area. Search engines use these facts to confirm the identity of a local business, strengthen its knowledge panel and map presence, and match it to nearby searchers looking for the services it offers.

Vocabulary
schema.org/LocalBusiness, a subtype of Organization and Place (schema.org)
Format Google prefers
JSON-LD in a script tag (Google Search Central)
Key required-in-practice fields
name, address, telephone, openingHours, geo (industry-typical)
Common subtypes
Plumber, Dentist, HVACBusiness, Restaurant, Attorney, and dozens more (schema.org)

What is LocalBusiness schema in plain terms? #

LocalBusiness schema is a small block of code that spells out, in a format machines read reliably, the core facts about a place-based company. Instead of hoping Google correctly reads your address from a footer image or a paragraph, you hand it the facts directly: this is the legal name, this is the street address, this is the phone number a customer should call, these are the hours, and this is the point on the map. It is part of the schema.org vocabulary explained in our /wiki/schema-markup-guide, and it is delivered as JSON-LD, the format Google recommends. For a plumber, dentist, or roofer whose entire business depends on being found by nearby searchers, LocalBusiness schema is one of the highest-leverage pieces of markup you can add. It does not guarantee a ranking, but it removes ambiguity, and ambiguity is what keeps local businesses out of the Map Pack described at /wiki/what-is-the-map-pack.

Why does a local business need it? #

Search engines assemble a profile of your business from many signals: your Google Business Profile, directory citations, your website, and reviews. When these signals disagree, for example a phone number that differs between your site and a directory, confidence drops and rankings suffer. LocalBusiness schema lets your own website state the canonical facts unambiguously, reinforcing consistency across the web. This matters most for the name, address, and phone number, the NAP data that underpins all local SEO covered in /wiki/what-is-local-seo. Accurate schema also feeds the knowledge panel, the box of business details that can appear beside search results, and it helps AI systems answer questions like 'plumber near me open now' correctly, a growing channel covered in /wiki/ai-search-optimization. In short, the schema does not replace your Google Business Profile; it corroborates it. Two sources agreeing is far stronger than one source alone, and that agreement is what our /services/local-seo work is built to create.

Which fields matter most, and how do you choose a subtype? #

Start with the fields Google actually uses. The name should exactly match your real business name. The address uses a nested PostalAddress with street, city, state, and ZIP. The telephone should be the number you want customers to call, in a consistent format. openingHours or openingHoursSpecification lists your days and times, and geo carries latitude and longitude so maps place you precisely. priceRange, image, and url round out a strong profile. Just as important is choosing the most specific subtype available. schema.org offers dozens: Plumber, Dentist, HVACBusiness, Electrician, Attorney, Restaurant, HealthClub, and more. Using Plumber instead of the generic LocalBusiness tells search engines exactly what you do, which sharpens matching for relevant queries. If no exact subtype exists, use the closest parent and add a clear description. Our /tools/schema-generator builds the correct nested structure so you do not hand-write the JSON, and /tools/schema-validator confirms it is error-free.

What does the JSON-LD look like? #

A LocalBusiness block lives in the head or body of the page inside a script tag with the type application/ld+json. It opens by declaring the schema.org context and the specific business type, then lists the properties as key-value pairs, with the address and hours nested as their own objects. The example below shows a plumber. Notice the address uses PostalAddress, the geo uses GeoCoordinates, and the hours use a compact string format. You place one such block per physical location, and if you have several locations you output several blocks or an array. Keep the values identical to what appears visibly on the page and on your Google Business Profile, because contradictions undermine trust. After deploying, test the live URL in Google Search Console's URL Inspection tool and watch the enhancement reports confirm eligibility.

localbusiness.json — Plumber LocalBusiness JSON-LD
{
  "@context": "https://schema.org",
  "@type": "Plumber",
  "name": "Rivertown Plumbing Co.",
  "image": "https://rivertownplumbing.com/logo.jpg",
  "url": "https://rivertownplumbing.com",
  "telephone": "+1-512-555-0142",
  "priceRange": "$$",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "418 Maple St",
    "addressLocality": "Austin",
    "addressRegion": "TX",
    "postalCode": "78701",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 30.2711,
    "longitude": -97.7437
  },
  "openingHours": "Mo-Fr 07:00-18:00",
  "areaServed": "Austin, TX"
}

How does it interact with your Google Business Profile? #

LocalBusiness schema and your Google Business Profile are partners, not substitutes. The profile, covered in /google-business-profile-guide, is Google's own database record and is the primary driver of Map Pack placement. Your website schema is a corroborating source that Google cross-checks. When both agree on name, address, phone, hours, and category, Google's confidence rises, which supports rankings and reduces the chance of Google displaying stale or wrong information. The schema also helps other engines and AI assistants that do not use Google Business Profile at all. Keep the two synchronized: if you change hours for a holiday, update both. If you move, update both on the same day. A mismatch, even a small one like 'Street' versus 'St,' can dilute the signal. This is exactly the kind of consistency our /services/local-seo and /services/care-plans teams maintain so owners do not have to remember every place their details live.

What rich results and benefits can it unlock? #

LocalBusiness schema rarely produces a flashy standalone rich result on its own, but it powers several valuable outcomes. It feeds the knowledge panel, the sidebar box with your hours, phone, and directions. Combined with Review schema, it can help star ratings appear. It supports the 'open now' and 'hours' features searchers rely on. It improves how your listing is understood in voice search and AI Overviews, described in /wiki/what-are-ai-overviews, where a machine needs unambiguous facts to answer 'is there a dentist open near me right now.' For multi-service businesses, pairing LocalBusiness with Service schema clarifies exactly what you offer. The practical benefit is qualification and clarity rather than a single visual badge: your business becomes easier for machines to identify, place, and recommend. That is why we include it by default on every local site we build through /services/web-design and every /services/website-redesign for a place-based company.

What are the most common mistakes? #

The frequent errors are avoidable. First, marking up information that does not appear visibly on the page; Google's guidelines require schema to reflect on-page content, so hidden or invented details risk a manual penalty. Second, inconsistent NAP data between the schema, the visible page, and the Google Business Profile. Third, using the generic LocalBusiness type when a specific subtype like Dentist or Roofer exists. Fourth, wrong or missing geo coordinates that place you across town. Fifth, putting the same LocalBusiness block on every page with identical data when only the homepage or contact page needs it, though this is more clutter than harm. Sixth, forgetting to update the schema when hours or phone numbers change. Validate every change with /tools/schema-validator and monitor Google Search Console for errors. Another subtle mistake is copying a competitor's schema and forgetting to swap every value, which can leave their coordinates or phone number in your code. If your existing site was built without schema or with broken markup, our /services/website-rescue service audits and rebuilds it correctly rather than layering new problems on old ones.

How do you deploy and maintain it over time? #

Deployment depends on your platform. On WordPress, an SEO plugin or a custom snippet added through /services/wordpress-development can output the block automatically from fields you fill in once. On a custom site, a developer places the JSON-LD in a shared template so every page inherits the correct data. Either way, generate the initial code with /tools/schema-generator, validate it, deploy to a staging copy, test the live URL, then push to production. Maintenance is the part owners forget. Business facts change: you extend hours, add a location, switch phone systems, or adjust your price range. Each change must flow to the schema, the visible page, and the Google Business Profile together. A stale schema advertising last year's hours is worse than none because it actively misleads. This ongoing accuracy is a core part of our /services/care-plans, which treat structured data as living information rather than a one-time task, keeping your local signals clean as the business evolves.

FAQ

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

Yes, they work together. Your Business Profile is Google's own record and drives Map Pack placement, while LocalBusiness schema on your website corroborates those facts and helps other engines and AI assistants that do not use Google Business Profile. When both agree on name, address, phone, and hours, Google's confidence rises and your local signals strengthen.

Which schema subtype should a service business use?

Always choose the most specific subtype that fits, such as Plumber, Dentist, Electrician, HVACBusiness, or Attorney, rather than the generic LocalBusiness. A specific type tells search engines exactly what you do, sharpening how they match your pages to relevant searches. If no exact subtype exists, use the closest available parent and add a clear description property.

Where on my site should the schema go?

The homepage and contact page are the natural homes for LocalBusiness schema, since they represent the business as a whole. Place one block per physical location. You do not need to repeat it on every blog post or service page, though a shared template that outputs it site-wide causes no harm as long as the data stays accurate.

Can I mark up hours and price range?

Yes. openingHours or openingHoursSpecification captures your days and times, including split shifts and per-day variations, and priceRange gives a rough cost band like $ to $$$$. Both help searchers and appear in features like 'open now.' Keep them synchronized with your visible hours and your Google Business Profile so they never contradict each other.

Will LocalBusiness schema guarantee I rank in the Map Pack?

No. Schema removes ambiguity and strengthens your signals, but Map Pack ranking also depends on proximity, review quantity and quality, categories, and overall relevance. Think of schema as a foundation that helps everything else work, not a standalone ranking lever. It is one important piece of a broader local SEO effort.

How do I know my schema is working?

Validate the code with a schema validator, then use Google Search Console's URL Inspection and enhancement reports to confirm Google reads it without errors. You will not always see a dramatic visual change, since much of the benefit is behind-the-scenes confidence, but error-free validation and clean Search Console reports confirm the markup is doing its job.

Was this helpful?