Skip to content
Made For Builders iconoMade For Builders
Visibility

Schema & Structured Data for Trades (JSON-LD)

edu-lopez-parada16 min read
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.

Close-up of structured code displayed on a computer screen
JSON-LD lives in a script tag, separate from your visible HTML, which makes it straightforward to add, edit, and validate.

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.

Lines of programming code on a dark monitor
FAQ and review schema must reflect content that genuinely appears on the page. Markup that contradicts the visible page breaks Google's guidelines.

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/"
    }
  ]
}

Colourful programming code on a computer monitor
Always validate structured data before deploying. A small syntax slip can silently disqualify a page from rich results.

Validating Your Structured Data

Never deploy schema without testing it. Use two complementary tools:

ToolWhat it checksWhen to use
Rich Results TestEligibility for Google rich results, plus errors and warnings for supported typesFirst, to confirm rich result eligibility
Schema Markup ValidatorSyntax against the full schema.org vocabularySecond, 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

MistakeConsequenceFix
Schema contradicts visible page contentPolicy violation; possible manual actionMark up only what is genuinely on the page
Self-authored or invented reviewsReview snippet policy violationUse genuine third-party reviews; do not fabricate
Wrong or invented business typeConfuses search enginesUse the most specific accurate schema.org type
Inconsistent NAP across schema, page, and GBPWeakens local signalsKeep name, address, phone identical everywhere
Markup never validatedSilent errors, no rich resultsRun both validators before and after deploy
FAQ markup on hidden contentPolicy violationEnsure 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.

Frequently asked

We answer before we start

Direct help

Question not listed?

Talk to the team
  1. 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.

  2. 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.

  3. Q/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.

  4. Q/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.

  5. Q/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.

  6. Q/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.