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:
- acceptsReservations — Whether the restaurant takes bookings (Boolean, URL, or Text)
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.