Restaurant Schema Generator — Free JSON-LD

Build Restaurant schema with cuisine, menu URL, reservations, and opening hours. Eligible for Google Search restaurant rich results and the local pack.

🏪Local Business Schema

Fields marked with * are required for valid schema markup.

JSON-LD Output

<span class=400">"text-gray-500">&lt;script type=400">"application/ld+json"&gt;</span>
{
  400">"@context": 400">"https://schema.org",
  400">"@type": 400">"Restaurant"
}
<span class=400">"text-gray-500">&lt;/script&gt;</span>

Copy this code and paste it into the <head> section of your HTML page.

Restaurant-Specific Properties

Restaurant inherits all LocalBusiness properties and adds these for restaurant-specific rich results:

PropertyTypeExample
servesCuisinestring or string[]"Italian", ["Italian", "Pizza"]
menuURLhttps://yoursite.com/menu
hasMenuMenu objectNested Menu with MenuSection & MenuItem
acceptsReservationsbooleantrue
starRatingRating objectMichelin stars or AAA diamonds
paymentAcceptedstring"Cash, Credit Card, Apple Pay"
priceRangestring"$", "$$", "$$$", "$$$$"

Copy-Paste Ready Example

Working JSON-LD for an Italian restaurant in Boston. Replace the values with your own:

{
  "@context": "https://schema.org",
  "@type": "Restaurant",
  "name": "Bella Italia",
  "image": "https://example.com/bella-italia-storefront.jpg",
  "url": "https://bellaitalia.com",
  "telephone": "+1-555-123-4567",
  "priceRange": "$$",
  "servesCuisine": ["Italian", "Pizza"],
  "menu": "https://bellaitalia.com/menu",
  "acceptsReservations": true,
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "123 Main Street",
    "addressLocality": "Boston",
    "addressRegion": "MA",
    "postalCode": "02101",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 42.3601,
    "longitude": -71.0589
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Tuesday", "Wednesday", "Thursday"],
      "opens": "17:00",
      "closes": "22:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Friday", "Saturday"],
      "opens": "17:00",
      "closes": "23:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": "Sunday",
      "opens": "16:00",
      "closes": "21:00"
    }
  ]
}

Where to Put This Schema on Your Restaurant Website

WordPress

Three options:

  1. Theme functions.php: Add the JSON-LD via wp_head action. Best for developer-managed sites.
  2. SEO plugin: Yoast SEO, Rank Math, and All In One SEO have built-in LocalBusiness schema. Configure in plugin settings rather than custom code.
  3. Custom HTML widget: Many themes have an "additional code" section in customizer where you can paste the script tag directly.

Wix

Settings → SEO → Advanced → Add the script tag to the <head> section of your homepage. Wix's built-in SEO tools also generate basic LocalBusiness — augment with the more specific Restaurant @type and additional properties via this method.

Squarespace

Settings → Advanced → Code Injection → Header. Paste the full <script type="application/ld+json">...</script> block. Updates immediately on save.

Shopify (if you sell food retail)

Theme code → theme.liquid → between </head> and </body>. Use Liquid to inject the shop name and locations dynamically.

Hand-coded HTML

Paste the script tag anywhere in your <head> section. Google accepts schema in both head and body, but head is the convention.

Restaurant Schema Best Practices

  • Use the most specific subtype — Pizzeria, BarOrPub, FastFoodRestaurant, CafeOrCoffeeShop — when applicable.
  • Match the address exactly to your Google Business Profile.
  • Update openingHoursSpecification immediately when hours change. Stale hours are the #1 trust signal failure for restaurants.
  • Use specialOpeningHoursSpecification for brunch, happy hour, and seasonal hours rather than confusing the main schedule.
  • Link menu to your own page, not third-party sites (DoorDash, Yelp). You want users on your site, not a delivery aggregator.
  • Add geo coordinates with at least 4 decimal places — important for "near me" matching.
  • List up to 3 cuisines in servesCuisine — more than that dilutes the signal.
  • Include payment methods accepted in paymentAccepted for cashless-only or mobile-only operations.

Frequently Asked Questions

Why use Restaurant schema instead of LocalBusiness?

Restaurant is a subtype of LocalBusiness with restaurant-specific properties: servesCuisine, menu, acceptsReservations, hasMenu, starRating. Using the more specific @type lets Google trigger restaurant rich results (menu, reservations button, cuisine filter) that generic LocalBusiness doesn't unlock.

Should I link to my menu in schema?

Yes — use the menu property with a direct URL to your menu page (HTML or PDF). Google may display a Menu button in your Knowledge Panel for users. Avoid linking to third-party menu sites (DoorDash, Yelp) — link to your own.

How do I show that I take reservations?

Set acceptsReservations: true, then add a potentialAction with type ReserveAction and a target URL pointing to your reservation page or OpenTable URL. This can enable a Reserve button in Google Search.

What format does servesCuisine accept?

A string (single cuisine) or array of strings. Examples: 'Italian', 'Japanese', 'Mexican', or ['Italian', 'Pizza', 'Mediterranean']. Use commonly recognized cuisine names — avoid hyper-specific terms.

Should I add menu items as schema?

Yes for high-volume restaurants — use the hasMenu property with a nested Menu containing MenuSection and MenuItem objects. Each MenuItem can have description, image, and price. Strong signal for restaurant rich results.

How do I show special hours like brunch or happy hour?

Use openingHoursSpecification as the default, then add specialOpeningHoursSpecification entries for irregular hours (brunch Sat/Sun 10-2, happy hour Mon-Fri 4-6). Both arrays can coexist.

Will Restaurant schema get me on Google Maps?

Restaurant schema works alongside Google Business Profile to populate the Maps listing. The schema on your website doesn't directly create the Maps entry — you create that in GBP — but it validates and reinforces what GBP shows. Keep them consistent.

Should fast food restaurants use Restaurant or FastFoodRestaurant?

FastFoodRestaurant if you operate as quick-service (counter ordering, no table service). Restaurant for table-service. Coffee shops have CafeOrCoffeeShop. Pizza-only is Pizzeria (a subtype of Restaurant). Always pick the most specific subtype.

Related Industry Schemas

Try our AI tools