A plumbing company might have a polished Google Business Profile, yet its website HTML remains silent on what they actually fix and where they operate. This gap often leaves search engines guessing, even when the business is clearly established in its market. The difference lies in a two-layer markup model: one layer defines the entity itself, while the other specifies the service coverage.
LocalBusiness Schema: The Entity Layer That Defines Who You Are

LocalBusiness schema is the cornerstone entity type for brick-and-mortar operations. It distinguishes itself from generic Organization or Place types by specifically describing a physical location where customers interact. While Organization defines the legal entity and Place denotes a geographical point, LocalBusiness bridges both, adding the operational context search engines need to map a business to a real-world address.
Required Properties for Rich Results
To qualify for rich results, specific properties must be present. Missing these blocks eligibility entirely. The required fields include address, name, latitude, longitude, closes, dayOfWeek, and opens. These seven elements tell the search engine not just where you are, but when you are accessible. Omitting even the opening hours or coordinates can render the entity incomplete in the Google Knowledge Graph, preventing the map pack pin from appearing alongside your listing. We treat these as non-negotiable baseline data points.
Subtype Specificity and Classification
Using the generic LocalBusiness tag is a missed opportunity. Schema.org offers over 400 business subtypes, such as Dentist or LegalService. Applying a specific subtype helps search engines categorize the business correctly, improving relevance for niche queries. For instance, a dental practice marked up as Dentist will compete in “dentist near me” searches more effectively than one marked only as LocalBusiness. This precision signals intent and context, which directly influences how AI systems retrieve and display your information in answer boxes.
Minimal JSON-LD Example
Below is a minimal, valid LocalBusiness block for a hypothetical dental practice. Note the use of the specific subtype and the inclusion of all required coordinates and hours.
{
"@context": "https://schema.org",
"@type": "Dentist",
"name": "Smile Center Dental",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main St",
"addressLocality": "Brookfield",
"addressRegion": "WI",
"postalCode": "53005"
},
"latitude": 43.0814,
"longitude": -88.0389,
"openingHoursSpecification": {
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday"],
"opens": "09:00",
"closes": "17:00"
}
}
Service Schema and areaServed: Marking Up What You Do and Where
The first layer of your markup, LocalBusiness, tells search engines who you are. The second layer defines what you actually do and where you deliver it. This distinction is the core of a complete local SEO strategy.
Defining the Offering
LocalBusiness describes the entity: the physical presence, the name, and the address. Service structured data describes the specific offering associated with that entity. By explicitly marking up services, you provide context that helps search engines understand the nature of your work. For example, a law firm does not just exist at an address; it provides legal counsel. Adding a Service type clarifies this relationship, moving beyond generic business data to specific professional capabilities.
This approach allows for a more granular description of your business model. Instead of relying on page title tags or meta descriptions to explain your services, the structured data provides a standardized signal. This helps distinguish a general contractor from a specialized HVAC company, even if their addresses are similar.
The Role of areaServed
While LocalBusiness handles the physical location, areaServed schema defines the geographic reach of your services. This property connects a service to specific cities, regions, or postal codes. For many businesses, the service area extends well beyond the immediate vicinity of the main office or storefront. Local SEO markup relies heavily on this geographic relevance to match users in your delivery zone with your business.
This is particularly critical for mobile providers. A mobile mechanic or a house-call doctor may have a base location, but their primary value is delivered at the customer’s address. Without areaServed, the schema implies the service is only available at the physical address, which is inaccurate. By specifying the coverage zone, you ensure that search engines understand the full scope of your operational reach, helping to capture search intent from a wider area.

