The Local Business Schema Checklist for AI Search: LocalBusiness, Service and Review Markup (2026)

A practical checklist for LocalBusiness, Service and Review schema in 2026: what to mark up, which review rules still apply, and why third-party profiles often matter more than your own JSON-LD for AI citations.

Key takeaways

  • Use the most specific LocalBusiness sub-type you can (Dentist, Plumber, HVACBusiness) and keep name, address, phone and hours identical everywhere they appear.
  • Google restricts review and aggregateRating markup on a business's own site. Self-serving reviews do not earn stars, so do not build your strategy around them.
  • Nobody has published first-party data proving ChatGPT, Gemini or Perplexity read JSON-LD directly. Treat schema as a clean, consistent fact record, not a citation switch.
  • For local-intent prompts, third-party listings and review profiles collect more ChatGPT citations than the business's own site. Fix those profiles too.
  • Validate, monitor, and recheck after every site or hours change.

Let me be upfront about something most schema guides skip. I can't point you to a study showing that adding LocalBusiness markup makes ChatGPT cite you more. The data I trust doesn't say that. Promptwatch Data on ChatGPT citation types (Sep 28 to Oct 4, 2026) never mentions schema at all. It shows product pages at 22.4% of citations and landing pages at 16.8%.

What schema does do is remove ambiguity. Search engines, and the crawlers feeding AI systems, have to decide which phone number is current, which address is canonical, and which pages belong to which location. A machine-readable record settles that. Cleaner input usually means fewer wrong answers about you.

So think of this checklist as hygiene with an upside, not a growth hack. Do it because wrong hours in an AI answer cost you customers.

Google Search Central documentation for LocalBusiness structured data, showing supported properties and examples

Google's LocalBusiness documentation is the reference to check against. Everything below that's about Google behavior comes from there or from clearly flagged secondary sources.

Step 1: pick the right type

Don't default to the generic LocalBusiness when a specific child type exists. It is a small change, and it tells machines what you actually are.

BusinessUse this type
DentistDentist
Restaurant or cafeRestaurant, CafeOrCoffeeShop, FastFoodRestaurant
Law firmAttorney
Real estateRealEstateAgent
HVACHVACBusiness
Auto repairAutoRepair
Hair salonHairSalon
GymHealthClub
VetVeterinaryCare
ElectricianElectrician
PlumberPlumber
DoctorPhysician
PharmacyPharmacy
HotelHotel

If nothing fits, LocalBusiness is fine. Don't invent types.

Step 2: the core LocalBusiness checklist

Go through these properties for every location page. Google's example for a restaurant includes name, address, geo, url, telephone, priceRange, openingHoursSpecification and image, and that is a sensible baseline for any business.

  • name: your real trading name, exactly as it appears on your Google Business Profile
  • address: a full PostalAddress with street, locality, region, postal code and country
  • telephone: one primary number, in international format
  • url: the specific location page, not just the homepage, if you have several locations
  • geo: latitude and longitude
  • openingHoursSpecification: every day, including split shifts and closed days
  • image and logo: absolute URLs that actually load
  • priceRange: only if you can give an honest indicator
  • description: one or two plain sentences saying what you do and where
  • sameAs: your real profiles on Facebook, Instagram, Yelp and similar

Here is a compact example for a dentist.

{
  "@context": "https://schema.org",
  "@type": "Dentist",
  "name": "Downtown Dental Care",
  "description": "Family dentistry in Austin, TX. Cleanings, crowns, implants and emergency care.",
  "url": "https://www.downtowndentalcare.com",
  "telephone": "+1-512-555-0123",
  "image": "https://www.downtowndentalcare.com/office-photo.jpg",
  "logo": "https://www.downtowndentalcare.com/logo.png",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "123 Main Street, Suite 200",
    "addressLocality": "Austin",
    "addressRegion": "TX",
    "postalCode": "78701",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 30.2672,
    "longitude": -97.7431
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
      "opens": "08:00",
      "closes": "17:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": "Saturday",
      "opens": "09:00",
      "closes": "13:00"
    }
  ],
  "sameAs": [
    "https://www.facebook.com/downtowndentalcare",
    "https://www.yelp.com/biz/downtown-dental-care-austin"
  ]
}

Consistency matters more than completeness

