Sharkly logo
Glossary

What Is Schema Markup? The Complete Guide to Structured Data for SEO

Schema markup is the closest thing SEO has to a cheat code — but almost no small business or ecommerce store uses it correctly. Here's what it actually is, why Google loves it, and exactly which types you need depending on what kind of website you run.

Sharkly Team March 10, 2026 12 min read

What is schema markup?

Schema markup — also called structured data — is a standardised vocabulary of code that you add to your website's HTML to give search engines explicit, unambiguous information about your content.

Without schema, Google has to read your page like a human would — scanning your text, inferring what things mean, and making educated guesses about whether your page is a product listing, a local business, a recipe, a review, or an article. With schema, you tell Google directly: "This is a product. Its price is £49. It has 4.8 stars from 127 reviews. It's currently in stock." No inference required.

Our research describes it as "the highest-confidence signal channel available in technical SEO — you are writing for the algorithm, not human readers." That's a strong statement. It means that while most SEO signals require Google to interpret and weigh your content, schema markup communicates directly with Google's machine systems in their native language — bypassing the ambiguity that costs you ranking confidence on every other signal.

The vocabulary for schema markup is maintained at Schema.org — a collaborative project founded by Google, Bing, Yahoo, and Yandex in 2011. It defines hundreds of standardised types: Article, Product, LocalBusiness, Recipe, Event, FAQ, Review, Person, Organization, and many more. When you use these types correctly, every major search engine knows exactly what your content means.

Why does schema markup matter for SEO?

Schema serves four distinct purposes in Google's algorithm, and understanding all four is important — because most people only know about one of them.

1. It helps Google extract entities for the Knowledge Graph

Google maintains a massive Knowledge Graph — a database of real-world entities and their relationships. When Google crawls your page, it tries to identify entities: your business name, your products, your location, your industry, your team. The more confidently it can map your page to entities in the Knowledge Graph, the better it can classify and rank you.

Schema markup is the highest-confidence entity extraction mechanism available. When you use LocalBusiness schema with your exact NAP (name, address, phone number), Google doesn't have to guess whether "123 Main Street" means you're located there or you're citing it as an example. When you use Person schema for your authors, Google maps them directly to its author entity system. Explicit beats inferred, every time.

2. It unlocks rich results in Google Search

This is the one everyone knows. Rich results are the enhanced visual features Google shows for certain types of content: star ratings under a product listing, an expandable FAQ section directly in the search results, a recipe card showing prep time and calories, an event listing with date and location, a job posting with salary range.

Rich results require schema markup. There is no other way to get them. And they matter enormously for click-through rates — a result showing four gold stars and "127 reviews" will dramatically outperform a plain blue link for the same position. Since click-through rate is a direct input into Google's Navboost ranking system (confirmed as Google's most important ranking signal at the 2023 DOJ antitrust trial), better-looking results feed directly back into better rankings over time.

3. It improves query-to-page matching for complex content

Google's language models — BERT and MUM — are excellent, but they work on probability and inference. Schema removes the probability entirely for the properties you mark up. If you're a dentist in Chicago and your schema says "@type": "Dentist" and "addressLocality": "Chicago", Google has zero ambiguity about what you are and where you are. For complex pages with multiple entity types — an ecommerce product page that's also a brand page with reviews and FAQs — schema is the only reliable way to communicate all of that simultaneously.

4. It explicitly communicates EEAT signals

EEAT — Experience, Expertise, Authoritativeness, Trustworthiness — is Google's quality framework for evaluating content credibility. Schema gives you a direct channel to communicate EEAT signals that Google would otherwise have to infer from your text. Author credentials via Person schema, business legitimacy via Organization schema, review authenticity via AggregateRating schema — these are EEAT signals delivered in machine-readable format that Google can verify against other data sources.

How schema markup works — the technical basics

Schema markup is written in a format called JSON-LD (JavaScript Object Notation for Linked Data) and placed inside a <script> tag in your page's HTML. It's Google's recommended format, and for good reason: it's easy to read, easy to maintain, and separate from your visible content — so changing your schema doesn't risk accidentally changing what your visitors see.

