Technical Implementation Guide

Restaurant Schema Markup Guide: Complete JSON-LD Implementation for 2026

Master structured data implementation with working code examples for Restaurant schema, Menu schema, MenuItem schema, and AggregateRating. Includes testing tools, validation methods, and advanced tactics to maximize search visibility and rich results.

40 min read
Working code examples
Updated April 2026

Schema markup is structured data that helps search engines understand the content on your restaurant's website. When implemented correctly, it enables rich results in search—including star ratings, price ranges, menu items, and operating hours displayed directly in Google search results.

This guide provides copy-paste ready JSON-LD code for every schema type relevant to restaurants. Each example is tested, validated, and follows Google's current structured data guidelines as of April 2026.

What You'll Learn:

  • How to implement Restaurant, Menu, and MenuItem schema with working code
  • Which schema properties directly impact rich results eligibility
  • How to structure nested schema for complex menus and multi-location restaurants
  • Testing and validation tools to ensure error-free implementation
  • Advanced schema tactics for competitive advantage
  • Common implementation errors and how to fix them

What is Schema Markup?

Schema markup is a standardized vocabulary of tags (microdata) that you add to your HTML to improve how search engines read and represent your page in search results. Think of it as a translation layer between your website content and search engine understanding.

For restaurants, schema markup tells Google explicitly: "This is a restaurant. Here's the cuisine type, price range, location, hours, menu, and customer ratings." Without schema, Google must infer this information from unstructured content, which is error-prone and incomplete.

JSON-LD: The Recommended Format

Schema can be implemented in three formats: JSON-LD, Microdata, or RDFa. Google recommends JSON-LD (JavaScript Object Notation for Linked Data) because it's easier to implement, maintain, and doesn't clutter your HTML.

JSON-LD sits in a <script type="application/ld+json"> tag in your page's <head> section, completely separate from your visible content. This separation makes it trivial to update schema without touching page design.

Basic JSON-LD Structure:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Restaurant",
  "name": "Your Restaurant Name",
  "description": "Your restaurant description"
}
</script>

Why Schema Markup Matters for Restaurant SEO

Schema markup doesn't directly improve rankings, but it significantly impacts click-through rates and search visibility through rich results. For restaurants, this means star ratings, prices, and menu items appearing directly in search results.

Rich Results Enabled by Schema

Star Rating Snippets

AggregateRating schema displays your average star rating and review count directly in search results.

Impact: Listings with star ratings receive 35% higher click-through rates

Price Range Display

priceRange property shows cost expectations ($ to $$$$) in knowledge panels and local results.

Impact: Manages customer expectations and filters searches by budget

Operating Hours

OpeningHoursSpecification displays when you're open, including special hours for holidays or specific services.

Impact: Reduces friction by showing availability before click

Menu Items in Search

Menu and MenuItem schema can surface specific dishes with prices in search results and Google Maps.

Impact: Menu visibility drives decision-making and increases conversion

Schema and Voice Search:

Structured data is even more critical for voice search. When someone asks Siri or Google Assistant for restaurant recommendations, the assistant pulls heavily from schema markup to provide accurate answers about cuisine, price, ratings, and hours. Our voice search optimization guide covers this in detail.

Types of Schema Markup for Restaurants

Multiple schema types work together to provide comprehensive structured data about your restaurant. Here's which ones matter and when to use each.

Schema Type Purpose Priority
Restaurant Core business information: name, address, cuisine, price range Required
LocalBusiness General business data (Restaurant is a subtype of LocalBusiness) Required
Menu Menu structure with sections and categories Recommended
MenuItem Individual dish details: name, description, price, image Recommended
AggregateRating Average star rating and review count High Impact
Review Individual customer reviews Optional
OpeningHoursSpecification Detailed operating hours by day and service type Recommended

Restaurant Schema: Complete Implementation

Restaurant schema is the foundation. It provides Google with your core business information including name, address, phone number, cuisine type, price range, and service options.

Complete Restaurant Schema Example

This example includes all recommended properties for maximum rich result eligibility:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Restaurant",
  "name": "Bella Napoli",
  "image": [
    "https://example.com/photos/restaurant-exterior.jpg",
    "https://example.com/photos/dining-room.jpg",
    "https://example.com/photos/outdoor-seating.jpg"
  ],
  "priceRange": "$$",
  "@id": "https://www.example.com",
  "url": "https://www.example.com",
  "telephone": "+912212345678",
  "servesCuisine": ["Italian", "Pizza", "Mediterranean"],
  "menu": "https://www.example.com/menu",
  "acceptsReservations": "True",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "123 MG Road",
    "addressLocality": "Mumbai",
    "addressRegion": "Maharashtra",
    "postalCode": "400001",
    "addressCountry": "IN"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 18.9388,
    "longitude": 72.8354
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": [
        "Monday",
        "Tuesday",
        "Wednesday",
        "Thursday",
        "Friday"
      ],
      "opens": "11:30",
      "closes": "22:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": [
        "Saturday",
        "Sunday"
      ],
      "opens": "10:00",
      "closes": "23:00"
    }
  ],
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.6",
    "reviewCount": "234"
  },
  "paymentAccepted": "Cash, Credit Card, Debit Card, UPI",
  "currenciesAccepted": "INR"
}
</script>

Required vs. Recommended Properties

Required Properties (Must Include):

  • @type - Must be "Restaurant"
  • name - Official restaurant name
  • address - PostalAddress with streetAddress, addressLocality, postalCode, addressCountry

