Skip to content
Browse all guides

Issue #75 · important

LocalBusiness schema is missing from pages that have a physical business location.

What is this issue?

LocalBusiness schema is missing from pages that have a physical business location. This schema helps search engines understand your business details like address, phone number, opening hours, and geographic coordinates.

Without LocalBusiness schema:

  • Your business won't appear in Google's local 3-pack results
  • You won't be eligible for Google Maps knowledge panels
  • Voice search results won't be able to provide your business details
  • Rich snippets showing business hours, contact info won't appear

A proper LocalBusiness schema should include: @type (specific subtype like Restaurant, Store, MedicalClinic), name, address (with PostalAddress), telephone, openingHoursSpecification, geo (latitude/longitude), and optionally priceRange, hasMap, review, etc.

Why does it matter?

LocalBusiness schema is critical for local SEO and user experience:

  • Local search visibility: Businesses with LocalBusiness schema are 2.7x more likely to be in the local 3-pack
  • Voice search optimization: Voice assistants rely on structured data to answer "near me" queries
  • Rich results: Enables business hours, contact info, and location in search results
  • AI search readiness: AI engines use LocalBusiness schema to provide accurate business information
  • Competitive advantage: Many businesses still don't implement this schema correctly

Resolving this issue improves your local SEO health score by ensuring search engines can properly identify and display your business information.

How to fix it

  1. Identify pages with physical location information (Contact page, About page, Store locator)

  2. Choose the correct LocalBusiness subtype from Schema.org:

    • Restaurant, Store, MedicalClinic, Hotel, HairSalon, etc.
    • Use the most specific type that matches your business
  3. Add JSON-LD structured data to your Contact or About page:

    {
      "@context": "https://schema.org",
      "@type": "Restaurant",
      "name": "Your Business Name",
      "address": {
        "@type": "PostalAddress",
        "streetAddress": "123 Main St",
        "addressLocality": "City",
        "addressRegion": "State",
        "postalCode": "12345",
        "addressCountry": "US"
      },
      "telephone": "+1-555-123-4567",
      "openingHoursSpecification": [
        {
          "@type": "OpeningHoursSpecification",
          "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
          "opens": "09:00",
          "closes": "17:00"
        }
      ],
      "geo": {
        "@type": "GeoCoordinates",
        "latitude": "40.7128",
        "longitude": "-74.0060"
      }
    }
    
  4. Validate with Google's Local Business Structured Data Testing Tool


Notes

  • Use the most specific LocalBusiness subtype (e.g., Restaurant instead of generic LocalBusiness)
  • Ensure geo coordinates are accurate for your business location
  • Keep openingHoursSpecification updated with holiday hours
  • Link to your Organization schema via @id for entity consistency

Examples

Example 1: Missing LocalBusiness Schema on Contact Page

Problematic state:

<!-- Contact page without LocalBusiness schema -->
<html>
  <head>
    <title>Contact Us - Joe's Pizza</title>
  </head>
  <body>
    <h1>Contact Us</h1>
    <p><strong>Address:</strong> 123 Main St, New York, NY 10001</p>
    <p><strong>Phone:</strong> +1-212-555-1234</p>
    <p><strong>Hours:</strong> Mon-Sat 11am-10pm, Sun 12pm-9pm</p>
  </body>
</html>

Corrected state:

<!-- Contact page with LocalBusiness schema -->
<html>
  <head>
    <title>Contact Us - Joe's Pizza</title>
    <script type="application/ld+json">
      {
        "@context": "https://schema.org",
        "@type": "Restaurant",
        "name": "Joe's Pizza",
        "address": {
          "@type": "PostalAddress",
          "streetAddress": "123 Main St",
          "addressLocality": "New York",
          "addressRegion": "NY",
          "postalCode": "10001",
          "addressCountry": "US"
        },
        "telephone": "+1-212-555-1234",
        "openingHoursSpecification": [
          {
            "@type": "OpeningHoursSpecification",
            "dayOfWeek": [
              "Monday",
              "Tuesday",
              "Wednesday",
              "Thursday",
              "Friday",
              "Saturday"
            ],
            "opens": "11:00",
            "closes": "22:00"
          },
          {
            "@type": "OpeningHoursSpecification",
            "dayOfWeek": ["Sunday"],
            "opens": "12:00",
            "closes": "21:00"
          }
        ],
        "geo": {
          "@type": "GeoCoordinates",
          "latitude": "40.7128",
          "longitude": "-74.0060"
        }
      }
    </script>
  </head>
  <body>
    <h1>Contact Us</h1>
    <p><strong>Address:</strong> 123 Main St, New York, NY 10001</p>
    <p><strong>Phone:</strong> +1-212-555-1234</p>
    <p><strong>Hours:</strong> Mon-Sat 11am-10pm, Sun 12pm-9pm</p>
  </body>
</html>

Example 2: LocalBusiness Schema for Medical Clinic

Corrected state:

{
  "@context": "https://schema.org",
  "@type": "MedicalClinic",
  "name": "Downtown Medical Center",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "456 Health Ave",
    "addressLocality": "Austin",
    "addressRegion": "TX",
    "postalCode": "78701",
    "addressCountry": "US"
  },
  "telephone": "+1-512-555-7890",
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
      "opens": "08:00",
      "closes": "18:00"
    }
  ],
  "medicalSpecialty": ["Cardiology", "Dermatology"]
}

Example 3: Incomplete LocalBusiness Schema

Problematic state:

{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "Tech Startup"
}

Missing required properties: address, telephone

Corrected state:

{
  "@context": "https://schema.org",
  "@type": "Store",
  "name": "Tech Startup",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "789 Innovation Blvd",
    "addressLocality": "San Francisco",
    "addressRegion": "CA",
    "postalCode": "94105",
    "addressCountry": "US"
  },
  "telephone": "+1-415-555-9876"
}

How PixyScan detects this

PixyScan follows these logical steps to detect missing LocalBusiness schema:

  1. Scan for physical location signals: The crawler checks if the page contains:

    • A physical address (street address, city, state, zip)
    • A phone number
    • Business hours information
    • Map embeds or directions links
  2. Extract structured data: The crawler looks for JSON-LD, Microdata, or RDFa blocks on the page

  3. Check for LocalBusiness schema: The crawler verifies if any schema block has:

    • @type set to LocalBusiness or a recognized subtype
    • Required properties: name, address, telephone
  4. Validate schema completeness: If LocalBusiness schema is found, the crawler checks for:

    • Proper address with PostalAddress type
    • geo coordinates (latitude/longitude)
    • openingHoursSpecification with proper format
    • priceRange (optional but recommended)
  5. Trigger conditions: The issue is flagged when:

    • Physical location signals are detected BUT no LocalBusiness schema is present
    • LocalBusiness schema exists but is missing required properties
    • The schema type is too generic (just LocalBusiness instead of a specific subtype)

References