Structured Data

Schema Markup Guide for Local Businesses

Get rich snippets in Google search. Step-by-step schema implementation with copy-paste JSON-LD templates you can use today.

What Is Schema Markup?

Schema markup (also called structured data) is code you add to your website that helps search engines understand your content better. It's a vocabulary created by Schema.org and supported by Google, Bing, Yahoo, and Yandex.

Think of it as providing search engines with a cheat sheet about your page. Instead of guessing what "480-555-1234" means, schema markup explicitly tells them "this is a telephone number for this business."

JSON-LD: The Recommended Format

There are three ways to implement schema: JSON-LD, Microdata, and RDFa. Google recommends JSON-LD because:

  • It's separate from your HTML (no mixing code with content)
  • It's easier to add and maintain
  • It can be dynamically generated
  • Errors don't break your page layout

Where to Add JSON-LD

Place JSON-LD scripts in the <head> section of your HTML, or at the end of the <body>. The script tag should use type="application/ld+json". You can have multiple schema scripts on a single page.

Watch: Schema Markup Explained for Beginners (4 min)

JSON-LD vs Microdata vs RDFa: Which Should You Use?

There are three formats for implementing structured data, but JSON-LD is the clear winner:

  • JSON-LD: Google's recommended format. Clean JavaScript object notation, doesn't mix with HTML, easy to generate dynamically, and errors don't break your page layout.
  • Microdata: HTML attributes embedded in your content. Harder to maintain, mixes data with presentation, but ensures schema matches visible content.
  • RDFa: Similar to Microdata but more complex. Used by some CMS systems but generally avoided for new implementations.

Use JSON-LD unless you have a specific reason not to. It's easier to implement, debug, and maintain.

Common Schema Mistakes to Avoid

These mistakes can get your schema ignored or trigger manual actions:

  • Fake reviews: Adding star ratings for reviews that don't exist on the page
  • Hidden content: Schema describing content that users can't see
  • Wrong business type: Using Restaurant schema for a plumber, for example
  • Missing required fields: Each schema type has required properties
  • Duplicate schemas: Multiple conflicting LocalBusiness schemas on one page

Always validate your schema and ensure it accurately represents visible page content.

Source: Google Search Central, "Structured Data General Guidelines" (2024)

Why Schema Matters for SEO

Schema markup doesn't directly boost rankings, but it can significantly improve how your pages appear in search results, leading to higher click-through rates.

Rich Snippets in Search Results

Properly implemented schema can enable rich results (also called rich snippets) that make your listing stand out:

Best Pool Service in Phoenix | VeterClean
https://veterclean.com
Veteran-owned pool cleaning service in Phoenix. Weekly maintenance starting at $99/month. Licensed, insured, eco-friendly.
★★★★★ 4.9 rating based on 127 reviews

Benefits of Schema Markup

  • Higher CTR: Rich snippets stand out and get more clicks
  • Better Understanding: Helps Google understand page content
  • Voice Search: Structured data helps voice assistants find answers
  • Knowledge Panel: Can contribute to knowledge panel information
  • Local Pack: LocalBusiness schema helps local search visibility

Schema Types and Their Rich Result Potential

Not all schema types trigger rich results. Here's what you can expect:

Schema Type Rich Result Difficulty
LocalBusiness Knowledge panel, local pack Easy
FAQPage Expandable FAQ snippets Easy
HowTo Step-by-step instructions Medium
Product + Review Star ratings, price, availability Medium
Article Top Stories, enhanced appearance Easy
Event Event listings with dates Easy
🔎
Source: Google Search Central, "Rich Result Types" (2024)

Common Schema Types for Local Businesses

🏢
LocalBusiness
Essential for any business with a physical location or service area

LocalBusiness schema tells search engines about your business name, address, phone, hours, and more. It's the foundation for local SEO and can help you appear in local pack results.

Subtypes: Use a more specific type when possible: Restaurant, Dentist, Plumber, ElectricalContractor, HousePainter, RoofingContractor, HVACBusiness, etc.

FAQPage
Enables FAQ rich results with expandable questions in search

