Skip to content
Wadhah Belhassen
← All articlesLocal SEO

Local Schema Markup Guide: LocalBusiness, Service, FAQPage & More

A practical local schema markup guide — LocalBusiness, Service, FAQPage, Review, BreadcrumbList, with copy-paste JSON-LD templates for service businesses.

Wadhah Belhassen2026-07-2412 min read
Local Schema Markup Guide: LocalBusiness, Service, FAQPage & More

Local schema markup is the invisible layer that tells Google exactly what your business is, what you offer, and where you operate. Done right, it surfaces rich snippets in search results, improves local pack relevance signals, and quietly lifts CTR on every page that includes it.

This guide walks through the schema types that matter for local businesses — LocalBusiness, Service, FAQPage, Review, BreadcrumbList — with copy-paste JSON-LD templates you can adapt for your business. By the end you will have a clear implementation map for every page type on a typical local business site.

Schema is not a ranking factor in the traditional sense — but it is a relevance and trust signal that compounds across the site.

What schema markup actually is

Schema markup is structured data added to HTML that helps search engines understand the meaning of page content. It is implemented as JSON-LD (recommended), Microdata, or RDFa — Google has stated preference for JSON-LD.

The vocabulary comes from Schema.org, a joint Google/Microsoft/Yahoo/Yandex initiative. Hundreds of schema types exist for everything from books to medical procedures to local businesses.

For local businesses, a small set of schema types covers 95 percent of what matters. Focus there.

Why local businesses need schema

Schema does three things that benefit local SEO directly.

1. Enables rich snippets

Star ratings, FAQ accordions, business hours, breadcrumbs, and price ranges all appear in search results when proper schema is in place. Rich snippets lift CTR by 10 to 35 percent on average.

2. Confirms business data to Google

When Google's crawler can parse explicit data — address, phone, hours, services — it builds higher confidence in your business. Higher confidence translates to better local pack visibility.

3. Surfaces in voice search and AI answers

Voice assistants and AI search increasingly read schema as the primary source of business information. Schema-marked pages get surfaced; unmarked ones get skipped.

We covered the broader local ranking foundation in our Google Maps ranking factors guide. Schema sits underneath as a trust-confirming layer.

The schema types every local business needs

For a typical local service business site, six schema types do the heavy lifting.

LocalBusiness (on every page or in the footer)

The foundational schema. Establishes your business identity, address, hours, contact info, and area served.

Service (on each services page)

Describes specific services you offer with descriptions and area served.

FAQPage (on relevant pages)

Marks up FAQ content so it can appear as a rich snippet accordion in search results.

Review and AggregateRating (on review or testimonial pages)

Surfaces star ratings in search snippets. Requires careful compliance with Google's policies.

BreadcrumbList (on every internal page)

Improves how URLs render in search results and confirms site structure.

Article or BlogPosting (on blog content)

For blog posts and educational content.

LocalBusiness schema — the foundation

This is the most important schema for any local business. It belongs on your homepage, contact page, and ideally in your site footer schema block.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "DentalClinic",
  "@id": "https://example.com/#localbusiness",
  "name": "Cabinet Dentaire Lyon 6e",
  "description": "Family-owned dental practice in Lyon 6e offering general dentistry, implants, and cosmetic care. Open Saturdays.",
  "url": "https://example.com",
  "telephone": "+33478000000",
  "email": "contact@example.com",
  "image": "https://example.com/images/clinic-exterior.jpg",
  "logo": "https://example.com/logo.png",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "12 Rue du Président Carnot",
    "addressLocality": "Lyon",
    "addressRegion": "Auvergne-Rhône-Alpes",
    "postalCode": "69006",
    "addressCountry": "FR"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": "45.768",
    "longitude": "4.851"
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
      "opens": "09:00",
      "closes": "19:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": "Saturday",
      "opens": "09:00",
      "closes": "13:00"
    }
  ],
  "priceRange": "€€",
  "areaServed": [
    { "@type": "City", "name": "Lyon" },
    { "@type": "AdministrativeArea", "name": "Rhône" }
  ],
  "sameAs": [
    "https://www.facebook.com/example",
    "https://www.instagram.com/example",
    "https://www.linkedin.com/company/example"
  ]
}
</script>

