Guide
Schema markup for service businesses, with code
Copy-ready JSON-LD for a local service business, its services and breadcrumbs, how to test it, and what structured data will and will not do for you in 2026.
VAULT 33|27 · Updated 12 November 2026 · Reviewed 12 November 2026 · 3 min read
What structured data is
Structured data is a small block of code that describes your business in a format machines understand: your name, address, phone, hours, services and where each page sits in your site. You place it in the page as JSON-LD, inside a <script type="application/ld+json"> tag. Visitors never see it.
What it can and cannot do
| It can | It cannot |
|---|---|
| Help Google understand exactly who you are, where you are and what you offer | Guarantee any special result in Google. Google states it does not guarantee that features using structured data will appear |
| Make your business eligible for features such as a knowledge panel and breadcrumbs in results | Make up for a weak page, a thin website or poor reviews |
| Reduce confusion between similar businesses and locations | Replace a properly managed Google Business Profile |
One update many older guides miss: Google no longer shows FAQ rich results in Search. Adding FAQ markup to win extra space in results no longer works. Write good FAQs for people, and spend your structured data effort on the business and its services.
1. Your business: LocalBusiness
Google requires name and address, and recommends properties such as telephone, url, geo, openingHoursSpecification and priceRange. Use the most specific type that fits: for example Electrician, Plumber, Dentist, RealEstateAgent or ProfessionalService.
{
"@context": "https://schema.org",
"@type": "Electrician",
"@id": "https://www.example.co.uk/#business",
"name": "Example Electrical Services",
"url": "https://www.example.co.uk/",
"telephone": "+44 20 7946 0000",
"image": ["https://www.example.co.uk/images/team-16x9.jpg"],
"priceRange": "££",
"address": {
"@type": "PostalAddress",
"streetAddress": "1 Example Street",
"addressLocality": "London",
"postalCode": "N1 1AA",
"addressCountry": "GB"
},
"geo": { "@type": "GeoCoordinates", "latitude": 51.53612, "longitude": -0.10345 },
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "08:00",
"closes": "18:00"
}
],
"areaServed": ["London"],
"sameAs": ["https://www.linkedin.com/company/example"]
}
Notes from Google's documentation: include the country and area code in the phone number, give coordinates to at least five decimal places, and keep priceRange short. For days you are closed, Google's convention is opening and closing at 00:00.
2. Each service: Service
On each service page, describe the service and point to the business with the same @id:
{
"@context": "https://schema.org",
"@type": "Service",
"name": "EICR certificates for landlords",
"serviceType": "Electrical installation condition report",
"provider": { "@id": "https://www.example.co.uk/#business" },
"areaServed": { "@type": "City", "name": "London" },
"url": "https://www.example.co.uk/eicr-certificates/"
}
3. Where the page sits: BreadcrumbList
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://www.example.co.uk/" },
{ "@type": "ListItem", "position": 2, "name": "Services", "item": "https://www.example.co.uk/services/" },
{ "@type": "ListItem", "position": 3, "name": "EICR certificates" }
]
}
Rules that keep you out of trouble
- Mark up only what is visible and true. Hours, prices and services in the code must match the page.
- Do not add review stars for your own business. Google's local business documentation reserves review markup for sites that review other businesses.
- One business, one
@id, reused on every page so the pieces connect. - Keep it in sync. When hours or phone numbers change, update the code at the same time as the page.
How to test it
- Paste your page address into Google's Rich Results Test to check what Google can use.
- Use the Schema Markup Validator to check the code itself.
- After launch, watch the enhancements reports in Google Search Console for errors.
- Run the VAULT Business Audit to see which structured data types your page already has.
Checklist
- LocalBusiness with the most specific type, on the homepage or contact page.
- Service markup on every service page, linked to the business by
@id. - Breadcrumbs on every page below the homepage.
- Everything in the code visible on the page and correct.
- Tested before and after launch.
Sources
Open your vault.
A free systems audit of your business: where enquiries leak and exactly what we would build.
Book your free audit