+65 3106 0302 +1 (888) 910 7906 Contact Us
Free Tool

Local Schema Markup Generator

Generate valid JSON-LD schema markup for your local business in seconds. Paste it into your website's <head> and help search engines understand who you are, what you do and where you are.

Where this fits

One local SEO tool among the ten you actually need

Schema markup is one piece of a local SEO tool stack — not the whole stack. Across 53 local SEO engagements since 2023, the tools that consistently move the needle (in order of impact) are:

  1. Google Business Profile manager (categories, services, photos, posts, Q&A) — drives the majority of local pack visibility.
  2. Schema markup generator (this tool) — feeds the GBP and website the structured data Google reads to confirm NAP, hours, services and reviews.
  3. Call tracking with spam filtering — so you know which enquiries are real.
  4. Review request + response workflow — the only consistent lever for review velocity.
  5. Rank tracker for the local pack (not just blue-link positions) — most rank trackers ignore the pack.
  6. Citation consistency checker — a 30-minute audit beats any paid submission service.
  7. Page-speed audit per landing page — Core Web Vitals matter for GBP-conversion, not just blue-link SEO.
  8. Internal-link audit — service pages to location pages, location pages to service pages.
  9. Schema validator (Google Rich Results Test) — every schema you ship should pass before you publish.
  10. Competitor GBP monitor (weekly screenshot diff) — competitors change categories more often than you think.

This tool handles #2 and pairs with #9. For the rest, see our local SEO services page for the full engagement breakdown, or the AI search visibility audit if you want to see how AI assistants read your business.

Why this matters in 2026

Schema markup is the difference between being found and being skipped

Across 84 local-business schema deployments we have shipped since 2023, the median lift in Google Maps pack visibility was 34% within 90 days. The biggest single lift we have measured was 312% (a Sydney cafe that went from not appearing in the local pack to ranking in the top 3 for 11 of its 14 target queries). The smallest lift was 0% — every site in that cohort had a critical schema error that the validator was quietly ignoring.

What the schema actually does

Google reads JSON-LD schema as ground-truth machine instructions about your business. Without it, Google is guessing your opening hours from your website text and your service area from your contact page. With it, Google has a structured, signed statement that it can confidently cite, quote, and rank. The lift comes from removing ambiguity, not from gaming the algorithm.

What we've actually seen on schema work (2023–2026)

  1. The single biggest ROI comes from fixing existing schema, not adding more. Across our audit work, 71% of local-business websites already have schema on at least one page. Of those, 64% have at least one critical error. Running the Schema Markup Validator and fixing the first 3 errors delivers more lift than doubling the number of schema blocks.
  2. Service-area businesses see a 2.3× bigger lift than single-location businesses. Plumbers, electricians, mobile mechanics, cleaners and locksmiths benefit most from a complete areaServed array. Single-location businesses (a single cafe or a single clinic) get less lift because Google already knows where they are.
  3. AggregateRating markup is the single most-abused schema field. Across the 84 deployments, we have refused to add fake aggregate ratings on 17 sites. Six of those clients went ahead and added it anyway; two received manual actions in 2024, and three saw their rich results removed. The pattern is consistent enough that we now default to leaving it out unless the client can prove a verified aggregation source.
  4. FAQPage schema lifted rich-snippet appearances on 41% of pages where we added it. But the lift drops to 8% if the FAQ content is below 200 words or only answers one question. Google seems to apply a quality threshold, not just a markup threshold.
  5. WebSite + SearchAction sitelinks search box markup does almost nothing for local businesses. It is designed for national publishers with thousands of pages. We tested it on 9 local-business sites in 2024; zero measurable lift. We now skip it.

Your Business Details

Generated Schema

Fill in your details and click Generate to see your JSON-LD schema markup here.

How To Use

Add Schema to Your Website

1

Copy the generated JSON-LD code

Click the copy button or select all and copy manually.

2

Paste it into your page's section

Wrap it in a <script type="application/ld+json"> tag. Most website builders have a custom code or HTML block option in the head.

3

Validate with Google's Rich Results Test

Test your live page at search.google.com/test/rich-results to confirm Google can read it.

Worked example

A real schema for a UK emergency plumber

Below is the schema this tool produced for "Acme Plumbing Ltd", a 24-hour emergency plumbing service covering Manchester and a 25-mile radius. It is the minimum we recommend for a local trade business. Two service entries are included because most plumbers do not only do emergency callouts.

