What Is Structured Data?

Last updated:

Structured data is machine-readable information that describes the content of a web page in a standardized format. It tells search engines, AI systems, and other software exactly what your content means — not just what it says.

The Problem Structured Data Solves

When a human reads a web page, they understand context. They see a phone number next to an address and know it belongs to a business. They see a star rating and know it refers to the product above it.

Machines do not have this intuition. A search engine crawler sees text, links, and HTML elements. It can parse the words, but it cannot reliably determine relationships between them. Is “4.5” a price, a rating, or a version number? Is “Apple” a fruit or a company?

Structured data removes this ambiguity. You annotate your content with explicit labels that machines can parse without guessing.

Before and After

Consider a simple recipe page. Without structured data, a search engine sees something like this:

<h1>Classic Banana Bread</h1>
<p>Prep time: 15 minutes</p>
<p>Cook time: 60 minutes</p>
<p>Rating: 4.8 out of 5</p>

The search engine can index the text, but it cannot reliably extract the prep time, cook time, or rating as distinct data points.

With structured data, you add a machine-readable layer:

{
  "@context": "https://schema.org",
  "@type": "Recipe",
  "name": "Classic Banana Bread",
  "prepTime": "PT15M",
  "cookTime": "PT1H",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.8",
    "ratingCount": "312"
  }
}

Now the search engine knows exactly what each value means. It can display a rich result with star ratings, cooking times, and other details directly in the search results page.

Why Structured Data Matters

Search Engine Rich Results

Structured data is the primary mechanism for earning rich results in Google, Bing, and other search engines. These are the enhanced listings you see in search results — star ratings on product reviews, FAQ accordions, recipe cards with images and cook times, event dates with ticket prices.

Without structured data, your pages appear as plain blue links. With it, they can occupy significantly more visual space in search results, which typically increases click-through rates.

AI and Knowledge Graphs

Search engines build knowledge graphs — vast databases of entities and their relationships. Structured data is a primary input for these graphs. When you mark up your business with Organization schema, you contribute to the search engine’s understanding of your entity.

Large language models and AI agents also benefit from structured data. When an AI system retrieves your page, structured data provides clean, unambiguous facts that the model can use directly, rather than attempting to extract them from prose.

Data Interoperability

Structured data follows open standards. The same Schema.org markup that Google reads can also be consumed by Bing, Apple, Facebook, Pinterest, AI assistants, and any other system that understands the vocabulary. You write it once, and multiple platforms benefit.

Types of Structured Data

Several structured data vocabularies exist. The most important ones:

Schema.org

The dominant vocabulary for web structured data. It defines thousands of types (like Product, Article, Event) and properties (like name, price, startDate). Schema.org was created in 2011 by Google, Microsoft, Yahoo, and Yandex. It is the vocabulary you will use most often.

Open Graph Protocol

Developed by Facebook, Open Graph tags control how your content appears when shared on social media. These are the og:title, og:description, and og:image meta tags. Open Graph is narrower in scope than Schema.org — it focuses on social sharing metadata rather than general-purpose content description.

Microformats

An older vocabulary that uses HTML class names to annotate content. Microformats predate Schema.org and are still used in some contexts, particularly for h-card (contact information) and h-entry (blog posts) in the IndieWeb community. For most use cases, Schema.org has superseded microformats.

Structured Data vs. Unstructured Content

Unstructured content is what humans read: paragraphs, headings, images with captions. It carries meaning through language, context, and visual layout.

Structured data is what machines read: explicitly labeled fields with defined types and relationships. It carries meaning through a shared vocabulary and predictable format.

You need both. Unstructured content serves your human readers. Structured data serves the machines that connect those readers to your content. They are complementary, not competing.

How Structured Data Is Added to Pages

There are three formats for embedding structured data in HTML:

  • JSON-LD — A JSON block placed in a <script> tag. Separate from the visible HTML. This is the recommended format.
  • Microdata — HTML attributes (itemscope, itemprop, itemtype) added directly to your markup.
  • RDFa — HTML attributes (typeof, property, vocab) similar to Microdata but based on RDF standards.

JSON-LD is the most widely used and the format recommended by Google. It is easier to maintain because it does not require modifying your HTML structure.

A Complete JSON-LD Example

Here is a complete example of structured data for a local business page:

{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "Park Street Coffee",
  "description": "Specialty coffee roaster and cafe in downtown Portland.",
  "url": "https://parkstreetcoffee.com",
  "telephone": "+1-503-555-0142",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "412 Park Street",
    "addressLocality": "Portland",
    "addressRegion": "OR",
    "postalCode": "97201",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 45.5152,
    "longitude": -122.6784
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
      "opens": "07:00",
      "closes": "18:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Saturday", "Sunday"],
      "opens": "08:00",
      "closes": "16:00"
    }
  ]
}

This block gives a search engine everything it needs to display a knowledge panel with the business name, address, phone number, and hours.

Getting Started

If you are new to structured data, start here:

  1. Learn the Schema.org vocabulary — understand types, properties, and hierarchy.
  2. Learn JSON-LD syntax — the format you will use to write structured data.
  3. Pick the schema types relevant to your content — Article, Product, FAQPage, Organization, or others.
  4. Test your implementation — use the Google Rich Results Test to validate.

The rest of this Foundations section covers each of these steps in detail.