docs
Restaurant
The Restaurant schema type identifies a place where food and drink is served — from neighbourhood cafés to Michelin kitchens. It is one of the highest-impact local SEO markups, powering map results, knowledge panels, and reservation prompts.
About Restaurant
Restaurant inherits from LocalBusiness but adds two crucial fields: servesCuisine (so you're found for "best Italian near me") and menu (which Google can crawl for menu rich results). Use acceptsReservations: true to surface a "Reserve" button directly in search.
Fields
| Field | Type | Required | Description |
|---|---|---|---|
name | string | ✓ | The name of the restaurant. |
description | string | — | A description of the restaurant. |
image | string | object | — | Photo of the restaurant — a URL string or a full ImageObject. |
servesCuisine | string | — | The cuisine of the restaurant, e.g. "Italian", "Japanese". |
priceRange | string | — | Price range indicator, e.g. "$", "$$", "$$$", "$$$$". |
telephone | string | — | The telephone number of the restaurant. |
address.streetAddress | string | — | Street address of the restaurant. |
address.addressLocality | string | — | City of the restaurant. |
address.addressRegion | string | — | State or region of the restaurant. |
address.postalCode | string | — | Postal code of the restaurant. |
address.addressCountry | string | — | Country of the restaurant. |
Plugin Registration
sanity.config.ts
import { defineConfig } from 'sanity'
import { schemaOrgRestaurantPlugin } from 'sanity-plugin-seofields/schema'
export default defineConfig({
plugins: [
schemaOrgRestaurantPlugin(),
],
})Schema Usage
Add theschemaOrgRestaurant field to any document schema:
schemas/restaurant.ts
import { defineField, defineType } from 'sanity'
export default defineType({
name: 'restaurant',
title: 'Restaurant',
type: 'document',
fields: [
defineField({
name: 'schemaOrgRestaurant',
title: 'Restaurant Schema',
type: 'schemaOrgRestaurant',
}),
],
})GROQ Query
GROQ query
*[_type == "yourDocument"][0]{
schemaOrgRestaurant {
name,
description,
image,
servesCuisine,
priceRange,
telephone,
address {
streetAddress,
addressLocality,
addressRegion,
postalCode,
addressCountry
}
}
}Next.js Component
app/restaurant/page.tsx
import { RestaurantSchema } from 'sanity-plugin-seofields/schema/next'
export default function Page({ data }) {
return <RestaurantSchema data={data.schemaOrgRestaurant} />
}JSON-LD Output
Generated JSON-LD
{
"@context": "https://schema.org",
"@type": "Restaurant",
"name": "Trattoria del Borgo",
"description": "A family-run trattoria serving handmade pasta and wood-fired pizza.",
"image": "https://example.com/restaurants/trattoria.jpg",
"servesCuisine": "Italian",
"priceRange": "$$",
"telephone": "+39-06-555-0142",
"address": {
"@type": "PostalAddress",
"streetAddress": "Via della Lungaretta, 22",
"addressLocality": "Rome",
"addressRegion": "RM",
"postalCode": "00153",
"addressCountry": "IT"
}
}Was this page helpful?