Here's what the simplest possible schema looks like — an Organisation declaration for your business:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Your Business Name",
  "url": "https://www.yoursite.com",
  "logo": "https://www.yoursite.com/images/logo.png",
  "contactPoint": {
    "@type": "ContactPoint",
    "telephone": "+1-555-000-0000",
    "contactType": "customer service"
  }
}
</script>

Three things to understand about the format:

  • @context always points to https://schema.org — this tells Google which vocabulary you're using.
  • @type is the most important property — it declares what kind of thing this is (Organization, Product, Article, LocalBusiness, etc.).
  • Every other property is a detail about that thing — its name, address, price, rating, author, and so on.

The other two formats you may encounter are Microdata (attributes added inline to HTML elements) and RDFa (similar to Microdata). Both work, but JSON-LD is strongly preferred by Google and should be your default.

Schema markup for small businesses and local businesses

If you run a local business — a restaurant, salon, law firm, dental practice, plumber, gym, or any other service-area or brick-and-mortar business — schema markup is arguably more impactful for you than for anyone else. Local SEO is heavily entity-driven, and schema is your primary entity declaration mechanism.

LocalBusiness schema — the foundation

The LocalBusiness type (and its subtypes) is the most important schema for any local business. A critical requirement from our research: your schema NAP must match your Google Business Profile and all your online citations byte for byte. Inconsistency in your business name, address, or phone number across these sources creates entity confusion that undermines your local rankings.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "Sunrise Plumbing Co.",
  "image": "https://www.sunriseplumbing.com/images/storefront.jpg",
  "url": "https://www.sunriseplumbing.com",
  "telephone": "+1-312-555-0100",
  "priceRange": "$$",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "456 Oak Avenue",
    "addressLocality": "Chicago",
    "addressRegion": "IL",
    "postalCode": "60601",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 41.8781,
    "longitude": -87.6298
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
      "opens": "08:00",
      "closes": "18:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": "Saturday",
      "opens": "09:00",
      "closes": "14:00"
    }
  ],
  "sameAs": [
    "https://www.google.com/maps?cid=YOUR_CID",
    "https://www.yelp.com/biz/sunrise-plumbing-chicago",
    "https://www.facebook.com/sunriseplumbing"
  ]
}
</script>

Industry-specific LocalBusiness subtypes

Google's schema vocabulary has hundreds of specific business subtypes that communicate your industry with even higher confidence. Using the most specific type available is always better than the generic LocalBusiness.

Business TypeSchema @typeNotes
Restaurant / CaféRestaurantAdd servesCuisine, menu, hasMap
DentistDentistAdd medicalSpecialty
Doctor / GPPhysicianAdd medicalSpecialty, availableService
Law firmLegalServiceAdd areaServed, serviceType
AccountantAccountingServiceAdd areaServed
Hair salon / SpaBeautySalon / HealthClubAdd hasMap, priceRange
Hotel / B&BHotel / LodgingBusinessAdd checkinTime, checkoutTime, amenityFeature
Gym / FitnessSportsActivityLocationAdd availableService
Plumber / ElectricianPlumber / ElectricianAdd areaServed, serviceArea
Real estate agencyRealEstateAgentAdd areaServed

AggregateRating schema — displaying your stars in search results

If your business has reviews, you can display star ratings directly in Google search results using AggregateRating schema — one of the highest-impact rich results available for local businesses. This requires embedding the rating inside your LocalBusiness schema:

"aggregateRating": {
  "@type": "AggregateRating",
  "ratingValue": "4.8",
  "reviewCount": "127",
  "bestRating": "5",
  "worstRating": "1"
}

Important rule: Your schema rating must reflect your genuine review average from a real review platform. Never fabricate or inflate rating values. Google cross-references schema ratings against actual review data, and misleading markup is a manual action risk.

Schema markup for ecommerce stores

