← Back to Blog

Schema markup that actually earns rich snippets

Review stars under a business name. Opening hours right in the result. Those extras are rich snippets, and they don't come from luck — they come from schema markup: structured data you add to a page so Google doesn't have to guess what's on it.

What schema.org actually is

Schema.org is a shared catalog of page facts — a vocabulary Google, Bing, and Yahoo all agreed to read. You wrap facts any business already has (name, address, phone, hours) in machine-readable tags, and Google can surface some of them directly in search results.

One honest caveat: markup makes you eligible for rich snippets, not guaranteed them. Google decides that per page and per query. But without the markup you're not in the running: there is nothing structured to draw from, so no extras can appear.

The minimum LocalBusiness snippet

This is the smallest LocalBusiness block that passes a Rich Results Test. Every value below is a placeholder — example, illustrative — so swap in your real business details before you publish:

{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "Oakwood Plumbing Co.",
  "url": "https://www.example-plumbing.com/",
  "telephone": "+1-555-010-7788",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "42 Oak Street",
    "addressLocality": "Springfield",
    "addressRegion": "IL",
    "postalCode": "62701",
    "addressCountry": "US"
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
      "opens": "08:00",
      "closes": "18:00"
    }
  ]
}

Paste it once into your template, before the closing </body> tag — same slot as your analytics code. One rule above all: the markup must match the visible page. If the site shows an address, the snippet shows the same address. If hours change, both change.

What do the extras buy you? Space and trust. A result with hours and stars takes up more of the screen than a bare blue link squeezed between identically bare competitors, and it reads as maintained — someone home. The markup to earn that is about twenty lines.

Test it before you ship it

Google's Rich Results Test is free, needs no login, and takes about a minute per run:

One warning to expect even on a clean run: fields you never filled are listed as optional warnings. Optional means optional — clear the errors, skim the warnings for anything that would earn a bigger snippet (opening hours, ratings, for example), then ship it.

Three mistakes that keep you snippet-less

Critical

Wrong type

The most common: a local service business marked up as Organization. That type is for brands without a door customers can drive to, and it can't earn local presentation. If people visit your premises, use LocalBusiness or a closer subtype such as Plumber, Dentist, or Restaurant.

The fix: pick the type that names what you sell. The test tool says outright when a type doesn't qualify for a feature.

Warning

Missing required fields

A half-filled block doesn't earn half a rich result. The tool lists omissions field by field — name, address, telephone are the ones Google keeps asking for — and an item with required fields missing stays invisible.

The fix: fill every required field the tool names, re-run, and clear the errors before you care about the warnings.

Warning

Markup that contradicts the page

Stale snippets outlive redesigns. An old address, a phone that rings somewhere else, hours left over from a rebrand — Google cross-checks structured data against the page a visitor sees, and contradictions get treated as unreliable signals.

The fix: keep the snippet next to the footer address in your template, so one edit keeps both true.

An hour of work that stays done

Fix page speed, and you re-measure next quarter. Fix schema, and you're finished: the block lives in the template, every page reuses it, and Google reads it on each crawl. One careful hour, tested once, done for good.

The businesses showing stars and opening hours in results didn't win anything. They marked up facts they already had, tested the output, and left it correct.

How is your structured data holding up?

Run a free SiteGrade audit — structured data is one of 50+ checks, alongside titles, descriptions, and speed. One report, ranked by what to fix first, no account needed.

Run Free Audit