Schema markup generator for restaurants

Restaurants should use the Restaurant type, not plain LocalBusiness. Fill in the form and I’ll build valid JSON-LD you can paste into your site.

Your details

One or two factual sentences. The same words as your homepage intro work well.
International format: +1-403-…
A real photo of you, your team or your space.
Comma-separated, e.g. Mo-Fr 09:00-17:00, Sa 10:00-14:00
Optional. A symbol range like $ or a short text range.
Comma-separated cities or regions.
The cuisines you serve. (servesCuisine)
Link to your menu as a web page. (hasMenu)
How guests pay. (paymentAccepted)
One URL per line: Google Business Profile, LinkedIn, Instagram, directories.

Restaurant JSON-LD

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Restaurant",
  "@id": "https://stephenavekitchen.example/#business",
  "name": "Stephen Avenue Kitchen",
  "description": "A downtown Calgary restaurant serving seasonal Alberta dishes for lunch and dinner.",
  "url": "https://stephenavekitchen.example/",
  "telephone": "+1-403-555-0142",
  "email": "hello@stephenavekitchen.example",
  "image": "https://stephenavekitchen.example/images/photo.jpg",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "100 Example Street SW",
    "addressLocality": "Calgary",
    "addressRegion": "AB",
    "postalCode": "T2P 1J9",
    "addressCountry": "CA"
  },
  "openingHours": [
    "Mo-Fr 09:00-17:00"
  ],
  "priceRange": "$",
  "areaServed": [
    "Calgary",
    "Airdrie",
    "Cochrane",
    "Okotoks"
  ],
  "servesCuisine": [
    "Canadian",
    "Seasonal",
    "Alberta beef"
  ],
  "acceptsReservations": true,
  "hasMenu": "https://stephenavekitchen.example/menu",
  "paymentAccepted": "Credit card, Debit",
  "sameAs": [
    "https://www.instagram.com/stephenavenuekitchen",
    "https://www.linkedin.com/company/stephenavenuekitchen"
  ]
}
</script>

Paste this into your page’s head, then test it with Google’s Rich Results Test and validator.schema.org. The example values are made up: replace every one.

Want this added to your restaurant’s website?

Send me your site and I’ll check your current structured data and send back corrected JSON-LD for it. Free.

No newsletter. Just what you asked for, from me. Privacy

The properties that matter for restaurants

Type: Restaurant. Every property below is a real schema.org property.

Key schema properties for restaurants
PropertyWhy it matters
servesCuisineCuisine is one of the first filters people use. It is how AI tools answer questions like where to get Alberta beef downtown.
hasMenuA link to an HTML menu page lets search engines read your dishes.
openingHoursHours are the most checked detail for any restaurant. Keep them right, including holidays.
priceRangeA simple $ or $$ tells people what dinner will cost before they arrive.
acceptsReservationsPeople want to know if they can book. It is a small field that answers a real question.

Common mistakes

  • Linking hasMenu to a PDF. Use a real web page so search engines and screen readers can read it.

  • Leaving old hours in the schema after changing them on Google. Keep the two in sync.

  • Marking up reviews you collected yourself as stars. Google won’t show self-serving review stars for a LocalBusiness.

How to add it to your site

  1. Replace every example value in the form with your own details. They should match your Google Business Profile exactly.
  2. Copy the code and paste it into your page’s <head>. Most site builders have a custom code field. On a hand-built site, it goes in the template.
  3. Test the live page with Google’s Rich Results Test and validator.schema.org, and fix anything they flag.
  4. Add the same facts to the visible page. Structured data should describe what visitors can see. My website checklist for restaurants covers the rest.
FAQ

Schema for restaurants: questions

  1. The hasMenu property can link to your menu page. The menu page itself should be HTML, not a PDF. That is what search engines and AI tools can read.

  2. Update openingHours when your hours change. If only the patio changes, explain that on the page.

  3. Yes. Each location needs its own page with its own address, phone and hours. One block per real place.

Keep reading

Let’s begin

Let’s build something you’re proud to share.

Let’s Talk