Schema & Structured Data for Trades (JSON-LD)

Structured data is code that describes your business to search engines and AI systems in a format they can read precisely. For UK trades, the most useful schema.org types are LocalBusiness (and its subtypes such as Plumber or Electrician), Service, FAQPage, AggregateRating with Review, and BreadcrumbList. Implemented as JSON-LD, validated with Google's Rich Results Test, and kept consistent with visible page content, schema can unlock rich results in search and makes your pages easier for AI assistants to cite accurately.
When a homeowner searches for a local tradesperson, a great deal happens in the gap between their query and the results they see. Search engines have to work out what each page is, who runs the business, where it operates, and whether it is trustworthy. You can leave that interpretation to chance, or you can spell it out in a language built for exactly this purpose: structured data.
Structured data, expressed with the schema.org vocabulary, is code that describes your business to machines in unambiguous terms. Google uses it to understand page content and may reward eligible pages with rich results, the enhanced search listings that show star ratings, FAQ accordions, and breadcrumb trails. As AI assistants increasingly mediate how people find services, clean structured data also makes your business easier to represent accurately.
This guide is practical. It covers the schema types that matter most for UK trades, with real JSON-LD you can adapt, how to validate it, and the common mistakes that quietly break it.
Why Structured Data Matters for Trades
Structured data does not directly increase rankings. What it does is reduce ambiguity. A page of prose about your plumbing business is readable to a human, but a machine has to infer your phone number, your service area, and your opening hours from unstructured text. Schema removes the guesswork.
The payoffs are concrete:
- Eligibility for rich results such as review stars, FAQ accordions, and breadcrumbs, which can improve how your listing looks and how often it is clicked.
- Clearer local understanding, reinforcing the NAP (name, address, phone) consistency that matters for local SEO, as discussed in our local SEO for tradespeople guide.
- Better machine readability for the retrieval systems behind AI assistants, a theme we explore in how to show up in ChatGPT and Perplexity.
This is foundational work for the visibility pillar, and it pairs naturally with well-built service and location pages.
JSON-LD Is the Right Format
There are three ways to add structured data: JSON-LD, Microdata, and RDFa. Google recommends JSON-LD wherever possible, and for good reason.
JSON-LD is a self-contained block placed in a <script type="application/ld+json"> tag. It sits
apart from your visible HTML, so you can add, edit, and validate it without disturbing your layout.
Microdata and RDFa, by contrast, weave attributes through your markup, making them fragile and
harder to maintain.
For a trades site, the rule is simple: use JSON-LD, one logical block per page describing the business and the page's main content.

LocalBusiness: The Core of Your Markup
The single most important schema type for a trades business is LocalBusiness, or one of its more
specific subtypes. schema.org defines specialised types including Plumber, Electrician, and
HVACBusiness. Use the most specific accurate type, as the
LocalBusiness definition lays out.
A solid LocalBusiness block for an electrician:
{
"@context": "https://schema.org",
"@type": "Electrician",
"name": "Brightwire Electrical",
"image": "https://example.co.uk/brightwire.jpg",
"@id": "https://example.co.uk/#business",
"url": "https://example.co.uk/",
"telephone": "+441234567890",
"priceRange": "££",
"address": {
"@type": "PostalAddress",
"streetAddress": "12 Mill Lane",
"addressLocality": "Leeds",
"postalCode": "LS1 4AB",
"addressCountry": "GB"
},
"areaServed": [
{ "@type": "City", "name": "Leeds" },
{ "@type": "City", "name": "Wakefield" }
],
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "08:00",
"closes": "18:00"
}
]
}
Every value here should match what a visitor sees on the page and what appears on your Google
Business Profile. The @id gives the business a stable identifier you can reference from other
schema blocks.
Service Schema for Your Job Pages
On a service page, the Service type describes what you offer and who provides it. It links back to
your LocalBusiness via the provider property.
{
"@context": "https://schema.org",
"@type": "Service",
"serviceType": "Boiler Repair",
"provider": {
"@type": "Plumber",
"name": "Acme Plumbing & Heating",
"@id": "https://example.co.uk/#business"
},
"areaServed": {
"@type": "City",
"name": "Manchester"
},
"description": "Gas Safe registered boiler repair across Manchester, including diagnostics, part replacement, and emergency callouts."
}
This mirrors the page structure described in our service and location pages guide: one service, clearly defined, with the provider and service area made explicit.
FAQPage: Marking Up Your Questions
If your service or location page answers genuine customer questions, FAQPage markup makes those
questions machine-readable and, when eligible, can produce an FAQ rich result.
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Are you Gas Safe registered?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes. All our gas work is carried out by Gas Safe registered engineers, and we can show our registration on request."
}
},
{
"@type": "Question",
"name": "Do you offer emergency callouts?",
"acceptedAnswer": {
"@type": "Answer",
"text": "We offer emergency callouts across Manchester. Call us and we will give you an honest estimate of when we can reach you."
}
}
]
}
Important: the questions and answers in your schema must also appear visibly on the page. Marking up FAQs that are hidden from users violates Google's structured data policies. Note too that Google has narrowed which sites show FAQ rich results, so treat the markup as good practice for clarity rather than a guaranteed visual feature.