FAQ schema marks up question-and-answer pairs on your page. When implemented correctly, Google may show expandable FAQ snippets directly in search results, taking up more SERP real estate.

🛠
Service
Describes services offered with pricing and details

Service schema describes what you offer, including service type, description, price range, and service area. Use it on service pages to help Google understand your offerings.

Review / AggregateRating
Enables star ratings in search results

Review schema marks up individual reviews and aggregate ratings. This can display star ratings in search results, dramatically improving click-through rates.

Copy-Paste Templates

Below are ready-to-use JSON-LD templates. Replace the placeholder values with your actual business information.

LocalBusiness Schema Template

Use this on your homepage and contact page. Replace all values in brackets.

JSON-LD - LocalBusiness
{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "[Your Business Name]",
  "image": "[https://yoursite.com/logo.jpg]",
  "description": "[Brief description of your business - 150-200 characters]",
  "@id": "[https://yoursite.com/#organization]",
  "url": "[https://yoursite.com]",
  "telephone": "[(480) 555-1234]",
  "email": "[info@yoursite.com]",
  "priceRange": "[$$ or $50-$200]",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "[123 Main Street]",
    "addressLocality": "[Phoenix]",
    "addressRegion": "[AZ]",
    "postalCode": "[85001]",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": [33.4484],
    "longitude": [-112.0740]
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
      "opens": "08:00",
      "closes": "17:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Saturday"],
      "opens": "09:00",
      "closes": "14:00"
    }
  ],
  "sameAs": [
    "[https://facebook.com/yourbusiness]",
    "[https://instagram.com/yourbusiness]",
    "[https://linkedin.com/company/yourbusiness]"
  ],
  "areaServed": [
    {
      "@type": "City",
      "name": "Phoenix"
    },
    {
      "@type": "City",
      "name": "Scottsdale"
    }
  ]
}

FAQ Schema Template

Add this to pages with FAQ content. You can include as many Q&A pairs as needed.

JSON-LD - FAQPage
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "[What is your most common question?]",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "[Your detailed answer to the question. Can include HTML like <p> and <a> tags.]"
      }
    },
    {
      "@type": "Question",
      "name": "[How much does your service cost?]",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "[Our services start at $X. Contact us for a free quote based on your specific needs.]"
      }
    },
    {
      "@type": "Question",
      "name": "[What areas do you serve?]",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "[We serve the greater Phoenix metro area including Scottsdale, Mesa, Chandler, Gilbert, and Tempe.]"
      }
    }
  ]
}

Service Schema Template

Use this on individual service pages to describe what you offer.

JSON-LD - Service
{
  "@context": "https://schema.org",
  "@type": "Service",
  "name": "[Weekly Pool Cleaning Service]",
  "description": "[Professional weekly pool cleaning service including chemical balancing, skimming, brushing, and equipment check.]",
  "provider": {
    "@type": "LocalBusiness",
    "name": "[Your Business Name]",
    "url": "[https://yoursite.com]"
  },
  "areaServed": {
    "@type": "City",
    "name": "[Phoenix]"
  },
  "serviceType": "[Pool Cleaning]",
  "offers": {
    "@type": "Offer",
    "price": "[99.00]",
    "priceCurrency": "USD",
    "priceSpecification": {
      "@type": "UnitPriceSpecification",
      "price": "[99.00]",
      "priceCurrency": "USD",
      "unitText": "per month"
    }
  }
}

AggregateRating Schema Template

Add this to display star ratings. Only use if you have genuine, verifiable reviews.

JSON-LD - AggregateRating (nested in LocalBusiness)
{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "[Your Business Name]",
  "url": "[https://yoursite.com]",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "[4.9]",
    "ratingCount": "[127]",
    "bestRating": "5",
    "worstRating": "1"
  }
}

Important: Review Guidelines

Only add AggregateRating schema if you have real, verifiable reviews. Google penalizes fake or misleading review markup. The reviews should be visible on your page.

Testing Your Schema

Before deploying schema to your live site, always test it. Google provides free tools for validation:

Schema Validation Tools

  • Google Rich Results Test: search.google.com/test/rich-results - Shows if your page is eligible for rich results
  • Schema Markup Validator: validator.schema.org - Validates all Schema.org types
  • SchemaReports: Our audit tool automatically detects and validates schema on your pages

