Guide · 7 minute read

Schema markup for local businesses

Structured data turns "we think this is a bakery in Covina" into a stated fact. Here are the properties that matter, a working example and how to test it.

Why structured data matters for AI

Search engines and AI assistants can read your page text, but text is ambiguous. JSON-LD structured data, written in the schema.org vocabulary, states your details in a format machines parse the same way every time. It powers rich results on Google and gives assistants confident facts to quote.

Pick the most specific type

Use the most specific schema.org type that fits: Plumber, Dentist, Restaurant, AutoRepair, BeautySalon, LegalService and so on. If nothing fits, use LocalBusiness. Businesses without a public location can use Organization with areaServed.

The properties that matter

PropertyPriorityNotes
nameRequiredExactly as on your Google Business Profile
addressRequired for localA PostalAddress with street, city, region, postal code, country
telephoneRecommendedInternational format, such as +1-626-555-0142
url, logo, imageRecommendedAbsolute URLs
openingHoursSpecificationRecommendedDays with opens and closes times
geoRecommendedLatitude and longitude to five decimals
priceRangeOptionalSuch as $$ or "$89 to $400"
sameAsRecommended for AILinks to your Google, Yelp, Facebook, Instagram and LinkedIn profiles
areaServedOptionalCities or regions you cover

A working example

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Plumber",
  "name": "Valley Flow Plumbing",
  "url": "https://valleyflow.com/",
  "telephone": "+1-626-555-0142",
  "priceRange": "$$",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "100 Example Ave",
    "addressLocality": "Covina",
    "addressRegion": "CA",
    "postalCode": "91723",
    "addressCountry": "US"
  },
  "openingHoursSpecification": [{
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],
    "opens": "07:00", "closes": "19:00"
  }],
  "areaServed": ["Covina", "West Covina", "Glendora"],
  "sameAs": ["https://www.yelp.com/biz/example"]
}
</script>

Add FAQ markup for answer-ready content

If your page answers common questions, mark them up with FAQPage. Google limits FAQ rich results to certain sites, but the markup still gives AI tools clean question and answer pairs. Only mark up questions and answers that are visible on the page.

How to test it

  1. Paste your page URL into Google's Rich Results Test and fix any errors.
  2. Check the Schema.org validator for warnings about unknown properties.
  3. Run our AI Visibility Scanner to confirm the business entity, phone, address and hours are detected.

Generate valid JSON-LD with a completeness check.

Open the Schema Generator