Skip to main content
Beta: Front-End Checklist is currently in beta. Some issues are still being fixed. Thanks for your patience.
SEOMedium

Add LocalBusiness schema markup

Validates LocalBusiness schema for local SEO

Utilities
Quick take
Typical fix time 20 min
  • Add LocalBusiness JSON-LD schema to your homepage and contact page
  • Required properties: @type, name, address (PostalAddress), telephone
  • Include openingHours, geo coordinates, and image for richer results
  • Use a more specific sub-type when available (Restaurant, DentalClinic, etc.)
Why it matters: LocalBusiness schema enables Google to show your business details (hours, address, phone, rating) directly in search results and Google Maps, improving local visibility without requiring a click.

Rule Details

LocalBusiness schema is JSON-LD structured data that tells search engines the key facts about a physical business: name, address, phone, hours, and location. Google's local business structured data documentation (opens in new tab) and visible NAP consistency should reinforce the same business details.

Code Examples

<!-- ✅ Good: Complete LocalBusiness schema -->
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Restaurant",
  "name": "Mario's Pizzeria",
  "url": "https://mariospizzeria.com",
  "telephone": "+1-555-123-4567",
  "image": "https://mariospizzeria.com/images/storefront.jpg",
  "priceRange": "$$",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "123 Main Street",
    "addressLocality": "Springfield",
    "addressRegion": "IL",
    "postalCode": "62701",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 39.7817,
    "longitude": -89.6501
  },
  "openingHours": [
    "Mo-Fr 11:00-22:00",
    "Sa-Su 12:00-23:00"
  ],
  "hasMap": "https://maps.google.com/?cid=1234567890"
}
</script>
<!-- ❌ Bad: Missing address details, no telephone -->
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "Mario's"
}
</script>

Why It Matters

LocalBusiness schema enables Google to show your business details (hours, address, phone, rating) directly in search results and Google Maps, improving local visibility without requiring a click. The underlying vocabulary comes from Schema.org's LocalBusiness type (opens in new tab), but the page still needs matching on-page business information.

Required Properties

PropertyTypeExample
@typeText"Restaurant" or "LocalBusiness"
nameText"Mario's Pizzeria"
addressPostalAddresssee below
telephoneText"+1-555-123-4567"
urlURL"https://example.com"
PropertyPurpose
openingHoursBusiness hours (Mo-Fr 09:00-17:00)
geoGeoCoordinates (latitude/longitude)
imageBusiness photo URL
priceRangePrice range symbol ($ to $$$$)
currenciesAcceptedCurrency codes
paymentAcceptedCash, Credit Card, etc.
areaServedGeographic area

LocalBusiness Sub-Types

Use the most specific type available:

  • Restaurant, CafeOrCoffeeShop, FastFoodRestaurant
  • DentalClinic, Physician, Hospital
  • AutoDealer, AutoRepair
  • Hotel, LodgingBusiness
  • ShoppingCenter, Store, ClothingStore
  • Gym, SportsActivityLocation

Full list: Schema.org LocalBusiness hierarchy (opens in new tab)

Next.js Implementation

// app/layout.tsx or app/page.tsx
export default function HomePage() {
  const schema = {
    '@context': 'https://schema.org',
    '@type': 'LocalBusiness',
    name: 'My Business',
    address: {
      '@type': 'PostalAddress',
      streetAddress: '123 Main St',
      addressLocality: 'Springfield',
      addressRegion: 'IL',
      postalCode: '62701',
      addressCountry: 'US',
    },
    telephone: '+1-555-000-0000',
    url: 'https://example.com',
  }
 
  return (
    <>
      <script
        type="application/ld+json"
        dangerouslySetInnerHTML={{ __html: JSON.stringify(schema) }}
      />
      {/* page content */}
    </>
  )
}

Validation

Use Google's Rich Results Test (opens in new tab) to confirm the schema is valid and eligible for rich results.

Exceptions

  • Only add or enforce schema types that the page can truthfully support; irrelevant structured data is worse than no structured data.
  • A technically valid schema block can still be misleading if the page content does not visibly back it up; audit rendered content and schema together.
  • If indexability, canonical-url, or main content quality is wrong, fix that foundation before optimizing schema details.

Standards

  • Use these references as the standard for the final search-facing HTML, metadata, and crawl behavior.
  • Check the implementation against Schema.org: LocalBusiness before treating the rule as satisfied.
  • Check the implementation against Google Search Central: Local business structured data before treating the rule as satisfied.

Verification

Automated Checks

  • Inspect rendered HTML and HTTP headers to confirm the expected metadata or crawlability signal is present.
  • Test the affected URL with Google Search Console or equivalent tooling where relevant.
  • Re-crawl a representative page set after deployment.

Manual Checks

  • Confirm the change does not create conflicting canonical-url, robots, or structured-data signals.

Use with AI

Copy these prompts to use with your AI assistant, or install the MCP server to use directly from Claude, Cursor, or Windsurf.

Check

Verify implementation

Check the page source for a JSON-LD script block with @type matching 'LocalBusiness' or a sub-type (Restaurant, Store, etc.). Verify the required properties are present: name, address with PostalAddress, telephone, and url. Validate with Google's Rich Results Test.

Fix

Auto-fix issues

Add a <script type='application/ld+json'> block to the homepage with LocalBusiness schema. Include: @context, @type, name, address (with streetAddress, addressLocality, addressRegion, postalCode, addressCountry), telephone, url, openingHours, and geo. Use a specific sub-type if applicable.

Explain

Learn more

LocalBusiness structured data tells Google the essential details about a physical business. This data powers the Knowledge Panel in search results, the local pack ('map pack'), and integrations with Google Maps. Without it, Google has to guess business details from unstructured page content.

Review

Code review

Find JSON-LD script blocks with @type 'LocalBusiness' or a sub-type. Verify required fields: name, address.streetAddress, address.addressLocality, address.addressRegion, address.postalCode, address.addressCountry, telephone, url. Check that address values match the visible on-page address text. Validate with Google's Rich Results Test API.

Sources

References used to support the guidance in this rule.

Further Reading

Tools and supplementary material for exploring the topic in more depth.

LocalBusiness - Schema.org Type

Schema.org Type: LocalBusiness - A particular physical business or branch of an organization. Examples of LocalBusiness include a restaurant, a particular branc…

schema.orgGuide

Rules that often go hand-in-hand with this one.

Keep NAP details consistent

Checks for consistent Name, Address, Phone across site

SEO
Add Organization schema markup

Validates Organization schema for brand presence

SEO
Display a physical business address

Checks for visible physical address information

SEO
Service Area Pages

Checks for properly structured service-area or location pages for businesses serving multiple geographic regions.

SEO

Was this rule helpful?

Your feedback helps improve rule quality. This stays internal for now.

Loading feedback...
0 / 385