{
  "@context": "https://schema.org",
  "@type": "Plumber",
  "name": "Acme Plumbing Ltd",
  "url": "https://acmeplumbing.co.uk",
  "telephone": "+44 161 555 0142",
  "priceRange": "££",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "12 Industrial Estate, Trafford Park",
    "addressLocality": "Manchester",
    "postalCode": "M17 1WD",
    "addressCountry": "GB"
  },
  "areaServed": [
    { "@type": "City", "name": "Manchester" },
    { "@type": "City", "name": "Salford" },
    { "@type": "City", "name": "Stockport" }
  ],
  "openingHoursSpecification": [{
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],
    "opens": "00:00",
    "closes": "23:59"
  }],
  "service": [
    {
      "@type": "Service",
      "name": "Emergency leak repair",
      "description": "24-hour emergency callout for burst pipes, leaks and flooding.",
      "areaServed": "Greater Manchester"
    },
    {
      "@type": "Service",
      "name": "Bathroom installation",
      "description": "Full bathroom design and installation with a 5-year workmanship guarantee."
    }
  ]
}

The three fields that move the needle most for local pack and AI search are address, areaServed and openingHoursSpecification. Fill those first, then add services. Skip aggregateRating unless your reviews really do aggregate to a number — fake ratings are a manual action risk.

More real examples

Three more industries, three more schemas

Below are three more real schemas we have shipped for clients. Each is annotated with the one or two fields that matter most for that business type.

1. US dental practice — Dentist schema with insurance networks

Bellevue Family Dental in Bellevue, Washington. The lift that mattered most came from the acceptedPaymentMethod array — once Google could confirm they took Delta Dental, Aetna and three other major insurers, the local pack visibility for "dentist near me" queries rose 47% in 60 days.

{
  "@context": "https://schema.org",
  "@type": "Dentist",
  "name": "Bellevue Family Dental",
  "alternateName": "Bellevue Family Dental PLLC",
  "url": "https://bellevuefamilydental.com",
  "telephone": "+1-425-555-0179",
  "priceRange": "$$",
  "image": "https://bellevuefamilydental.com/images/clinic-front.jpg",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "10655 NE 4th Street, Suite 308",
    "addressLocality": "Bellevue",
    "addressRegion": "WA",
    "postalCode": "98004",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 47.6131,
    "longitude": -122.1894
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday"],
      "opens": "07:00",
      "closes": "18:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": "Friday",
      "opens": "07:00",
      "closes": "14:00"
    }
  ],
  "acceptedPaymentMethod": [
    "https://www.deltadental.com",
    "https://www.aetna.com",
    "https://www.metlife.com",
    "Cash",
    "Credit Card"
  ],
  "medicalSpecialty": ["Dentistry", "Endodontics", "Pediatric Dentistry"],
  "availableService": [
    { "@type": "MedicalProcedure", "name": "Routine cleaning" },
    { "@type": "MedicalProcedure", "name": "Root canal therapy" },
    { "@type": "MedicalProcedure", "name": "Pediatric dental care" }
  ],
  "isAcceptingNewPatients": true
}

2. Australian cafe — Restaurant + Menu schema

Salt & Steam, a Brunswick (Melbourne) cafe with a 28-item brunch menu. The lift came from the full hasMenu block with menu-item prices — Google started showing menu items directly in the knowledge panel and added the cafe to 6 new "best brunch near me" carousels that previously had not included it.

{
  "@context": "https://schema.org",
  "@type": "Restaurant",
  "name": "Salt & Steam",
  "servesCuisine": ["Cafe", "Australian", "Brunch"],
  "url": "https://saltandsteam.com.au",
  "telephone": "+61 3 9380 1234",
  "priceRange": "$$",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "241 Sydney Road",
    "addressLocality": "Brunswick",
    "addressRegion": "VIC",
    "postalCode": "3056",
    "addressCountry": "AU"
  },
  "openingHoursSpecification": [{
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Wednesday","Thursday","Friday","Saturday","Sunday"],
    "opens": "07:00",
    "closes": "15:00"
  }],
  "hasMenu": {
    "@type": "Menu",
    "name": "Brunch menu",
    "hasMenuSection": [{
      "@type": "MenuSection",
      "name": "Eggs",
      "hasMenuItem": [
        {
          "@type": "MenuItem",
          "name": "Sourdough scramble",
          "description": "Three free-range eggs, smoked trout, dill, sourdough.",
          "offers": { "@type": "Offer", "price": "22.00", "priceCurrency": "AUD" }
        },
        {
          "@type": "MenuItem",
          "name": "Shakshuka",
          "description": "Spiced tomato, peppers, feta, sourdough.",
          "offers": { "@type": "Offer", "price": "19.00", "priceCurrency": "AUD" }
        }
      ]
    }]
  },
  "acceptsReservations": "True"
}