Ecommerce is where schema markup delivers its most visible return. Product schema unlocks rich results that can dramatically increase click-through rates — showing price, availability, and star ratings directly in search results before anyone even visits your page.

Product schema — the ecommerce essential

Every individual product page on your store should have Product schema. This is non-negotiable for competitive ecommerce SEO. Without it, you are invisible to the rich result eligibility system that your competitors may already be using.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Merino Wool Running Socks — 3-Pack",
  "image": [
    "https://www.yourstore.com/images/merino-socks-main.jpg",
    "https://www.yourstore.com/images/merino-socks-detail.jpg"
  ],
  "description": "Ultra-soft merino wool running socks with arch support and moisture-wicking properties. Available in sizes S–XL.",
  "sku": "MW-SOCK-3PK-BLK",
  "mpn": "MWSK3PKBLK",
  "brand": {
    "@type": "Brand",
    "name": "RunDeep"
  },
  "offers": {
    "@type": "Offer",
    "url": "https://www.yourstore.com/products/merino-wool-running-socks",
    "priceCurrency": "USD",
    "price": "34.99",
    "priceValidUntil": "2025-12-31",
    "itemCondition": "https://schema.org/NewCondition",
    "availability": "https://schema.org/InStock",
    "seller": {
      "@type": "Organization",
      "name": "Your Store Name"
    }
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.6",
    "reviewCount": "89",
    "bestRating": "5",
    "worstRating": "1"
  }
}
</script>

Key Product schema properties explained

PropertyWhat it doesRequired for rich results?
nameProduct name — appears in the rich result headlineYes
imageProduct image URL(s) — appears in the visual rich resultYes
offersPrice, currency, availability — enables price display in resultsYes (for price display)
aggregateRatingStar rating and review count — enables stars in resultsNo, but high impact
sku / mpnProduct identifiers — helps Google match your product to its entity systemRecommended
brandBrand entity — connects product to brand Knowledge Graph nodeRecommended
descriptionProduct description — used in rich result summariesRecommended

ItemList schema — for category and collection pages

Your category pages are some of the most commercially valuable pages on your store. ItemList schema tells Google that this page is a curated list of products, improving how it indexes and displays the page:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "ItemList",
  "name": "Running Socks",
  "url": "https://www.yourstore.com/collections/running-socks",
  "numberOfItems": 24,
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "url": "https://www.yourstore.com/products/merino-wool-running-socks",
      "name": "Merino Wool Running Socks — 3-Pack"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "url": "https://www.yourstore.com/products/compression-running-socks",
      "name": "Compression Running Socks"
    }
  ]
}
</script>

BreadcrumbList schema — site hierarchy for ecommerce

Breadcrumb schema communicates your site's category hierarchy to Google and enables breadcrumb display in search results — replacing the raw URL with a readable path like Home > Running > Socks. For ecommerce, this is especially valuable for category pages buried several levels deep.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Home",
      "item": "https://www.yourstore.com"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "Running",
      "item": "https://www.yourstore.com/collections/running"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "Socks",
      "item": "https://www.yourstore.com/collections/running-socks"
    }
  ]
}
</script>

Schema markup for blog posts and content sites

If you publish articles, guides, or any long-form content — whether as a standalone blog or as part of a broader business website — Article and FAQ schema are the two types with the highest direct SEO impact.

Article schema — communicating content metadata and EEAT

Article schema tells Google what kind of content this is, when it was published, when it was last updated, and who wrote it. The author and dateModified properties directly support EEAT signals — especially for industries where content freshness and author credentials matter (finance, health, legal).

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "How to Unclog a Shower Drain: 5 Methods That Actually Work",
  "description": "A practical guide to clearing shower drain blockages using household tools — no plumber required.",
  "image": "https://www.yoursite.com/images/unclog-shower-drain.jpg",
  "datePublished": "2025-01-15T09:00:00Z",
  "dateModified": "2025-06-01T09:00:00Z",
  "author": {
    "@type": "Person",
    "name": "Sarah Mitchell",
    "url": "https://www.yoursite.com/team/sarah-mitchell",
    "jobTitle": "Licensed Master Plumber"
  },
  "publisher": {
    "@type": "Organization",
    "name": "Sunrise Plumbing Co.",
    "logo": {
      "@type": "ImageObject",
      "url": "https://www.yoursite.com/images/logo.png"
    }
  },
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://www.yoursite.com/blog/how-to-unclog-shower-drain"
  }
}
</script>