The most common failure I see isn't missing properties. It's disagreement. The footer says one phone number, the schema says another, and the Google Business Profile says a third. Pick one source of truth and generate everything from it. A five-point audit from MD Tech Team starts with exactly this: check that business name, phone, URL and address match across the site and profiles.

MD Tech Team guide to schema markup for local business, covering identity details and testing

Step 3: add Service markup

A LocalBusiness record says who you are. Services say what you do, and AI answers to "emergency plumber in Austin" are about services. I haven't verified current schema.org guidance on Service and areaServed against live docs for this guide, so check schema.org before shipping, but the pattern is straightforward.

  • Give each major service its own page and its own Service entity.
  • Link the service to your business with provider.
  • Use areaServed to name cities or regions you actually cover.
  • Describe the service in plain language. No keyword stuffing.
{
  "@context": "https://schema.org",
  "@type": "Service",
  "name": "Emergency dental care",
  "serviceType": "Emergency dentistry",
  "description": "Same-day appointments for broken teeth, severe pain and lost fillings.",
  "provider": {
    "@type": "Dentist",
    "name": "Downtown Dental Care",
    "url": "https://www.downtowndentalcare.com"
  },
  "areaServed": {
    "@type": "City",
    "name": "Austin"
  }
}

Separate service pages also fit how ChatGPT searches. Promptwatch's query fanout data shows average query length dropping to about 53 characters from April 2026, with exactly 1.0 searches per response. Short queries reward focused pages with headings like "Emergency plumber Austin TX" over one sprawling services page.

Step 4: handle review markup carefully

This is where a lot of 2026 guides are wrong, so slow down.

Google's LocalBusiness documentation says review and aggregateRating are recommended only for sites that capture reviews about other local businesses. Google's review snippet rules, announced in September 2019, treat a review as self-serving when it is about entity A and sits on entity A's own site. Pages using LocalBusiness or another Organization type are not eligible for star rich results when the business controls its own reviews. BrightLocal's summary is blunt: these reviews are "allowed but ignored." Cloutly adds that self-serving markup alone doesn't trigger a manual action. It just earns nothing.

Some popular guides still claim aggregateRating gives you stars in the SERP and a 20-30% CTR lift. The CTR number is unsourced and the star claim conflicts with Google's own rule, so I wouldn't repeat either one.

So should you mark up reviews at all?

SituationReview markup
Your own business, reviews on your own siteOptional. No star snippet expected
A directory or review site covering other businessesYes, follow the review snippet guidelines
Reviews pulled from Google or Yelp into a widgetDon't mark up as if first-party
Fake, copied or cherry-picked reviewsNever

If you do include a Review, keep it honest and complete: author, rating, bestRating, datePublished and the real review text. Wikipedia-style neutrality applies. Markup must match what visitors can see on the page.

The better use of your time is getting reviews onto trusted third-party sites. In Promptwatch's branded-prompt data for ChatGPT (Sep 28 to Oct 4, 2026), review content rises to 5.6% of citations, more than three times its overall 1.7% share. Prompts that name a specific business are the closest proxy for "is [local business] any good?" People ask that constantly.

Step 5: don't ignore the off-site half

Here is the finding that should change your priorities. In Promptwatch's automotive citation data for August 2026, marketplaces and listings took 14.65% of ChatGPT citations and review and research sites took 12.62%. Manufacturer sites took 7.92%. Community, news, dealership and service sites combined got just 2.12%.

Autotrader led at 5%, Cars.com followed at 4.6%, and only one individual dealer group cracked the top 31, at 0.28%. Automotive is one industry, so don't stretch this too far. But it is the closest local-intent dataset available, and the lesson is clear: for local queries, third-party profiles outrank the business's own website.