Review and AggregateRating: Handle With Care
Star ratings in search results are powerful, but review schema is the area where trades businesses most often run into trouble. Google's review snippet guidelines are strict.
The rules that matter:
- Ratings must come from genuine, independent reviews of the business.
- You must not write or mark up reviews about your own business in a self-serving way.
- AggregateRating must reflect real review data that is also visible to users on the page.
A compliant AggregateRating references real, displayed reviews:
{
"@context": "https://schema.org",
"@type": "Plumber",
"name": "Acme Plumbing & Heating",
"@id": "https://example.co.uk/#business",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "63"
}
}
If your reviews live on Google or Checkatrade rather than your own site, the honest and safer route is to rely on those third-party platforms for review signals, not to self-publish ratings. The science of online reviews explains why third-party platforms carry more weight with consumers anyway, and social proof and trust for trades covers how to present trust signals responsibly.
BreadcrumbList: Helping Navigation and Search
BreadcrumbList markup describes the position of the current page within your site hierarchy. It can
produce a breadcrumb trail in search results and reinforces the clean architecture described in our
service and location pages guide.
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://example.co.uk/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Services",
"item": "https://example.co.uk/services/"
},
{
"@type": "ListItem",
"position": 3,
"name": "Boiler Repair",
"item": "https://example.co.uk/services/boiler-repair/"
}
]
}