House-Call Providers: Why Organization Schema Replaces the Address
A mobile mechanic or a house-call physician often finds themselves in a markup dead end: there is no storefront to anchor the entity. The standard LocalBusiness schema expects a physical point of presence, creating a mismatch for providers who operate entirely on the move. In these scenarios, the LocalBusiness schema is not the right tool. Instead, we advise using Organization schema for businesses that do not serve the local public from a fixed address. This distinction is critical for ensuring your local SEO markup accurately reflects your operational reality without introducing data errors.
The Structural Difference in Required Properties
The primary reason for this switch lies in the specific properties each type demands. While LocalBusiness requires precise geographic coordinates—latitude and longitude—to place the entity on a map, Organization does not mandate these fields in the same rigid way. For a service provider whose “location” is effectively the client’s address, forcing static coordinates into a LocalBusiness block creates a logical contradiction.
By using Organization, you can provide a cleaner markup structure. You can still define the name, logo, and contact points, but you are not obligated to anchor the entity to a single set of coordinates that may not reflect where the service is actually delivered. This allows the markup to remain truthful to the business model, which is essential for maintaining data consistency.
Choosing the Right Organization Subtype
Organization is a broad parent type, and selecting the correct subtype helps search engines categorize the business more precisely. The reference page highlights several relevant subtypes that apply to service-based providers. For instance, a mobile medical provider might fit best under MedicalOrganization. If the business is heavily digital-first or operates as a platform rather than a sole practitioner, OnlineBusiness is another valid classification from the schema.org hierarchy.
| Subtype | Best Fit For | Key Attribute Focus |
|---|---|---|
| MedicalOrganization | House-call doctors, mobile clinics | Health services, department specialization |
| OnlineBusiness | Digital-first service platforms | Online presence, digital contact points |
| ProfessionalService | Mobile mechanics, consultants | General professional service delivery |
Choosing the specific subtype rather than the generic Organization tag gives the search engine more context about the nature of the business, which supports better entity understanding even without a physical address.
NAP Consistency and the Google Knowledge Graph
Structured data is only as effective as its consistency. A perfectly formatted LocalBusiness schema means little if the Name, Address, and Phone (NAP) details conflict with what is listed on Google Business Profile, Yelp, or social media channels. Inconsistencies across these platforms can dilute eligibility for the Google Knowledge Graph, which relies on cross-verified data to confirm a business’s identity. When search engines detect mismatches between your schema and off-site citations, they may hesitate to display local map pack entries or rich results, effectively silencing your digital presence.
Why Consistency Matters for Trust
Google treats schema markup as a signal for context, not as a direct ranking factor. The primary value driver here is accuracy. If your structured data claims one thing while your public profile says another, the system views the data as untrustworthy. This ambiguity prevents the algorithm from confidently associating your entity with specific searches, reducing the visibility your local SEO markup should achieve. Consistency ensures that the entity you are defining is recognized and verified across the web.
Validating NAP Before and After Publishing
Before deploying JSON-LD, you should perform a rigorous validation process. This prevents errors from entering the live site and ensures your local SEO markup aligns with real-world data.
- Audit All Citations: List your current NAP on Google Business Profile, Yelp, and major social media profiles. Compare these details line-by-line. Note any variations in formatting, such as “St.” vs “Street” or different phone number prefixes.
- Align Schema with the Primary Source: Choose your Google Business Profile listing as the source of truth. Update your JSON-LD code to match this exact format, including punctuation and special characters. Ensure the address components in your schema correspond precisely to the verified address in your profile.
- Verify Post-Publication: After deploying the code, use Google’s Rich Results Test and the Schema Markup Validator to check for syntax errors. Additionally, manually compare the live schema output against your public profiles to confirm no discrepancies exist. This final check ensures your data remains trustworthy and eligible for rich results.
Common Questions About Local SEO Markup
Can I use LocalBusiness schema if I only do house calls?
Generally, no. LocalBusiness is designed for brick-and-mortar entities with a fixed address where the public visits. If you operate without a physical storefront, such as a mobile mechanic or a house-call doctor, we advise using Organization schema instead. This distinction matters because LocalBusiness requires properties like latitude and longitude to validate a physical presence.
What is the difference between a Service and a LocalBusiness?
LocalBusiness defines the entity—the business itself. Service structured data describes the specific offering or type of work you perform. In practice, you often nest a Service within a LocalBusiness or use the areaServed property on the service to define your geographic coverage. This two-layer approach helps search engines distinguish between who you are and what you provide.
Does areaServed guarantee rankings?
No. While it helps search engines understand your intended service area, it does not override other critical local SEO factors. Your position in the map pack still depends on reviews, backlinks, and the consistency of your Name, Address, and Phone (NAP) data across the web. The Google Knowledge Graph relies on this combined context to build a trustworthy entity profile, not just on one line of code.
Is JSON-LD the only option?
No, but it is the recommended format. JSON-LD is less prone to syntax errors and does not interfere with your HTML layout, making it easier to maintain and validate. For most teams managing local SEO markup, JSON-LD remains the most efficient choice for ensuring data integrity.
Conclusion
The distinction between these two layers is simple to state but easy to miss in practice. LocalBusiness schema anchors the entity to a physical location, while Service structured data paired with areaServed defines the geographic reach of what you actually offer. When these elements work in tandem, they provide search engines and AI systems a complete, two-dimensional picture of your operation: where you are based and where you can deliver value.
It is worth pausing to consider what happens when one layer is missing. A business with a robust entity definition but no service coverage data remains a point on a map, not a provider. Conversely, detailed service information without a solid entity anchor lacks the trust signals needed for local relevance. The true potential of local SEO markup lies in the intersection of these two dimensions, not in their isolation.
Take a moment to review your current implementation. Is your markup providing a complete narrative, or is it telling only half the story?