Testing Process

  1. Add your JSON-LD script to the page
  2. Run the page through Google's Rich Results Test
  3. Fix any errors (red) that appear
  4. Address warnings (yellow) if possible
  5. Confirm the preview shows your expected rich result
  6. Deploy to production
  7. Request indexing in Google Search Console

Testing Tip

You can paste code directly into the Rich Results Test (Code tab) before adding it to your site. This lets you validate before deployment.

Troubleshooting Common Errors

Error: Missing Required Field

This means you're missing a property that Google requires for rich results. Common missing fields:

  • LocalBusiness: name, address (requires streetAddress, addressLocality, addressRegion, postalCode)
  • FAQPage: name and acceptedAnswer for each Question
  • Review: author, reviewRating (requires ratingValue)

Error: Invalid JSON

Your JSON has a syntax error. Common issues:

  • Missing comma between properties
  • Extra comma after the last property
  • Missing quotes around string values
  • Using single quotes instead of double quotes
  • Unclosed brackets or braces

Warning: Recommended Field Missing

Not required, but adding it improves rich result eligibility. Common recommendations:

  • image for LocalBusiness
  • priceRange for LocalBusiness
  • aggregateRating for LocalBusiness
  • geo coordinates

No Rich Results Showing

Even with valid schema, rich results aren't guaranteed. Reasons they might not show:

  • Page not indexed yet (wait or request indexing)
  • Google chooses different presentation
  • Low quality signals on the page
  • Schema doesn't match visible page content
  • Competing with too many other rich results

Check Your Schema Implementation

SchemaReports automatically detects, validates, and reports on all schema markup across your site.

Audit Your Website

Advanced Schema: Nesting and Relationships

Schema becomes powerful when you connect entities. For example, a LocalBusiness can include nested Service schema, which can include aggregate reviews. This creates a rich entity graph that helps search engines understand your business holistically.

Connecting Multiple Schema Types

A single page can have multiple interconnected schemas. Common patterns:

  • LocalBusiness + Service: List services within your business entity
  • Organization + Person: Connect team members to your organization
  • Service + Review: Add testimonials to specific services
  • Article + Author + Organization: Build E-E-A-T signals
  • WebPage + BreadcrumbList: Define site structure

Use the @id property to reference entities across different schema blocks on the same page.

🔗
Source: Schema.org Documentation, "Getting Started with Schema.org"

Frequently Asked Questions About Schema Markup

How long does it take for schema to appear in search results?

After implementing valid schema, Google needs to recrawl your pages and process the structured data. This typically takes 2-4 weeks, but can vary. Rich results are not guaranteed - even valid schema may not trigger rich snippets if Google determines it's not beneficial for that query. Monitor Google Search Console's Rich Results report for status.

Can I use schema without coding knowledge?

Yes. Tools like Google's Structured Data Markup Helper, WordPress plugins (Yoast SEO, Rank Math, Schema Pro), and schema generators can create the code for you. SchemaReports provides templates you can customize. However, understanding the basics helps you troubleshoot and avoid common mistakes.

Will schema help me rank higher?

Schema is not a direct ranking factor, but it can indirectly help. Rich snippets improve click-through rates, which signals relevance to Google. Schema also helps Google understand your content better, potentially leading to better matching for relevant queries. The biggest benefit is usually higher CTR, not higher rankings.

How do I test if my schema is working?

Use these official tools: Google's Rich Results Test (checks if rich results are eligible), Schema.org Validator (validates syntax), and Google Search Console's Rich Results report (shows what Google has indexed). Test before and after deployment. If validation passes but rich results don't appear, the schema may be valid but not eligible for that query type.

Do I need schema on every page?

Not necessarily. Focus on pages where schema provides value: homepage (Organization/LocalBusiness), service pages (Service schema), FAQ pages (FAQPage), and location pages (LocalBusiness with geo). Generic pages without structured content may not benefit from schema. Quality over quantity - it's better to have accurate schema on key pages than weak schema everywhere.

Related Guides