Restaurant Schema Markup Guide: LocalBusiness JSON-LD Without Fake SEO
A practical Restaurant structured data guide covering LocalBusiness subtype choice, name, address, phone, hours, menu, images, location markup, visible-content consistency and common JSON-LD mistakes.
Structured data is a way to describe restaurant facts in a machine-readable format. It is not a secret keyword layer.
For a restaurant, Google supports LocalBusiness structured data and recommends using the most specific subtype available. In most restaurant cases, that means using Schema.org's Restaurant type rather than stopping at a generic LocalBusiness.
The restaurant website grader checks the initial HTML for Restaurant, FoodEstablishment or LocalBusiness structured-data signals. This guide explains what good implementation is trying to achieve.
Use JSON-LD unless your architecture requires another supported format
Google supports JSON-LD, Microdata and RDFa for structured data, and generally recommends JSON-LD because it is easier to maintain separately from visible markup.
A simplified restaurant example:
{
"@context": "https://schema.org",
"@type": "Restaurant",
"name": "Example Restaurant",
"url": "https://example.com/",
"telephone": "+1-416-555-0100",
"servesCuisine": "Italian",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 King St W",
"addressLocality": "Toronto",
"addressRegion": "ON",
"postalCode": "M5V 1J5",
"addressCountry": "CA"
}
}
Do not copy that example literally. Replace every fact with the restaurant's real visible information.
The markup must match the restaurant users see
Google's structured-data policies require the markup to describe the page and content accurately.
That means:
- do not mark up a fake five-star rating;
- do not publish hours in schema that contradict visible hours;
- do not mark up a Toronto location on a Vancouver page;
- do not add services the restaurant does not provide;
- do not create menu/pricing information only for crawlers.
Structured data should reduce ambiguity, not manufacture relevance.
Core Restaurant properties
The right property set depends on the page, but useful restaurant facts often include:
Name
Use the actual public restaurant name.
URL
Point to the canonical restaurant/location URL.
Address
Use a PostalAddress with accurate street, locality, region, postal code and country where applicable.
Telephone
Use the location's actual customer-facing phone number in an international-friendly format where possible.
Opening hours
Represent opening hours accurately. If hours change temporarily, the visible customer information still needs to be correct.
Cuisine
servesCuisine can help identify the restaurant's actual cuisine. Use meaningful descriptions rather than keyword lists.
Image
Use representative images that users can access.
Menu
Schema.org Restaurant supports menu-related properties/URLs. Keep the linked menu current and canonical.
Geo coordinates
For physical locations, geographic coordinates can remove location ambiguity when accurate.
Multiple restaurant locations
Each physical location should have its own correct facts.
A strong location implementation has:
- a unique canonical location URL;
- that location's name where brand/location naming differs;
- street address;
- phone;
- hours;
- geo coordinates;
- menu/order/reservation links relevant to the location;
Restaurantstructured data that matches the visible location content.
Do not put one corporate address into every location's Restaurant object.
Hours need special care
Restaurant hours are one of the most volatile business facts.
If the website has schema hours generated from a different system than the visible hours, drift becomes possible. Ideally both are rendered from the same canonical operating data.
JSON-LD that updates automatically while the visible footer stays wrong is not a successful implementation. The guest experience still loses.
Menu URL versus menu content
A Restaurant object can point users/search engines toward a menu, but that does not replace a useful menu page.
The menu URL should lead to a real, crawlable menu experience where possible. If every location has a different menu, point each location to its correct menu.
See restaurant menu SEO.
Price range
Schema.org supports priceRange. If you use it, keep it meaningful and aligned with the customer experience.
A vague or stale price-range string is not worth maintaining just to fill another property.
Aggregate ratings are easy to misuse
Do not scrape third-party review-platform ratings and mark them up as though the restaurant's page owns an eligible review aggregate without understanding Google's review-snippet policies.
Self-serving review markup for LocalBusiness/Organization entities has restrictions. Structured-data eligibility changes over time, so check Google's current documentation before adding review markup solely to chase stars in search.
Organization versus Restaurant
A multi-location restaurant group may have organization-level data for the brand and Restaurant data for each physical venue.
Those concepts can coexist. Avoid merging every entity into one overloaded object where addresses/hours from several locations become ambiguous.
Use stable @id values if your graph architecture links entities together. The goal is a coherent graph, not the largest graph.
Validate the markup
Before publishing:
- test the live page with Google's Rich Results Test where the type is supported;
- validate the JSON syntax;
- inspect the rendered HTML to ensure the script is present;
- compare every important schema fact with the visible page;
- monitor Search Console after rollout for structured-data errors.
Google recommends monitoring Search Console after deploying structured data or changing templates.
Structured data is not a ranking guarantee
Valid schema can help Google understand a page and can make pages eligible for supported search features. It does not guarantee a rich result and does not replace content, links, reputation or usefulness.
If a restaurant has a slow, stale website with hidden hours and a broken menu, adding a large JSON-LD object does not solve the customer problem.
A Restaurant schema maintenance checklist
- Type is
Restaurantwhen appropriate. - Name matches the public business.
- URL is canonical.
- Address belongs to this location.
- Phone belongs to this location.
- Hours match the visible site.
- Cuisine is accurate.
- Menu URL works.
- Images are accessible.
- No fabricated ratings/offers.
- Multi-location entities are not mixed together.
- Markup remains present after frontend/template changes.
Sources and further reading
- Google Search Central: LocalBusiness structured data
- Google Search Central: General structured data guidelines
- Schema.org Restaurant
- Restaurant website SEO checklist
- Restaurant website grader
FAQs
Should a restaurant use Restaurant or LocalBusiness schema?
Restaurant is a more specific subtype of LocalBusiness and is generally the appropriate type when the entity is a restaurant. Use the most specific accurate type for the page/entity.
Can structured data include information that is not shown to users?
Structured data should accurately represent the page and entity. Do not use machine-only facts to mislead search engines or contradict what users can see.
Does valid Restaurant schema guarantee a rich result?
No. Valid structured data can create eligibility for supported features, but Google does not guarantee that a rich result will appear.
Tell Kitch what needs to happen.
Start Kitch →