# Schema & Structured Data for Local AI SEO | Lesson 4

> Get LocalBusiness schema onto your site so AI engines can resolve your business as an entity. Fields that matter, a copy-paste block, and how to validate it.

URL: https://aiseocourse.net/lessons/schema-and-structured-data-for-local-ai-seo/

would turn main into a scroll container and break every \`position: sticky\` inside it. --> 

Skip to main content

[#main-content →](#main-content)

Lesson 4 of 8

# Lesson 4: Make Your Business Machine-Readable With Schema

Last updated: September 20, 2026

Machine-readable facts so AI engines can resolve your business as an entity.

schedule 13 min read lock\_open Free, no signup person Written by Adam Yong

Next: Lesson 5 arrow\_forward

[/lessons/build-a-local-site-ai-can-find/ →](/lessons/build-a-local-site-ai-can-find/)

 

All 8 lessons

[/lessons/ →](/lessons/)

![JSON-LD block connecting a business entity to address, hours, areaServed and external profile nodes](/images/misc/flat-editorial-illustration-of-a-json-ld-block-con.webp)

★★★★★ 4.9 (200+ Verified Business Audits)

verified 100% Free, no signup, no paywall

group 9,400+ readers

schedule 8 lessons · ~80 minutes

What it fixes

[#what-it-fixes →](#what-it-fixes)

 

The lesson

[#lesson →](#lesson)

 

Key takeaways

[#takeaways →](#takeaways)

 

Figures

[#figures →](#figures)

 

Steps

[#steps →](#steps)

 

Guides

[#guides →](#guides)

 

FAQ

[#faq →](#faq)

What it fixes

## Entity problems LocalBusiness schema solves

fingerprint

### Another business shares your name

Two plumbers called Apex in the same region is enough for an engine to hedge or merge them. Structured data is often what lets it tell you apart.

local\_shipping

### You trade without a public address

Mobile and service-area businesses lose one of the strongest verification signals by default. Markup with areaServed puts a machine-readable version of your coverage back on the table.

help\_center

### You were told to add schema, not which fields matter

Most templates ship dozens of properties and a handful do the work. This lesson names the ones worth filling and the ones you can leave empty.

## What this lesson covers

check

What structured data does for AI retrieval

check

The LocalBusiness fields that actually matter

check

A copy-paste JSON-LD starting block

check

How to validate with Rich Results Test and a schema validator

check

What schema will and will not do

## Structured data is your facts, stated so they cannot be misread

Lesson 3

[/lessons/local-site-content-ai-can-cite/ →](/lessons/local-site-content-ai-can-cite/)

 was about writing facts a human can read and an assistant can lift. This lesson is about stating the same facts a second time, in a format built for machines.

Schema.org is a shared vocabulary for describing things on the web. JSON-LD is the format used to write that vocabulary into a page: a small script block that says, in effect, this page is about a business, here is its name, here is its address, here are its hours. Engines read it directly rather than inferring it from your layout.

The honest framing: for a business whose facts are already clean and unambiguous, schema is a marginal gain. For a business that is hard to pin down, a service-area operator with no public address, a name shared with another business in the region, a recent move, it can be the thing that lets an engine resolve you as one entity at all. The 

guide on whether you need schema for AI Overviews

[/guide/do-you-need-schema-to-appear-in-ai-overviews/ →](/guide/do-you-need-schema-to-appear-in-ai-overviews/)

 gives the direct answer on where your site sits.

## The fields that earn their place

Dozens of properties exist. These are the ones that consistently matter.

-   **name** and **url**, your trading name and canonical site URL.
-   **telephone**, matching your profile exactly, including format.
-   **address** as a PostalAddress, or **areaServed** if you hide your address.
-   **openingHoursSpecification**, matching the profile again.
-   **geo** as GeoCoordinates, useful for proximity understanding.
-   **sameAs**, an array of the external profiles you own.
-   **image** and **logo**, so the entity has a visual reference.
-   **priceRange**, a rough band rather than a precise figure.
-   **hasOfferCatalog**, optional, useful when you offer several distinct services.

The 

guide on which LocalBusiness fields matter

[/guide/what-localbusiness-schema-is-and-which-fields-matter/ →](/guide/what-localbusiness-schema-is-and-which-fields-matter/)

 covers the ones people add that change nothing, which is a longer list than you would hope.

## A starting block you can adapt

Replace the values, delete what does not apply, and validate before you ship it.

```
{
  "@context": "https://schema.org",
  "@type": "HVACBusiness",
  "@id": "https://example.com/#organization",
  "name": "Example Refrigeration Services",
  "url": "https://example.com/",
  "telephone": "+61 3 9000 0000",
  "email": "hello@example.com",
  "image": "https://example.com/images/premises.jpg",
  "priceRange": "$$",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "14 Hammond Road",
    "addressLocality": "Dandenong",
    "addressRegion": "VIC",
    "postalCode": "3175",
    "addressCountry": "AU"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": -37.9884,
    "longitude": 145.2148
  },
  "areaServed": [
    { "@type": "City", "name": "Dandenong" },
    { "@type": "City", "name": "Springvale" },
    { "@type": "City", "name": "Noble Park" }
  ],
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
      "opens": "07:30",
      "closes": "17:00"
    }
  ],
  "sameAs": [
    "https://www.google.com/maps/place/?q=place_id:EXAMPLE",
    "https://www.facebook.com/examplerefrigeration",
    "https://www.linkedin.com/company/examplerefrigeration"
  ]
}
```

Two rules that matter more than the syntax. Everything in that block must match your visible page, and everything must match your Google Business Profile. Markup that disagrees with the page it sits on is worse than no markup, because it creates exactly the contradiction 

Lesson 2

[/lessons/google-business-profile-for-ai-search/ →](/lessons/google-business-profile-for-ai-search/)

 told you to eliminate.

## Installing it

Wrap the JSON in a script tag with `type="application/ld+json"` and put it in the page. Head or body both work, despite the confident advice you will read elsewhere. What matters is that it renders in the served HTML and that the page it sits on is the page it describes.

On WordPress, a schema plugin or a snippet in the theme header both work, though a plugin that also generates its own competing block is a common source of duplication. On a hosted builder, look for a custom code or head-injection setting. On a hand-coded or static site, add it to the layout template. The 

guide on adding JSON-LD to a local business site

[/guide/how-to-add-json-ld-to-a-local-business-site/ →](/guide/how-to-add-json-ld-to-a-local-business-site/)

 walks each path and lists the mistakes that silently invalidate a block.

## Validate, then check it is actually live

Two checks, both free, both quick.

**Google Rich Results Test.** Paste the live URL. It tells you whether Google can parse the markup and whether the page is eligible for any rich result.

**A schema validator.** The Schema.org validator reports structural problems that the Google tool skips, because it checks the vocabulary rather than one search product’s requirements.

Then view the rendered page source and confirm the block is present on every page it should be. Markup that only exists in a plugin preview helps nobody. Re-run both checks any time you change a fact.

## sameAs, entity resolution and Wikidata

The `sameAs` array is how you tell an engine that the business on your site, the one on your Google profile, the one on Facebook and the one on a trade directory are all the same organisation. That is knowledge graph entity resolution in practice, and for a local business it is the highest-value part of the whole block after the basics.

List only profiles you genuinely own and maintain, typically three to eight. Dead or abandoned profiles are weak signals worth cleaning up. Almost no local business needs a Wikidata item, despite what you may have been told. The 

guide on using sameAs

[/guide/using-sameas-to-link-your-business-to-wikidata/ →](/guide/using-sameas-to-link-your-business-to-wikidata/)

 explains when it is worth the effort and when it is not.

## What schema will not do

It will not make a thin page quotable. It will not rescue a business whose listings contradict each other. It is not a declared ranking factor for AI Overviews, and no amount of correct markup will get you named if your pages say nothing specific. It also cannot invent authority: marking up a rating you collected on someone else’s platform is against the guidelines and risks losing rich result eligibility entirely.

| Problem | Does schema fix it? | What actually fixes it |
| --- | --- | --- |
| Facts are correct but ambiguous to a machine | Yes, this is its job | A validated LocalBusiness block |
| Listings contradict each other | No | The NAP audit in Lesson 2 |
| Pages contain nothing specific to quote | No | Rewriting passages, per Lesson 3 |

Treat it as what it is: the cheapest way to remove ambiguity about facts you have already made true elsewhere.

## What to do next

Add the block, validate it, and confirm it renders on the live page. Then move to 

Lesson 5

[/lessons/build-a-local-site-ai-can-find/ →](/lessons/build-a-local-site-ai-can-find/)

, which covers the technical floor that lets a crawler reach these pages at all. Markup nobody can fetch is markup that does nothing.

![Annotated LocalBusiness JSON-LD code panel with high-value fields highlighted](/images/content/annotated-localbusiness-json-ld-code-panel-in-mono.webp)

Annotated LocalBusiness JSON-LD code panel with high-value fields highlighted

Ask AI about this lesson:

travel\_explorePerplexity

[https://www.perplexity.ai/search?q=Read%20https%3A%2F%2Faiseocourse.net%2Flessons%2Fschema-and-structured-data-for-local-ai-seo%2F%20and%20summarise%20what%20it%20says%20about%20Schema%20and%20Structured%20Data%20for%20Local%20AI%20SEO%20for%20a%20local%20business%20owner%2C%20then%20list%20the%20three%20actions%20it%20recommends%20first. →](https://www.perplexity.ai/search?q=Read%20https%3A%2F%2Faiseocourse.net%2Flessons%2Fschema-and-structured-data-for-local-ai-seo%2F%20and%20summarise%20what%20it%20says%20about%20Schema%20and%20Structured%20Data%20for%20Local%20AI%20SEO%20for%20a%20local%20business%20owner%2C%20then%20list%20the%20three%20actions%20it%20recommends%20first.)

chatChatGPT

[https://chatgpt.com/?q=Read%20https%3A%2F%2Faiseocourse.net%2Flessons%2Fschema-and-structured-data-for-local-ai-seo%2F%20and%20summarise%20what%20it%20says%20about%20Schema%20and%20Structured%20Data%20for%20Local%20AI%20SEO%20for%20a%20local%20business%20owner%2C%20then%20list%20the%20three%20actions%20it%20recommends%20first. →](https://chatgpt.com/?q=Read%20https%3A%2F%2Faiseocourse.net%2Flessons%2Fschema-and-structured-data-for-local-ai-seo%2F%20and%20summarise%20what%20it%20says%20about%20Schema%20and%20Structured%20Data%20for%20Local%20AI%20SEO%20for%20a%20local%20business%20owner%2C%20then%20list%20the%20three%20actions%20it%20recommends%20first.)

auto\_awesomeGemini

[https://gemini.google.com/app?q=Read%20https%3A%2F%2Faiseocourse.net%2Flessons%2Fschema-and-structured-data-for-local-ai-seo%2F%20and%20summarise%20what%20it%20says%20about%20Schema%20and%20Structured%20Data%20for%20Local%20AI%20SEO%20for%20a%20local%20business%20owner%2C%20then%20list%20the%20three%20actions%20it%20recommends%20first. →](https://gemini.google.com/app?q=Read%20https%3A%2F%2Faiseocourse.net%2Flessons%2Fschema-and-structured-data-for-local-ai-seo%2F%20and%20summarise%20what%20it%20says%20about%20Schema%20and%20Structured%20Data%20for%20Local%20AI%20SEO%20for%20a%20local%20business%20owner%2C%20then%20list%20the%20three%20actions%20it%20recommends%20first.)

Visual reference

## Figures from this lesson

Diagrams you can screenshot and keep beside you while you work through the steps.

 

Why it matters

## Why structured data earns its place for a local business

fingerprint

### It removes ambiguity

If two businesses in your region share a name, or you trade without a public address, structured data is often what lets an engine tell you apart.

task\_alt

### It is a one-time job

Written once, validated once, then touched only when a fact changes. Few things in this course have that profile.

sync

### It keeps your facts in sync

Markup that mirrors your profile gives engines a second, machine-readable copy of the same story. Agreement is the signal.

balance

### It is honest about its limits

This lesson tells you when schema will not help, which saves you an afternoon if content work should come first.

Steps

## How to add LocalBusiness JSON-LD and validate it

1.  1 category
    
    ### Pick the right type
    
    Use the most specific LocalBusiness subtype that genuinely describes you, and fall back to LocalBusiness when none fits.
    
2.  2 edit\_note
    
    ### Fill the high-value fields
    
    Name, address or areaServed, telephone, openingHoursSpecification, url and geo. Match your profile exactly.
    
3.  3 hub
    
    ### Add sameAs links
    
    List the external profiles you actually own and maintain, so an engine can resolve them all to one entity.
    
4.  4 code
    
    ### Install it
    
    Drop the JSON-LD script into the page. Head or body both work, sitewide on the homepage plus per-page where the facts differ.
    
5.  5 verified
    
    ### Validate and re-check
    
    Run Rich Results Test and a schema validator. Fix errors, then confirm the block is live on every page it should be.
    

## Markup live? Make sure crawlers can reach it.

Lesson 5 covers the technical floor: rendering, speed, sitemaps and crawler permissions for the named AI bots.

play\_arrow Continue to Lesson 5

[/lessons/build-a-local-site-ai-can-find/ →](/lessons/build-a-local-site-ai-can-find/)

 

Open the 90-day checklist

[/checklist/ →](/checklist/)

## Guides that go deeper on schema and structured data

Short, evergreen answers that go deeper than the lesson itself.

decision-stage

### Do You Need Schema to Appear in AI Overviews?

A direct answer: what schema demonstrably helps with, what it doesn't, and who should skip it and do content work first.

[Do You Need Schema to Appear in AI Overviews? →](/guide/do-you-need-schema-to-appear-in-ai-overviews/)

process

### How to Add JSON-LD to a Local Business Site

Where the script tag goes, how to do it on WordPress or a site builder, how to validate it, and the mistakes that silently break a block.

[How to Add JSON-LD to a Local Business Site →](/guide/how-to-add-json-ld-to-a-local-business-site/)

scenario

### Marking Up areaServed When You Serve Several Towns

areaServed shapes, how many places to list before it stops helping, and keeping schema consistent with your profile service areas.

[Marking Up areaServed When You Serve Several Towns →](/guide/marking-up-areaserved-when-you-serve-several-towns/)

process

### Using sameAs to Link Your Business to Wikidata and Your Real Profiles

What sameAs does, which profiles to list and in what order, whether you need a Wikidata item, and how to check the links resolve.

[Using sameAs to Link Your Business to Wikidata and Your Real Profiles →](/guide/using-sameas-to-link-your-business-to-wikidata/)

definition

### What LocalBusiness Schema Is and Which Fields Matter

The LocalBusiness type and its subtypes, the fields worth filling, the ones that change nothing, and a minimal working example.

[What LocalBusiness Schema Is and Which Fields Matter →](/guide/what-localbusiness-schema-is-and-which-fields-matter/)

Reader feedback

## What readers said about the schema lesson

Feedback from owners and SEOs working through the lessons. These are reader comments, not Google Business Profile reviews.

★★★★★

Rated 5 out of 5

> "The schema lesson gave me a block I could paste and validate the same day. No upsell, no gated PDF, which is more than I can say for most of what's out there."

Marcus T.

Freelance SEO, 12 local clients

★★★★★

Rated 5 out of 5

> "Useful mostly because it told me when not to bother. Two of my clients needed content work first, and the lesson said so."

Owen B.

Small agency principal

Common questions

## LocalBusiness schema for AI SEO: common questions

Do I need schema to appear in AI Overviews? expand\_more

No. Plenty of businesses are cited with no markup at all, because content clarity and consistent facts carry more weight. Schema helps at the margin and helps most when your entity is ambiguous. The guide on whether you need schema for AI Overviews gives the direct answer.

Should I use LocalBusiness or a more specific subtype? expand\_more

Use the most specific subtype that genuinely fits, such as Plumber, Dentist or HVACBusiness, and fall back to LocalBusiness when none does. A wrong specific type is worse than a correct general one.

Where does the JSON-LD script go? expand\_more

Head or body both work. What matters more is that it is present on the pages it describes, that it is valid, and that it does not contradict the visible content.

Do I need aggregateRating markup? expand\_more

Only if the reviews are genuinely collected on your own site. Marking up ratings pulled from a third-party platform breaks the guidelines and can cost you rich result eligibility.

Can I have more than one schema block on a page? expand\_more

Yes, as long as each describes a distinct entity and they do not contradict each other. A LocalBusiness block plus an FAQPage block on the same page is normal.

My markup validates but nothing changed. Why? expand\_more

Validation confirms syntax, not eligibility or impact. If your pages have nothing specific to quote, correct markup will not create something. Go back to Lesson 3 first.

I serve several towns. How do I mark that up? expand\_more

Use areaServed with named places rather than inventing a page per town. The guide on marking up areaServed covers named places versus a geo radius and how many to list.

## Related lessons

Lesson 3

### Local Site Content AI Can Cite

What on-page content AI assistants are willing to quote, and how to write it.

[Local Site Content AI Can Cite →](/lessons/local-site-content-ai-can-cite/)

Lesson 5

### Build a Local Site AI Can Find

The technical baseline that lets AI crawlers reach and read your site.

[Build a Local Site AI Can Find →](/lessons/build-a-local-site-ai-can-find/)

![Portrait of Adam Yong](/images/squares/editorial-headshot-portrait-of-course-author-adam-.webp)

Adam Yong

Author & Founder, LocusPilot

Founder of LocusPilot and Agility Writer; leads GEO strategy at ADE Marketing.

verified Founder, LocusPilot (AI website builder for local businesses)

More about the author

[/author/adam-yong/ →](/author/adam-yong/)

Open access · Immediate start

## Ready for Lesson 5?

Build a Local Site AI Can Find. It picks up exactly where this lesson stops.

Read Lesson 5 arrow\_forward

[/lessons/build-a-local-site-ai-can-find/ →](/lessons/build-a-local-site-ai-can-find/)

 

View the 90-Day Checklist

[/checklist/ →](/checklist/)

No signup. No paywall. 8 lessons, ~80 minutes.
