Resources

Schema.org Cheat Sheet for Local & Service Businesses

The JSON-LD types that matter most — with minimal copy-paste examples and a clear note on when to use each.

For local and service businesses, six JSON-LD types do most of the work: Organization (your brand entity), LocalBusiness (location and area served), Service (what you sell), FAQPage (question-and-answer rich results), BreadcrumbList (navigation context), and Article (blog and guide content). Add JSON-LD in a script tag in the page head, use one canonical Organization @id across the site, and for a Service-Area Business omit streetAddress — use areaServed and city/region only.

Why structured data matters

Schema.org markup describes your page in a machine-readable way so search and AI engines can understand it without guessing. It powers rich results — review stars, FAQ accordions, breadcrumb trails, business-hours cards — and gives generative engines clean facts to cite. For local and service businesses, a handful of types do almost all of the work.

How to add it

Put JSON-LD in a <script type="application/ld+json"> tag in the page head. Define your Organization once with a stable @id, then reference that same @id from every other node (Service provider, Article publisher, LocalBusiness) so engines resolve one unambiguous brand. Validate with the Schema.org validator or Google's Rich Results Test before shipping.

Quick reference

Type Use it for
OrganizationYour brand as a single sitewide entity.
LocalBusinessLocation, hours, and service area for a local/SAB business.
ServiceEach offering on its service page.
FAQPagePages with a real, visible Q&A section.
BreadcrumbListEvery page below the homepage.
ArticleBlog posts and long-form guides.

Organization

When to use: Once per site (usually sitewide). Defines your brand as a single entity that every other node references via a stable @id.

            {
  "@context": "https://schema.org",
  "@type": "Organization",
  "@id": "https://www.example.com/#organization",
  "name": "Digital Estate Media",
  "url": "https://www.example.com",
  "logo": "https://www.example.com/logo.png",
  "email": "sales@digitalestatemedia.com",
  "telephone": "+1-888-847-8809",
  "sameAs": [
    "https://www.linkedin.com/company/your-page"
  ]
}
          

LocalBusiness (Service-Area Business)

When to use: On your homepage or main location page. For a business with no public storefront, OMIT streetAddress and postalCode — describe coverage with areaServed and city/region/country only.

            {
  "@context": "https://schema.org",
  "@type": "ProfessionalService",
  "@id": "https://www.example.com/#localbusiness",
  "name": "Digital Estate Media",
  "url": "https://www.example.com",
  "telephone": "+1-888-847-8809",
  "email": "sales@digitalestatemedia.com",
  "address": {
    "@type": "PostalAddress",
    "addressLocality": "Mississauga",
    "addressRegion": "ON",
    "addressCountry": "CA"
  },
  "areaServed": [
    { "@type": "City", "name": "Mississauga" },
    { "@type": "City", "name": "Toronto" },
    { "@type": "AdministrativeArea", "name": "Ontario" }
  ],
  "openingHoursSpecification": [{
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
    "opens": "09:00",
    "closes": "17:00"
  }]
}
          

Service

When to use: On each service page. Names the offering, ties it to your Organization as provider, and states where it is offered.

            {
  "@context": "https://schema.org",
  "@type": "Service",
  "@id": "https://www.example.com/services/local-seo#service",
  "name": "Local SEO Services",
  "description": "Google Business Profile optimization, citations, and Map Pack ranking.",
  "url": "https://www.example.com/services/local-seo",
  "provider": { "@id": "https://www.example.com/#organization" },
  "areaServed": [
    { "@type": "AdministrativeArea", "name": "Ontario" },
    { "@type": "Country", "name": "Canada" }
  ]
}
          

FAQPage

When to use: On any page with a genuine Q&A section. Each question must be visibly answered on the page. Powers FAQ rich results and is easy for AI engines to lift.

            {
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [{
    "@type": "Question",
    "name": "How long does local SEO take?",
    "acceptedAnswer": {
      "@type": "Answer",
      "text": "Most service businesses see Map Pack movement in 3-6 months, depending on competition and review velocity."
    }
  }]
}
          

BreadcrumbList

When to use: On every page below the homepage. Gives engines the navigation path and can render breadcrumb trails in results.

            {
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    { "@type": "ListItem", "position": 1, "name": "Home",
      "item": "https://www.example.com/" },
    { "@type": "ListItem", "position": 2, "name": "Services",
      "item": "https://www.example.com/services" },
    { "@type": "ListItem", "position": 3, "name": "Local SEO",
      "item": "https://www.example.com/services/local-seo" }
  ]
}
          

Article

When to use: On blog posts and long-form guides. Carries headline, author, dates, and publisher so engines attribute the content correctly.

            {
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Local SEO Guide for Ontario Businesses",
  "url": "https://www.example.com/blog/local-seo-guide",
  "author": { "@type": "Person", "name": "Salman Habib",
    "url": "https://www.example.com/about" },
  "publisher": { "@id": "https://www.example.com/#organization" },
  "datePublished": "2026-05-28",
  "dateModified": "2026-05-28",
  "inLanguage": "en-CA"
}
          

A note on addresses (important)

If you run a Service-Area Business with no public storefront, do not publish a street address in your schema. Per Google's guidance for SABs, omit streetAddress and postalCode, and describe your coverage with areaServed plus city, region, and country only — exactly as the LocalBusiness example above does.

Key takeaways

FAQs

JSON-LD or Microdata?
Use JSON-LD. Google recommends it, it keeps structured data separate from your markup in a single <script> block, and it is far easier to maintain than inline Microdata or RDFa.
Where does the JSON-LD go on the page?
In a <script type="application/ld+json"> tag, ideally in the page head. Multiple schema nodes can each have their own script tag, or you can combine them in a single @graph array — both are valid.
Should every page have the same Organization @id?
Yes. Define the Organization once with a stable @id (e.g. https://www.example.com/#organization) and reference that same @id from Service, Article publisher, and LocalBusiness nodes so engines resolve one unambiguous brand entity.

Want your schema done right?

We implement and validate the structured data that wins rich results and AI citations for Ontario service businesses.

The DEM Dispatch

Growth tactics that

SEO, AI search, and paid-media playbooks for Canadian businesses — distilled into one short email, twice a month.