That means your checklist has a second column.

  • Claim and complete profiles on the sites AI cites in your industry (for cars, DealerRater, Birdeye and BBB were Promptwatch's suggestions).
  • Keep name, address, phone and hours identical across all of them.
  • Add a plain-language FAQ page. FAQ pages earn 4.8% of branded-prompt citations in the same ChatGPT data.
  • Make sure the homepage and service pages answer pricing and who the service is for.

Listing management platforms can handle the syndication side. Options in this space include Yext, BrightLocal, Moz Local and Whitespark.

Favicon of Yext

Yext

Multi-location brand visibility across traditional and AI se
View more
Screenshot of Yext website
Favicon of BrightLocal

BrightLocal

Local SEO platform for multi-location businesses
View more
Screenshot of BrightLocal website
Favicon of Moz Local

Moz Local

Centralized local SEO platform for managing listings, review
View more
Screenshot of Moz Local website
Favicon of Whitespark

Whitespark

The complete local SEO toolkit for real rankings
View more
Screenshot of Whitespark website

Step 6: speakable and extras

Some guides recommend SpeakableSpecification for voice and AI. It's cheap to add with CSS selectors pointing at your description and hours summary, but Google has historically limited speakable support, and I found no evidence that AI assistants use it. Add it if it costs nothing. Don't expect much.

Skip anything that's decoration. Every property should describe something visible on the page.

Step 7: validate, deploy and recheck

  1. Write the JSON-LD in a single <script type="application/ld+json"> block per entity.
  2. Test with Google's Rich Results Test and the schema.org validator. Note that neither catches spammy or non-compliant usage, as Google's own troubleshooting section warns.
  3. Allow several days for re-crawling.
  4. Crawl the site periodically to catch broken markup after template changes. Screaming Frog and Sitebulb both extract structured data at scale.
  5. Watch Search Console for structured data errors.
Favicon of Screaming Frog SEO Spider

Screaming Frog SEO Spider

Desktop crawler for comprehensive technical SEO audits
View more
Screenshot of Screaming Frog SEO Spider website
Favicon of Sitebulb

Sitebulb

The technical SEO crawler that turns complex audits into act
View more
Screenshot of Sitebulb website
Favicon of Google Search Console

Google Search Console

Free tool to monitor Google search performance
View more

On WordPress, plugins such as Yoast SEO and Rank Math can output LocalBusiness markup. Check their output against your own source of truth rather than trusting defaults. If you want entity-level structured data at scale, WordLift is built for that.

Favicon of Yoast SEO

Yoast SEO

Content analysis and SEO guidance for WordPress
View more
Screenshot of Yoast SEO website
Favicon of Rank Math

Rank Math

WordPress SEO plugin with intuitive interface
View more
Screenshot of Rank Math website
Favicon of WordLift

WordLift

AI SEO tool for structured data and entities
View more
Screenshot of WordLift website

Multi-location businesses

One location, one page, one LocalBusiness entity. Don't stack five addresses into a single block on the homepage. Each location page needs its own address, phone, hours and geo, and the url should point at that page. Link locations back to a parent Organization if you have one. Franchises with hundreds of units should generate markup from a central database, not hand-edit it. The platforms mentioned earlier handle this, and so does a decent headless CMS.

Pre-launch checklist

CheckDone when
Specific sub-type chosenNot generic if a child type exists
NAP matches everywhereSite, schema, GBP, listings identical
Hours completeAll days, holidays handled
Service pages and markupOne per major service, with areaServed
Reviews handled per Google rulesNo self-serving star expectations
sameAs links realEvery URL resolves
Third-party profiles completeIndustry-relevant sites claimed
FAQ page publishedPlain language, answers real questions
Validated and monitoredRich Results Test passes, recrawl scheduled

Measure whether any of it shows up in AI answers

Schema won't tell you whether ChatGPT actually recommends you. You have to ask the models. Tools like Promptwatch can track how your business appears in AI answers across ChatGPT, Google AI Overviews and Perplexity, and which pages and third-party profiles get cited. That lets you see whether the listing cleanup above moves anything.

Favicon of Promptwatch

Promptwatch

Track and optimize your brand visibility in AI search engines
View more
Screenshot of Promptwatch website

If you want to compare options, the directories at bestgeosoftware.com and ai-rank-tools.com list GEO and AI rank tracking tools. Local grid trackers like Local Falcon cover the map pack side.

Favicon of Local Falcon

Local Falcon

Visual geo grid rank tracking for local businesses
View more
Screenshot of Local Falcon website

Bottom line

Write accurate, specific LocalBusiness and Service markup, keep every fact consistent, and don't chase review stars you aren't eligible for. Then spend the saved effort on the profiles AI actually cites. The schema takes an afternoon. The listings and reviews are the ongoing job.

Share:

© 2026 Surferstack · Find the best Marketing tools for your GTM motion · RSS

Surferstack is an affiliate review site. When you click links to vendors or buy through links on our site, we may earn an affiliate commission at no extra cost to you.

Surferstack is a review website based on user reviews on Reddit and G2, and on publicly available information. We keep everything as up to date as possible, but pricing and features can change. Always confirm the details with the vendor before purchasing.