Pick the most specific LocalBusiness subtype

Schema.org provides hundreds of LocalBusiness subtypes. Use the most specific match for your business.

Examples:

  • DentalClinic (not just LocalBusiness)
  • LegalService (with specific subtypes Attorney, Notary)
  • AutoRepair (not just LocalBusiness)
  • BeautySalon, HairSalon (specific)
  • Restaurant, FastFoodRestaurant, CafeOrCoffeeShop

Specificity raises relevance.

Match every field to your real GBP data

The schema NAP must match your Google Business Profile NAP exactly. Inconsistency between schema and GBP is a confidence-killer.

We covered the NAP consistency principle in our local citations and NAP consistency guide. The schema layer counts as a citation in this audit.

Use a stable @id

The @id field acts as a unique identifier. Use a URL like https://example.com/#localbusiness so the schema can be referenced from other schemas on the site.

Service schema — for each service page

Every service page should have Service schema describing what is offered, who provides it, and where.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Service",
  "serviceType": "Dental Implants",
  "provider": {
    "@id": "https://example.com/#localbusiness"
  },
  "areaServed": [
    { "@type": "City", "name": "Lyon" },
    { "@type": "AdministrativeArea", "name": "Rhône" }
  ],
  "description": "Full-arch and single-tooth dental implants using titanium and zirconia options. Same-day implant consultations available in our Lyon 6e practice.",
  "offers": {
    "@type": "Offer",
    "priceCurrency": "EUR",
    "priceRange": "€800 - €3500",
    "availability": "https://schema.org/InStock"
  }
}
</script>

The provider field references the LocalBusiness schema via @id. This connects the service to the business without repeating the full business block.

FAQPage schema — for FAQ sections

If you have FAQ content on a page, mark it up. Google often surfaces the FAQs as an expandable section in search results.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "How long do dental implants last?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "With proper care, dental implants typically last 20 to 30 years. The crown attached to the implant may need replacement after 10 to 15 years."
      }
    },
    {
      "@type": "Question",
      "name": "Are dental implants painful?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "The implant procedure is performed under local anaesthesia, so the procedure itself is not painful. Most patients report mild discomfort for 2 to 3 days afterward, manageable with over-the-counter pain relievers."
      }
    }
  ]
}
</script>

The questions and answers in the schema must match what is visible on the page. Mismatch can trigger a manual action.

Review and AggregateRating schema

This is the schema that surfaces star ratings in search results. Use carefully and respect Google's policies.

Use AggregateRating when displaying a summary

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Service",
  "name": "Dental Implants Lyon",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.9",
    "reviewCount": "127"
  }
}
</script>

Critical rules for review schema

  • The reviews must be visible on the page where the schema appears
  • The ratings must be genuine and verifiable
  • You cannot mark up reviews you do not own (third-party reviews from Google, Yelp, etc. cannot be pulled into your own schema)
  • Self-serving reviews are forbidden — you cannot mark up "reviews" you wrote about yourself

Most Google policy violations on schema involve fake or unverifiable review markup. Use real testimonials from your own site, gathered through your own systems, and only mark up reviews that are visible on the same page.

BreadcrumbList schema

Breadcrumbs help search results show your site's hierarchy. Add this to every internal page.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Home",
      "item": "https://example.com"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "Services",
      "item": "https://example.com/services"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "Dental Implants",
      "item": "https://example.com/services/dental-implants"
    }
  ]
}
</script>

Article schema — for blog posts

For blog posts and content pieces, use Article or BlogPosting schema.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "How to Prepare for a Dental Implant Procedure",
  "image": "https://example.com/blog/dental-implant-cover.jpg",
  "datePublished": "2026-07-24",
  "dateModified": "2026-07-24",
  "author": {
    "@type": "Person",
    "name": "Dr. Jean Lefebvre"
  },
  "publisher": {
    "@id": "https://example.com/#localbusiness"
  },
  "mainEntityOfPage": "https://example.com/blog/dental-implant-preparation"
}
</script>