Recommended Properties (Increases Rich Result Eligibility):

  • image - Array of representative photos
  • priceRange - $ to $$$$ indicator
  • servesCuisine - Array of cuisine types
  • telephone - Phone number in international format
  • url - Website homepage URL
  • geo - Latitude and longitude coordinates
  • openingHoursSpecification - Detailed hours
  • aggregateRating - Average rating and count
  • acceptsReservations - True/False

Property Explanations

servesCuisine

List all cuisine types you serve. Be specific but accurate. This affects search matching for cuisine-specific queries.

"servesCuisine": ["Italian", "Pizza", "Pasta", "Neapolitan"]

priceRange

Use $ (inexpensive), $$ (moderate), $$$ (expensive), or $$$$ (very expensive). Based on typical meal cost per person.

"priceRange": "$$"

geo (GeoCoordinates)

Exact latitude and longitude. Use Google Maps to find your precise coordinates. Critical for local search and "near me" queries.

"geo": { "@type": "GeoCoordinates", "latitude": 18.9388, "longitude": 72.8354 }

AggregateRating Schema for Star Ratings

AggregateRating displays star ratings directly in search results. This is one of the highest-impact schema types for click-through rate improvement.

{
  "@context": "https://schema.org",
  "@type": "Restaurant",
  "name": "Bella Napoli",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.6",
    "bestRating": "5",
    "worstRating": "1",
    "ratingCount": "234"
  }
}

Critical AggregateRating Rules:

  • Only use real reviews: Google can detect fake or manipulated ratings and will penalize or remove rich results
  • reviewCount vs ratingCount: Use reviewCount if rating comes from reviews. Use ratingCount if from standalone ratings
  • Minimum count: Google typically requires at least 2 reviews/ratings to display stars
  • Keep updated: Update rating values monthly to reflect current reviews
  • Don't self-review: Including your own reviews or employee reviews violates Google's guidelines

Learn how to ethically generate more reviews that feed into your aggregate rating in our review management guide.

Implementation Methods

There are three main ways to add schema markup to your restaurant website. Choose based on your technical setup and maintenance preferences.

Method 1: Manual HTML Implementation (Recommended)

Add JSON-LD directly to your page's <head> section:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Bella Napoli - Authentic Italian Restaurant</title>
  
  <!-- Restaurant Schema -->
  <script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "Restaurant",
    "name": "Bella Napoli",
    ...
  }
  </script>
  
</head>
<body>
  ...
</body>
</html>

Method 2: WordPress Plugins

If using WordPress, several plugins automate schema markup:

  • Rank Math: Free plugin with Restaurant schema support
  • Schema Pro: Premium plugin with advanced schema types
  • Yoast SEO: Includes basic LocalBusiness schema

Method 3: Google Tag Manager

For sites without direct HTML access, implement schema via GTM custom HTML tags. This allows marketing teams to manage schema without developer involvement.

Testing and Validation

Always test schema markup before publishing. Invalid schema can prevent rich results and may be ignored entirely by Google.

Primary Testing Tools

1. Google Rich Results Test

URL: https://search.google.com/test/rich-results

Tests whether your schema is eligible for rich results. Shows preview of how it will appear in search.

Use for: Final validation before publishing. Shows rich result previews.

2. Schema Markup Validator

URL: https://validator.schema.org/

Official schema.org validator. Checks syntax and structure against schema.org standards.

Use for: Development and debugging. More detailed error messages than Google's tool.

3. Google Search Console

After implementation, monitor "Enhancements" section in Search Console for schema errors and warnings across your entire site.

Use for: Ongoing monitoring. Shows which pages have valid schema and which have errors.

Testing Workflow

  1. Write schema markup in a text editor or schema generator
  2. Validate syntax with Schema.org Validator
  3. Test rich result eligibility with Google Rich Results Test
  4. Fix any errors or warnings
  5. Implement on your website
  6. Re-test live page with Rich Results Test
  7. Request indexing in Google Search Console
  8. Monitor Search Console Enhancements for ongoing errors

Common Schema Errors and Fixes

❌ Error: Missing Required Property

Issue: "The property address is required for Restaurant"

Fix: Ensure all required properties for your schema type are included. For Restaurant: name, address

❌ Error: Invalid Value Type

Issue: "The property ratingValue expects a Number, but got a Text"

Fix: Remove quotes from numeric values:

Wrong:

"ratingValue": "4.6"

Correct:

"ratingValue": 4.6

❌ Error: Multiple @type Values

Issue: Having both "Restaurant" and "LocalBusiness" as separate objects

Fix: Use Restaurant only (it's a subtype of LocalBusiness, so you get both)

❌ Error: Self-Serving Reviews

Issue: Google detects reviews from the same domain as the business

Fix: Only include reviews from third-party platforms (Google, Yelp, TripAdvisor). Never include reviews you wrote yourself.

Implement Schema Markup to Maximize Search Visibility

Schema markup is technical SEO that directly impacts how your restaurant appears in search results. While it doesn't improve rankings directly, it dramatically increases click-through rates through star ratings, price information, and menu visibility.

Start with Restaurant schema and AggregateRating, then add Menu and MenuItem schema for maximum impact. Test thoroughly, monitor Search Console for errors, and update regularly to maintain rich result eligibility.

Need Help Implementing Schema?

Our technical SEO team handles complete schema implementation, testing, validation, and ongoing monitoring. We ensure error-free structured data that maximizes rich result eligibility.

Get Schema Implementation Service