Use NewsArticle for time-sensitive news content and BlogPosting for informal blog entries. For comprehensive guides and how-to content, plain Article is correct.

FAQ schema — one of the highest-impact schema types available

FAQ schema is the highest-density passage scoring target on any page. Our research notes this explicitly: "FAQ sections with question-format H3s are the highest-scoring passage scoring targets on a page — always include them." When combined with FAQ schema, each question-and-answer pair becomes a candidate for Google's featured snippet and expandable FAQ rich result — taking up significantly more real estate in search results.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "How long does schema markup take to show in Google?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Google typically processes and displays schema-driven rich results within a few days to a few weeks of your page being crawled. You can test whether Google can read your schema immediately using the Rich Results Test tool — but the rich result won't appear in live search until Google re-crawls and processes the page."
      }
    },
    {
      "@type": "Question",
      "name": "Does schema markup directly improve my rankings?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Schema markup is not a direct ranking factor in the traditional sense — Google does not give a ranking boost simply for having it. However, it improves rich result eligibility, which improves click-through rates, which feeds into Google's Navboost behavioural ranking system. It also improves entity confidence and EEAT signalling, both of which influence quality scoring. The effect is real and significant, but it works through these mechanisms rather than as a direct numerical boost."
      }
    },
    {
      "@type": "Question",
      "name": "Can I use multiple schema types on the same page?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes — and for most pages, you should. A product page might include Product schema, BreadcrumbList schema, and AggregateRating schema simultaneously. A local business homepage might include LocalBusiness, Organization, and FAQPage schema together. Use separate JSON-LD script blocks for each distinct type, or nest them as properties where appropriate (e.g., AggregateRating nested inside Product)."
      }
    }
  ]
}
</script>

Other important schema types to know about

HowTo schema

For any page that explains how to do something step-by-step — installation guides, tutorials, DIY articles — HowTo schema can unlock rich results showing the individual steps directly in search results.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "HowTo",
  "name": "How to Install a Smart Thermostat",
  "totalTime": "PT45M",
  "estimatedCost": {
    "@type": "MonetaryAmount",
    "currency": "USD",
    "value": "0"
  },
  "tool": [
    { "@type": "HowToTool", "name": "Screwdriver" },
    { "@type": "HowToTool", "name": "Voltage tester" }
  ],
  "step": [
    {
      "@type": "HowToStep",
      "position": "1",
      "name": "Turn off the power",
      "text": "Switch off the circuit breaker for your heating and cooling system before doing anything else.",
      "image": "https://www.yoursite.com/images/step1-turn-off-power.jpg"
    },
    {
      "@type": "HowToStep",
      "position": "2",
      "name": "Remove the old thermostat",
      "text": "Unscrew the faceplate and take a photo of the existing wiring before disconnecting anything.",
      "image": "https://www.yoursite.com/images/step2-remove-old-thermostat.jpg"
    }
  ]
}
</script>

Event schema

For businesses running workshops, classes, webinars, or any type of event, Event schema enables event-specific rich results including date, location, and ticket availability.

Recipe schema

Restaurants, food bloggers, and recipe sites benefit enormously from Recipe schema — enabling rich results with prep time, cook time, calories, ratings, and an ingredient list displayed directly in search results.

JobPosting schema

If your business posts job openings on its website, JobPosting schema makes those listings eligible for Google for Jobs — a dedicated job search feature that appears at the top of relevant search results, entirely separate from the standard organic listings.

SiteLinksSearchBox schema