Validating Your Structured Data
Never deploy schema without testing it. Use two complementary tools:
| Tool | What it checks | When to use |
|---|---|---|
| Rich Results Test | Eligibility for Google rich results, plus errors and warnings for supported types | First, to confirm rich result eligibility |
| Schema Markup Validator | Syntax against the full schema.org vocabulary | Second, to confirm the wider markup is valid |
After deployment, monitor the Enhancements and structured-data reports in Google Search Console. These surface errors Google encounters when crawling your live pages, which can differ from what a one-off test shows. Treat schema as something you maintain, not set once and forget.
Common Mistakes That Break Schema
| Mistake | Consequence | Fix |
|---|---|---|
| Schema contradicts visible page content | Policy violation; possible manual action | Mark up only what is genuinely on the page |
| Self-authored or invented reviews | Review snippet policy violation | Use genuine third-party reviews; do not fabricate |
| Wrong or invented business type | Confuses search engines | Use the most specific accurate schema.org type |
| Inconsistent NAP across schema, page, and GBP | Weakens local signals | Keep name, address, phone identical everywhere |
| Markup never validated | Silent errors, no rich results | Run both validators before and after deploy |
| FAQ markup on hidden content | Policy violation | Ensure FAQs are visible on the page |
The unifying principle: schema must tell the truth about your page. Structured data is a description, not a claim. Every value you mark up should be verifiable by a human reading the same page.
How Schema Connects to Everything Else
Structured data is not an isolated tactic. It reinforces your service and location pages, supports your Google Maps visibility, and contributes to how AI assistants represent your business. For sector-specific context, the guides for electricians and plumbers put it in a wider marketing frame, and the trades directory shows how the same patterns apply across sectors such as builders and renovators.
To deepen the underlying concepts, the glossary defines the key terms, and the blog covers the broader visibility and conversion strategy.
Conclusion
Structured data is one of the few SEO investments that is almost entirely within your control. It does not depend on chasing algorithm changes or buying links. It is a careful, honest description of your business and your services, written in a vocabulary search engines and AI systems already understand.
Start with an accurate LocalBusiness block, add Service schema to your job pages, mark up
genuine FAQs and real reviews, and validate everything before it goes live. Keep the markup
consistent with what visitors actually see, and revisit it as your business changes. Do that, and you
give every system that reads your site the clearest possible picture of who you are and what you do.
We answer before we start
Q/01What is structured data and why does a trades business need it?
Structured data is a standardised format for providing information about a page and classifying its content. Using the schema.org vocabulary, you describe facts about your business, such as its type, phone number, opening hours, services, and reviews, in a way that search engines can read unambiguously. Google uses this to understand your page and may display rich results, like a star rating or FAQ accordion, in search. For a trades business, structured data helps Google and AI assistants represent your business accurately when a potential customer searches for a local plumber, electrician, or heating engineer. It does not guarantee rankings, but it improves how clearly your business is understood and presented.
Q/02Should I use JSON-LD, Microdata, or RDFa for my schema?
Google recommends JSON-LD for structured data wherever possible. JSON-LD is a block of JavaScript Object Notation placed in a script tag in the page head or body, separate from the visible HTML. This separation makes it easier to add, edit, and validate without touching your page layout, and it is the format Google's documentation uses in its own examples. Microdata and RDFa embed attributes directly into HTML elements and are harder to maintain. For a trades website, JSON-LD is the clear default: one self-contained block per page describing the business, the service, and any FAQs or reviews.
Sources & resourcesQ/03Can I add review and star rating schema to my own website?
You can, but with important conditions. Google's review snippet guidelines state that ratings must come from genuine, independent reviews of the item, and that you must not write reviews about your own business or mark up reviews you control in a self-serving way. AggregateRating data must reflect real review data that is also visible to users on the page. Inventing ratings or marking up reviews that do not appear on the page violates Google's policies and can lead to a manual action. The safe approach is to display genuine reviews on the page and mark up only that real, visible data. Many trades businesses rely on third-party platforms such as Google and Checkatrade for review signals instead.
Sources & resourcesQ/04How do I test whether my structured data is valid?
Use two tools. Google's Rich Results Test checks whether your structured data is eligible for rich results in Google Search and shows any errors or warnings for supported types. The Schema Markup Validator (hosted at validator.schema.org) checks your markup against the schema.org vocabulary more broadly, including types Google does not produce rich results for. Run the Rich Results Test first to confirm eligibility for features like FAQ or review snippets, then use the Schema Markup Validator to confirm the wider markup is syntactically valid. After deploying, monitor the Enhancements reports in Google Search Console for ongoing errors.
Sources & resourcesQ/05Does structured data help with AI assistants like ChatGPT and Perplexity?
Indirectly, yes. Structured data makes the facts on your page explicit and machine-readable, which reduces ambiguity for any system parsing your content, including the crawlers and retrieval systems behind AI assistants. While neither OpenAI nor Perplexity publishes a guarantee that schema.org markup boosts citation, clean structured data reinforces the same clear, well-organised, factual content these systems favour. Pairing accurate LocalBusiness and FAQPage schema with genuinely useful, well-sourced content is a sensible way to make your business easier to represent correctly across both traditional search and generative engines.
Sources & resourcesQ/06Which LocalBusiness subtype should a plumber or electrician use?
schema.org provides specific subtypes of LocalBusiness, including Plumber, Electrician, and HVACBusiness, among others. Where a precise subtype exists for your trade, use it: a plumber should use the Plumber type, an electrician the Electrician type. Where no exact subtype exists, fall back to the more general LocalBusiness or HomeAndConstructionBusiness type. Using the most specific accurate type gives search engines the clearest signal about what your business does. Do not invent types or apply a subtype that does not match your actual trade.
Sources & resources

