My Tool Studio
Schema Markup·4 min read

Service Schema for Local SEO: Beyond Storefronts

Plumbers, consultants and cleaning crews sell work, not items on shelves, and most structured data tutorials quietly assume you have a product catalog or a storefront. Service markup fills that gap: it describes an offering delivered across an area by a named provider. Google has no dedicated rich result for it, so the value is in describing your offer clearly. This guide explains areaServed, settles the service versus product question, and walks through a worked example.

{"@type": "Service","name": "…","url": "…"}RICH RESULTService

Service markup when there's no storefront

The businesses the tutorials forget.

Consider a two-person yard care company covering three towns from a garage, or a consultancy serving clients it never meets in person. Neither has opening hours worth advertising or a shelf of SKUs, so LocalBusiness hours and Product offers both describe them awkwardly. What they have is a set of services, a provider and a coverage area.

Service markup models exactly that. The page for drain repair or brand strategy carries a Service block naming the service type, the provider behind it and the areas covered, which gives search engines a structured answer to the question local searchers ask: who offers this service where I am?

How areaServed draws your map

Coverage without coordinates.

areaServed is a list of places where you actually operate, and each entry can be a city, a state or region, or a two-letter country code. A mobile mechanic might list four suburbs; a translation agency might list entire countries.

The property matters because service businesses work in places where they have no address. A single location pin can't describe a service area, but areaServed states it explicitly. Keep it truthful and specific: listing fifty cities you might drive to dilutes the five you really serve, and a list that doesn't match your visible service area page looks like spam.

Service vs Product markup: which type describes you

A test that settles it.

The decision comes down to what the customer receives. Product describes a transferable item with stock states and unit pricing, things a cart can hold. Service describes work performed: recurring, quoted, scheduled or scoped per client.

The test: if your customers book, hire or request a quote, you're a Service; if they add to cart and check out, you're a Product. Businesses that straddle the line, like a detailer selling wax kits alongside detailing appointments, should use each type on its own pages rather than forcing one type to cover everything.

Choosing wrong isn't neutral. Product markup expects stock and commerce data that quoted work can't honestly supply, so Product blocks forced onto service pages misdescribe the page, and markup that misdescribes a page can be ignored or lead to a manual action.

A worked Service example with provider and areaServed

A yard care company, structured.

For a yard care business covering two Colorado towns, the core reads: {"@type": "Service", "serviceType": "Landscaping", "provider": {"@type": "Organization", "name": "Root and Stone"}, "areaServed": ["Boulder CO", "Longmont CO"]}.

The Service Schema Generator extends this as you need it: pick one of 18 service types or type your own, and set the provider type to an organization or a person for a solo consultant. Press Add service to catalog for each package, and each one becomes an Offer wrapping its own Service inside an OfferCatalog. Choose Fixed price or Price range (from / to); a range is written as a PriceSpecification with minPrice and maxPrice. The Offer only appears when a price is entered, so quote-only businesses can leave it out.

A booking, order or quote link can be added as a potentialAction wrapped in an EntryPoint, and an Additional type field takes a Wikipedia or Wikidata URL when Schema.org has no specific type for your service. Three Load an example buttons, for a plumber, a marketing agency and a solo consultant, show complete blocks to start from.

Service schema mistakes that waste the markup

Common failure patterns.

Watch for these on service sites:

  • One vague block for the whole company instead of a Service on each offering's page.
  • areaServed listing places the visible site never mentions.
  • No provider, leaving the service with no business or person behind it.
  • A price in the markup that differs from the price on the page, or a currency symbol typed into the price field.
  • Missing @id values, so the Service and the company's Organization or LocalBusiness markup never connect.

Practical tips for Service markup

Three that pay off.

Give every distinct service its own page and block, because drain repair and water heater installation answer different searches. Use @id consistently: the page URL plus #service for the Service, and your organization's @id in the Provider @id field so the two connect.

When you use the offer catalog, write a real description for each package rather than repeating the service name. The Service output field is worth filling too: naming what the work produces, such as a report, a certificate or a finished website, gives the block a concrete deliverable in the language customers use.

Service Schema Generator alongside its neighbors

Building the full local picture.

The business itself, with its address and hours, belongs in LocalBusiness markup from the Local Business Schema Generator, usually on the homepage or contact page, while each offering's page carries a block from this tool. Companies where the brand matters more than a location should anchor on the Organization Schema Generator instead.

If part of your catalog really is goods people buy, mark those pages with the Product Schema Generator. Mixed businesses are served well by using the accurate type on each page.

Try it now

Open Service Schema Generator

The tool is one click away. No sign up, no upload, no payment.

Open Service Schema Generator