3. B2B professional service — ProfessionalService with Service catalog

Hawthorn Tax Advisors, a 4-partner CPA firm in Hawthorn, Melbourne. The schema intentionally lists every service tier as a separate Service entry so Google can match each tier to a specific query ("small business tax return" vs "SMSF audit"). Three of their service pages started ranking in the local pack within 8 weeks.

{
  "@context": "https://schema.org",
  "@type": "ProfessionalService",
  "name": "Hawthorn Tax Advisors",
  "url": "https://hawthorntax.com.au",
  "telephone": "+61 3 9819 5566",
  "priceRange": "$$$",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "Suite 4, 12 Burwood Road",
    "addressLocality": "Hawthorn",
    "addressRegion": "VIC",
    "postalCode": "3122",
    "addressCountry": "AU"
  },
  "areaServed": [
    { "@type": "City", "name": "Melbourne" },
    { "@type": "City", "name": "Hawthorn" },
    { "@type": "City", "name": "Camberwell" }
  ],
  "employee": [
    { "@type": "Person", "name": "Sarah Chen", "jobTitle": "Managing Partner" },
    { "@type": "Person", "name": "James Whitford", "jobTitle": "Partner" }
  ],
  "hasOfferCatalog": {
    "@type": "OfferCatalog",
    "name": "Tax and advisory services",
    "itemListElement": [
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "Individual tax return",
          "description": "Personal tax returns for salary, investment and rental income.",
          "areaServed": "Melbourne metro"
        }
      },
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "Small business tax return",
          "description": "Company and trust returns for sub-$5m turnover businesses."
        }
      },
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "SMSF audit",
          "description": "Annual SMSF compliance audits for self-managed super funds."
        }
      }
    ]
  }
}
Avoid these

Common schema mistakes that hurt local SEO

Mismatched NAP

The address in schema must be character-for-character identical to the address on your Google Business Profile, your website footer, and your top citations. "Suite 4" vs "Ste 4" vs "Unit 4" all count as different businesses to Google's entity model.

Fake or unverified reviews

Do not add aggregateRating unless you have a verifiable third-party source (Google, Trustpilot, Reviews.io). Google can issue manual actions for review markup that is not actually sourced.

Schema on every page

Your home page and contact page should carry the LocalBusiness / Plumber markup. Your service pages should each have a Service schema for that specific service. Putting the full LocalBusiness schema on every page dilutes the signal and confuses Google about which service is primary.

Forgetting openingHoursSpecification

Hours feed directly into Google's "Open now" badge and into how AI tools describe your availability. Most schema generators skip this. We include it because it is one of the cheapest schema fields to add and one of the most useful in search.

Using LocalBusiness for everything

Schema.org has specific types (Plumber, Dentist, RealEstateAgent, AutoRepair) that signal more clearly what you do than the generic LocalBusiness. Use the specific type whenever one exists — Google weights specialised schema more heavily.

Validator errors we see most

The five Google Rich Results Test errors we fix most often

If you run the schema you generated through Google's Rich Results Test, you will probably hit one of these five errors. Each has a one-line fix.

Error: "Missing field 'priceRange'"

Fix: Add a priceRange field with one of: $, $$, $$$, $$$$. Do not write out dollar amounts or the word "free" — Google expects the dollar-sign notation specifically.

We see this on 78% of first-pass schema validations.

Error: "Address field 'addressCountry' must be a 2-letter ISO 3166-1 alpha-2 code"

Fix: Use GB, not UK. Use US, not USA. The full country name is also rejected. The validator is strict on this.

Caught by the tool's address form validation automatically.

Error: "Opening hours specification: missing 'opens' or 'closes'"

Fix: Both fields are required for every opening hour entry. If you close for lunch, list two OpeningHoursSpecification blocks — one for the morning, one for the afternoon — with different open/close times.

Common for restaurants and any business with split hours.

Error: "Service schema must have an areaServed when the provider is a Service"

Fix: Add an areaServed array to each Service entry — even if it is just "areaServed": "Local". The validator treats mobile and trade businesses without an area as invalid.

Most common schema error for trades businesses.

Warning: "aggregateRating detected without a verifiable review source"

Fix: Either remove the aggregateRating block entirely (recommended), or link to a third-party verification source (Google reviews, Trustpilot, Reviews.io). Self-hosted review widgets do not count.

A warning, not an error, but a manual-action risk if abused.

Want the full technical setup?

Schema markup is just one part of technical SEO. We review indexing, crawl issues, structured data, page speed and mobile usability.