Most LocalBusiness schema in 2026 is written for businesses with a storefront. The schema assumes a customer walks in, the address is meaningful for retail, and the hours field describes when the storefront opens. Schema generators output it by default.
Service-area businesses are different. They go to the customer instead of the customer coming to them. Plumbers, electricians, mobile detailing, in-home health aides, traveling specialists, home cleaners, fitness trainers who travel to clients.
The standard storefront-shaped LocalBusiness schema fits these businesses badly. The result is that Google and AI engines mis-classify them, mis-extract their service area, and route relevant queries to competitors with cleaner schema.
If you run a service-area business or you’re shipping schema for one, here’s the working setup and what most agencies get wrong.
Three structural mismatches.
The address gets used as the primary location. Storefront businesses have an address that customers visit. Service-area businesses have an address that customers don’t visit (the home office, the garage, the operator’s house). Shipping standard LocalBusiness schema with the operator’s home address can produce wrong map placements, wrong distance calculations for nearby searches, and privacy issues for solo operators.
Hours represent when the storefront is open. For a plumber, hours represent when they take service calls. That’s different from when they show up at a customer’s house. The standard hours field forces these into one bucket, which mis-represents the actual availability.
Geographic targeting via a single address. Storefront businesses serve customers near the address. Service-area businesses serve customers across a defined area. The standard schema doesn’t have a clean way to express “we serve this entire metro area,” so most agencies ship it as a single address with no service area definition.
LocalBusiness with no public address, a fully-defined areaServed field, and an optional serviceArea GeoCircle.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Plumber",
"@id": "https://yourdomain.com/#localbusiness",
"name": "Pacific Plumbing Co",
"description": "Mobile plumbing service across Seattle and Eastside.",
"url": "https://yourdomain.com/",
"telephone": "+1-206-555-0100",
"image": "https://yourdomain.com/wp-content/uploads/logo.png",
"priceRange": "$$",
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "07:00",
"closes": "19:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday",
"opens": "08:00",
"closes": "16:00"
}
],
"areaServed": [
{
"@type": "City",
"name": "Seattle",
"containedInPlace": {
"@type": "State",
"name": "Washington"
}
},
{
"@type": "City",
"name": "Bellevue"
},
{
"@type": "City",
"name": "Kirkland"
},
{
"@type": "City",
"name": "Redmond"
},
{
"@type": "City",
"name": "Renton"
}
],
"serviceArea": {
"@type": "GeoCircle",
"geoMidpoint": {
"@type": "GeoCoordinates",
"latitude": 47.6062,
"longitude": -122.3321
},
"geoRadius": "40000"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "127",
"bestRating": "5"
}
}
</script>
Three things about this setup that differ from the standard template.
No address field. This is intentional. Service-area businesses shouldn’t publish their operating address in schema unless they have a real public storefront. Google’s documentation specifically addresses this. The combination of no address and a defined areaServed tells Google the business is service-area, not storefront.
Both areaServed (city list) and serviceArea (geographic circle). The two together provide redundant signal. The areaServed list is what AI engines and Google extract directly for queries like “plumber in Bellevue.” The serviceArea GeoCircle is what Google uses for distance calculations. Both matter.
Specific business type, not generic LocalBusiness. Schema.org has dozens of LocalBusiness subtypes: Plumber, Electrician, AutoBodyShop, HomeAndConstructionBusiness, MedicalBusiness, ProfessionalService. Use the most specific one that applies. Generic LocalBusiness produces weaker classification signals than the specific type.
Shipping the operator’s home address. The home address gets indexed, appears in Knowledge Panel results, and creates privacy issues. Some operators are okay with this. Most aren’t, and they didn’t know it was happening.
Skipping areaServed entirely. Without areaServed, the engine guesses the service radius from the address. The guess is wrong. The business misses queries from areas it actually serves.
Listing every city in the state. Some agencies pad areaServed with 30+ cities to maximize coverage. Engines detect padding and de-weight the schema. The right list is the actual cities the business serves, not the aspirational coverage.
Using the wrong LocalBusiness subtype. A solo electrician shipping @type: LocalBusiness instead of @type: Electrician. The classification is weaker. Use the most specific subtype.
Outdated hours. Service businesses often have seasonal hours, vacation closures, or operator-specific schedules. Schema hours that don’t match reality train Google and AI engines that the schema is unreliable. Update at least quarterly.
Missing review schema. Service-area businesses with public reviews on Google Business Profile, Yelp, or Angie’s List should mirror the aggregate rating into schema. Without it, the AI engine has no quick signal of quality and citation candidacy drops.
The picture varies by engine.
Google AI Overviews uses areaServed and serviceArea together. A query like “plumber in Bellevue” preferentially surfaces businesses where Bellevue is in the areaServed city list. The GeoCircle is used as a secondary filter for distance.
ChatGPT browse and Perplexity extract from areaServed more than serviceArea. The city list is what gets cited when the user asks for a vendor in a specific city. The geographic circle is mostly ignored.
Microsoft Copilot uses both, similar to Google. Copilot is stronger on local queries when the business has structured areaServed data.
Voice assistants (Alexa, Siri, Google Assistant) use the structured area data to filter results. A voice query for “find a plumber in Kirkland” preferentially surfaces businesses with Kirkland in areaServed.
The cross-engine pattern: ship areaServed as a clean list of actual service cities. Ship serviceArea as a GeoCircle covering the realistic radius. Skip the home address. Use the specific LocalBusiness subtype.
Google Business Profile is the dominant local SEO signal. Schema is secondary. For service-area businesses, the right setup combines both.
Google Business Profile for service-area businesses has its own configuration. The profile can be set to “I deliver goods and services to my customers” with a defined service area instead of a public storefront. This setting must match the schema. If GBP says “service area business” but schema ships a public address, the two contradict each other and Google de-weights both.
The right discipline: configure GBP first as service-area business with the actual cities. Ship matching schema with the same cities in areaServed. Update both whenever the service area changes.
Service-area businesses with correctly-configured schema and matching GBP typically see better candidate selection for “near me” voice queries (Alexa, Siri), higher inclusion rate in Google’s Local Pack for relevant city queries, citation in AI engine responses when users ask for vendors in specific neighborhoods, and cleaner Knowledge Panel results without operator privacy issues.
The lift is meaningful for solo operators and small teams. The work is one block of JSON-LD plus matching GBP configuration plus quarterly maintenance.
If you want us to ship correct service-area schema for your business along with matching GBP discipline, the fit call covers it. The first ship happens in week one.
Related reading:
– Speakable schema: the underused signal that helps voice assistants find your content
– Your Organization schema is probably costing you AI citations
– Schema markup for AI search 2026: field guide
– Product schema for SaaS: turning your pricing page into a citable answer
– GEO 101: Generative Engine Optimization Explained