The Schema Markup Every Contractor Website Needs (With Examples)

JSON-LD is how you tell Google and AI engines exactly who you are, what you do, and where. Here are the five schema types that matter for a local service business, with copy-paste examples.

When an AI engine decides which roofer to recommend in St. Mary's County, it doesn't read your homepage the way a person does. It reads structure. Schema markup, written as JSON-LD in the head of each page, is the structure: a machine-readable statement of what kind of business you are, which services you offer, where, and what people ask you. Here are the five types that matter, in the order we add them.

1. The right LocalBusiness subtype

Don't use plain LocalBusiness if a more specific type exists. Schema.org has RoofingContractor, GeneralContractor, Electrician, Plumber, HVACBusiness, Dentist, AutoRepair, AutoBodyShop, MovingCompany, and more. Include name, address, phone, URL, opening hours, geo coordinates, service area, and the same name-address-phone that appears on every directory.

{
  "@context": "https://schema.org",
  "@type": "RoofingContractor",
  "name": "Summit Exteriors",
  "telephone": "+1-301-555-0100",
  "url": "https://example.com/",
  "address": { "@type": "PostalAddress", "addressLocality": "Mechanicsville", "addressRegion": "MD" },
  "areaServed": ["Mechanicsville", "St. Mary's County"],
  "openingHours": "Mo-Fr 07:00-18:00"
}

2. Service, one per service

Each service page gets a Service block naming the service type, the provider (your business), and the area served. This is what lets an engine connect "roof repair" and "Mechanicsville" to you specifically.

3. FAQPage

The questions homeowners ask AI are the questions you should answer on your pages, and FAQPage markup makes each question-and-answer pair quotable. Keep the visible FAQ and the schema identical; Google checks.

4. BreadcrumbList

Breadcrumbs tell engines how your site is organized: Home → Services → Roof Repair, or Home → Locations → St. Mary's County. They also show up in search results as the path under your title. Every page below the homepage should have one, and the visible breadcrumb should match.

5. AggregateRating, carefully

Rating markup is powerful and easy to get penalized for. Google only allows it when the rating is visibly shown on the page and collected first-party; you cannot mark up your Google review score on your own site. If you collect reviews on your site, mark them up. If you don't, leave this one out and let the Google Business Profile carry the rating.

How to check your work

Paste any page into Google's Rich Results Test and Schema.org's validator. Then do the test that matters: ask ChatGPT and Google's AI Mode who the best roofer in your county is, and see whether your name comes back. For our clients it does; that's the point of the exercise.

Free growth audit

Let's find out where you show up, and where you don't.

A free, 30-minute growth audit: your Local Services position, your share of AI answers, and what your competitors pay per lead. You keep the plan either way.