For larger sites, SiteLinksSearchBox schema requests a search box directly in your Google search result — allowing users to search your site from the SERP. Typically only activates for sites with significant branded search volume.

The one rule that overrides everything else: schema must match your visible content

This is the most important rule in all of schema markup, and the most common way businesses get penalised: your schema must accurately reflect what is visibly on your page.

Google cross-references your structured data against your actual page content. If your Product schema says your item is "In Stock" but your page says "Currently Unavailable", that's a violation. If your AggregateRating shows 4.9 stars but your visible review average is 3.2, that's a manual action risk. If your FAQ schema contains questions and answers that don't appear anywhere in your page's visible text — technically also a violation.

The formal check from our research is precise: "No misleading schema — markup must match visible page content." Google's structured data guidelines call this "content mismatch" and it is one of the fastest ways to lose your rich results eligibility and potentially trigger a broader quality review of your domain.

How to test and validate your schema markup

Before publishing any page with schema markup, validate it with these two tools:

  • Google Rich Results Test (search.google.com/test/rich-results) — tells you whether your schema is eligible for specific rich result types and surfaces any errors or warnings that would prevent them from displaying.
  • Schema.org Validator (validator.schema.org) — checks your markup against the official Schema.org vocabulary for any structural errors, missing required properties, or invalid property values.

A third option — Google Search Console — shows rich result performance data over time under the "Enhancements" section. Once your pages are live and crawled, this tells you how many impressions and clicks your rich results are generating, and flags any new errors that emerge after deployment.

Schema markup quick reference — which types go on which pages

Page TypeSchema Types to UsePriority
Homepage (any business)Organization or LocalBusiness, WebSiteEssential
Local business — any pageLocalBusiness subtype, AggregateRatingEssential
Service pagesService, LocalBusiness, FAQPageEssential
Product page (ecommerce)Product, Offer, AggregateRating, BreadcrumbListEssential
Category page (ecommerce)ItemList, BreadcrumbListHigh
Blog post / ArticleArticle, FAQPage, BreadcrumbListHigh
How-to guideHowTo, Article, FAQPageHigh
RecipeRecipeEssential if applicable
Events pageEventEssential if applicable
Jobs / Careers pageJobPostingEssential if applicable
Author / Team pagePersonMedium (EEAT signal)
About pageOrganization, PersonMedium (EEAT signal)

Common schema markup mistakes — and how to avoid them

MistakeThe problemThe fix
Schema doesn't match visible contentManual action risk. Loss of rich result eligibility.Every schema property must reflect what's actually visible on the page.
Missing required propertiesRich result eligibility blocked even if schema is present. Google's validator will tell you exactly which fields are missing.Check every type against the Google Rich Results Test and fix all errors before publishing.
Using generic LocalBusiness when a specific subtype existsLower entity confidence. Missing subtype-specific rich results.Always use the most specific type: Dentist over MedicalBusiness over LocalBusiness.
NAP inconsistency between schema, GBP, and citationsEntity fragmentation — Google may not confidently associate all signals with the same businessYour Name, Address, Phone number must be byte-for-byte identical across all sources.
Schema injected via JavaScript onlyGoogle processes the <head> before executing JavaScript. Schema in JS may be processed late or missed entirely.Use JSON-LD in raw HTML. Verify with Search Console URL Inspection → View Tested Page.
Product schema with static prices on sale pagesPrices go out of date. Google may demote or remove rich results that show stale pricing.Dynamically generate schema from your product data, not hardcoded HTML. Most CMS platforms have plugins that do this.
No schema at allInvisible to the entire rich results system. Entity signals left entirely to inference.Start with your most commercially important pages. Homepage, product pages, service pages — in that order.

Based on "The Science of Google Search: A Complete SEO Dissertation" and "The Complete SEO System" — both grounded in 9 verified Google patents and 2023 DOJ antitrust trial testimony.

Ready to put this into practice?

Sharkly handles your keyword research, content strategy, and article generation — automatically.

Try Sharkly Free