Skip to content

SEO · · 4 min read

Structured data and JSON-LD — what it is, why it matters, how to implement it

Structured data is one of the most underused technical SEO tactics. It helps search engines understand your content precisely and can unlock rich results in Google. Here's how to do it right.

By Mediseo

Structured data is a way of adding machine-readable annotations to your web pages so that search engines don't just read the text — they understand what kind of content it is, who wrote it, what it's about, and how the pieces relate to each other.

Most websites don't use it. Among the ones that do, most use it incorrectly. Getting it right is one of the few remaining technical SEO tactics with a clear, measurable upside.

What structured data actually does

When Google crawls a page, it reads HTML. It can infer a lot — headings suggest structure, alt text describes images, anchor text describes links. But inference has limits.

Structured data removes the inference. You add a JSON-LD block that says, explicitly: "This page is a product. The product is called X. It costs €49. It has 47 reviews with an average rating of 4.6 stars."

Google can then render that as a rich result — star ratings, price, stock status — directly in search results. Rich results typically see 20–30% higher click-through rates than standard results.

For non-product pages, structured data provides a different benefit: clarity. A well-annotated page is easier for Google to categorise correctly and attribute to the right entity (your business), which matters for E-E-A-T signals.

The schema types worth implementing

There are hundreds of schema types in Schema.org. In practice, a small set covers the majority of use cases:

LocalBusiness — for any business with a physical location or service area. Establishes your name, address, phone, opening hours, and coordinates. Helps with Maps and local pack visibility.

Organization — the parent schema for your company. Includes legal name, logo, social profiles, contact details. This is the schema that tells Google "Mediseo is this company, with this website, with these social accounts."

WebPage / WebSite — basic page-level markup. Particularly useful for the Sitelinks Searchbox feature (if you're large enough to warrant it) and for connecting your pages to the Organisation entity.

Article / BlogPosting — for blog and news content. Establishes author, date published, date modified, headline. Helps with author entity attribution (important for E-E-A-T on expert content).

Product — for e-commerce. Unlocks star ratings, price, and availability in search results. One of the highest-ROI schema implementations for stores.

FAQPage — for FAQ sections. Each question/answer pair can appear directly in search results as an expandable result. Significant click-through uplift for informational queries.

Service — for service businesses. Describes what you offer, for whom, in what area.

How to implement: JSON-LD

There are three ways to add structured data: Microdata (inline HTML attributes), RDFa (similar), and JSON-LD. Use JSON-LD. It's the format Google recommends, it keeps structured data separate from your HTML, and it's much easier to maintain.

A JSON-LD block lives in a <script type="application/ld+json"> tag, usually in the <head>. For Next.js, you can render it server-side in your layout or page files:

<script
  type="application/ld+json"
  dangerouslySetInnerHTML={{
    __html: JSON.stringify({
      "@context": "https://schema.org",
      "@type": "LocalBusiness",
      "name": "Mediseo",
      "url": "https://mediseo.es",
      "telephone": "+34 XXX XXX XXX",
      "address": {
        "@type": "PostalAddress",
        "addressLocality": "Málaga",
        "addressCountry": "ES"
      }
    })
  }}
/>

For blog posts, generate the structured data from your frontmatter. Slug, title, publishedAt, author — all the data you already have.

Common mistakes

Mismatched content: The structured data must match what's actually on the page. If your Product schema says "in stock" but the page says "sold out," Google will ignore or penalise the markup.

Missing required properties: Each schema type has required fields. Product without name and offers is incomplete. FAQPage without mainEntity doesn't work. Check the Schema.org documentation and Google's rich results guidelines for what's actually required.

Duplicate schemas: Some CMS plugins add Organisation schema to every page, then your custom implementation adds another. Two conflicting Organisation schemas will confuse the parser. Audit what's already present before adding new schemas.

Validating the wrong tool: The Rich Results Test (search.google.com/test/rich-results) shows whether Google can parse your structured data. The Schema.org validator checks syntactic validity. You need both: syntactically valid JSON-LD that doesn't trigger rich results is a waste. Syntactically invalid JSON-LD is just broken.

The E-E-A-T connection

Experience, Expertise, Authoritativeness, and Trustworthiness aren't directly influenced by structured data — they're content quality signals. But structured data helps Google connect your content to your entity.

An article with author schema linking to your author page, which has Person schema linking to your profiles on LinkedIn and other platforms, forms an entity graph. That entity graph is how Google builds confidence that the person writing about digital marketing is actually a digital marketing professional — not just a content farm.

For any site producing expert content, entity-building through structured data and author schema is the right long-term investment.

We implement structured data as a standard part of every SEO engagement. For businesses building from scratch, it's one of the first technical foundations we put in place. If you want to understand what's missing from your current setup, book a call.

Twenty minutes, your AI potential mapped — for free.

We look at your business, name the workflows AI can take off your plate, and put a price on each. You leave with a one-page map — no deck, no roadshow.