On this page:
This is some text inside of a div block.
This is some text inside of a div block.
This is some text inside of a div block.

Restaurant Schema for Webflow Websites

Restaurant schema tells search engines and AI assistants about a dining establishment. It is a subtype of FoodEstablishment, which itself extends LocalBusiness. Restaurant markup powers local search results, Google Maps panels, and AI assistant responses to dining queries like "Where should I eat tonight?"

Why Restaurant Schema Matters

When someone searches for a restaurant by name or browses for dining options nearby, Google can display:

  • Business name, address, and phone number in local pack results
  • Opening hours and price range
  • Cuisine type and menu links
  • Star ratings and review counts from aggregate ratings

AI assistants use Restaurant markup to answer questions like "Does [restaurant] take reservations?", "What kind of food does [restaurant] serve?", and "What are the hours for [restaurant]?" Without structured Restaurant data, the AI system must extract this information from unstructured page content, which is slower and less reliable.

Type Hierarchy

Thing > Organization > LocalBusiness > FoodEstablishment > Restaurant

Restaurant inherits all properties from its parent types. This means fields like name, address, telephone, and openingHoursSpecification from LocalBusiness all apply to Restaurant markup.

Recommended Fields

Google recommends these fields for food establishment markup:

  • menu — URL or structured representation of the restaurant menu
  • servesCuisine — Cuisine type: "Italian", "Japanese", "Mexican"

Optional Fields

These fields add useful signals for AI engines but are not listed in Google's documentation:

Inherited LocalBusiness Fields

Restaurant inherits these commonly used LocalBusiness properties:

  • name — Restaurant name
  • address — Physical location (PostalAddress object)
  • telephone — Phone number
  • url — Website URL
  • image — Photo of the restaurant
  • priceRange — Price level: "$", "$$", "$$$", "$$$$"
  • aggregateRating — Average rating from reviews
  • review — Individual reviews
  • geo — Latitude and longitude coordinates
  • description — Short description of the restaurant

Complete JSON-LD Example

A fully implemented Restaurant with all recommended and key inherited fields:

{
  "@context": "https://schema.org",
  "@type": "Restaurant",
  "name": "Chez Panisse",
  "image": "https://www.chezpanisse.com/images/restaurant.jpg",
  "url": "https://www.chezpanisse.com",
  "telephone": "+1-510-548-5525",
  "servesCuisine": ["California", "French", "Mediterranean"],
  "priceRange": "$$$$",
  "menu": "https://www.chezpanisse.com/menus",
  "acceptsReservations": "https://www.chezpanisse.com/reservations",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "1517 Shattuck Ave",
    "addressLocality": "Berkeley",
    "addressRegion": "CA",
    "postalCode": "94709",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 37.8796,
    "longitude": -122.2691
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
      "opens": "17:00",
      "closes": "22:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Saturday"],
      "opens": "11:30",
      "closes": "22:00"
    }
  ],
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.6",
    "reviewCount": "1250"
  }
}

Multi-Location Restaurants

For restaurant chains or groups with multiple locations, each location needs its own Restaurant entity. Use parentOrganization to link locations to the parent brand:

{
  "@context": "https://schema.org",
  "@type": "Restaurant",
  "name": "Shake Shack - Madison Square Park",
  "parentOrganization": {
    "@type": "Organization",
    "name": "Shake Shack",
    "url": "https://www.shakeshack.com"
  },
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "Southeast corner of Madison Square Park",
    "addressLocality": "New York",
    "addressRegion": "NY"
  },
  "servesCuisine": ["American", "Burgers"],
  "menu": "https://www.shakeshack.com/menu"
}

Webflow Implementation

Static restaurant page

Add JSON-LD in Page Settings > Custom Code > Before </head> with all location details hardcoded.

CMS template for multiple locations

Create a "Restaurants" collection in Webflow CMS with fields for name, address, cuisine, menu URL, reservation URL, price range, and phone. Use a CMS template page with an embed element containing JSON-LD that pulls from CMS fields.

With Schema HQ

Schema HQ generates complete Restaurant JSON-LD from Webflow CMS collection data. It handles the nested PostalAddress, GeoCoordinates, and OpeningHoursSpecification objects automatically and publishes the markup to Webflow custom code.

On this page:
This is some text inside of a div block.
This is some text inside of a div block.
This is some text inside of a div block.

Need help with schema on your site?

We implement structured data for Webflow sites — from audit to deployment.

Work with us

Work with us