Author schema with a real human author (not just "Admin" or the brand name) is a small EEAT signal that helps in YMYL industries (medical, legal, financial).

Where to place schema on the site

A clean schema implementation across a typical local business site:

  • Homepage: LocalBusiness schema
  • Contact page: LocalBusiness schema (duplicated reinforcement)
  • Each services page: Service schema referencing the LocalBusiness via @id
  • FAQ section on any page: FAQPage schema
  • Each location page (for multi-location): separate LocalBusiness schema with location-specific data
  • Blog posts: Article or BlogPosting schema
  • All internal pages: BreadcrumbList schema
  • Pages with testimonials: Review or AggregateRating where verifiable

For multi-location businesses, see our local SEO for multi-location businesses guide for the location-specific schema structure.

How to validate schema

Always validate after adding schema.

Google Rich Results Test

Go to search.google.com/test/rich-results and paste the URL. It tells you which rich result types qualify and flags any errors.

Schema.org Validator

Go to validator.schema.org for general schema validation. Stricter than Google's tool but catches structural issues earlier.

Search Console enhancement reports

After deployment, check Google Search Console's "Enhancements" section. It shows which pages have valid schema and which have errors at scale.

Common schema mistakes

These are the patterns that break rich snippets or trigger manual actions.

Schema not matching visible content. Markup says one thing, page says another. Triggers manual penalty.

Self-serving review schema. Marking up reviews you wrote about yourself. Violates policy.

Stuffing reviews from third parties. Pulling Google reviews into your own AggregateRating schema. Violates policy.

Wrong LocalBusiness subtype. Using generic LocalBusiness when a specific subtype exists. Misses relevance signal.

Missing @id linkage. Service schema not referencing LocalBusiness via @id. Misses confirmation signal.

Schema only on homepage. Should be on every relevant page. Single-page schema misses 90 percent of the SEO benefit.

Stale schema after data changes. Hours change, schema does not update. Mismatch hurts trust.

How long until schema shows impact

Schema impact comes in phases.

Days 1 to 14 — Google re-crawls and indexes the schema. Rich Results Test starts validating qualifying snippets.

Days 15 to 45 — Rich snippets begin appearing in search results. CTR lifts on pages with new rich results.

Days 45 to 120 — Local pack ranking signals compound as Google's confidence in business data rises.

The schema lift is usually 5 to 20 percent CTR improvement on pages with rich snippets, plus a slower compounding ranking lift.

Frequently asked questions

Is schema markup a ranking factor?

Not directly. Schema does not lift rankings on its own. It enables rich snippets (which lift CTR), provides trust signals (which lift local pack ranking confidence), and improves voice and AI search surfacing.

Do I need schema on every page?

LocalBusiness on the homepage and contact page. Service on each services page. FAQPage on FAQ pages. BreadcrumbList on every internal page. Schema is page-level, not site-level.

Can I use multiple schema types on one page?

Yes. A page can have LocalBusiness, Service, FAQPage, and BreadcrumbList schema all at once. Common on services landing pages with FAQ sections.

How do I add schema without coding skills?

Use a plugin or schema generator. WordPress has Yoast and RankMath. Most modern site builders include schema options. For custom sites, a developer adds JSON-LD blocks in 1 to 2 hours per page type.

Will schema fix bad local SEO?

No. Schema is a confirmation layer. It amplifies real signals. If your Google Business Profile is weak or your citations are inconsistent, schema does not compensate. Fix the foundations first.

Are there schema penalties?

Yes. Misleading or self-serving review markup, schema that does not match visible content, and aggressive markup attempts can trigger manual actions. Validate, stay honest, and you avoid penalties.

Get a schema audit

We audit schema implementations free of charge. Within 48 hours we deliver a per-page-type breakdown of what is implemented, what is missing, and what is misconfigured.

Book a free 30-minute audit. We screen-share, walk through the validation results, and you leave with a clear implementation plan.

Or explore our Local SEO service for the full system we run on local business clients.

Want these strategies applied to your business?

30 minutes of free audit with concrete recommendations tailored to your business.