---
title: "Restaurant Schema"
description: "Add Schema.org Restaurant structured data to your Sanity-powered site with sanity-plugin-seofields. Surface restaurants in local search with cuisine, hours, menu, and reservations."
canonical: https://sanity-plugin-seofields.thehardik.in/docs/schema-org/restaurant
---

# 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&apos;re found for &quot;best Italian near me&quot;) and menu (which Google can crawl for menu rich results). Use acceptsReservations: true to surface a &quot;Reserve&quot; button directly in search.

## Fields

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `name` | string | Yes | The name of the restaurant. |
| `description` | string | No | A description of the restaurant. |
| `image` | string \| object | No | Photo of the restaurant — a URL string or a full ImageObject. |
| `servesCuisine` | string | No | The cuisine of the restaurant, e.g. "Italian", "Japanese". |
| `priceRange` | string | No | Price range indicator, e.g. "$", "$$", "$$$", "$$$$". |
| `telephone` | string | No | The telephone number of the restaurant. |
| `address.streetAddress` | string | No | Street address of the restaurant. |
| `address.addressLocality` | string | No | City of the restaurant. |
| `address.addressRegion` | string | No | State or region of the restaurant. |
| `address.postalCode` | string | No | Postal code of the restaurant. |
| `address.addressCountry` | string | No | Country of the restaurant. |

## Plugin Registration

```typescript
import { defineConfig } from 'sanity'
import { schemaOrgRestaurantPlugin } from 'sanity-plugin-seofields/schema'

export default defineConfig({
  plugins: [
    schemaOrgRestaurantPlugin(),
  ],
})
```

## Schema Usage

Add the `schemaOrgRestaurant` field to any document schema:

```typescript
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

```javascript
*[_type == "yourDocument"][0]{
  schemaOrgRestaurant {
    name,
    description,
    image,
    servesCuisine,
    priceRange,
    telephone,
    address {
      streetAddress,
      addressLocality,
      addressRegion,
      postalCode,
      addressCountry
    }
  }
}
```

## Next.js Component

```tsx
import { RestaurantSchema } from 'sanity-plugin-seofields/schema/next'

export default function Page({ data }) {
  return <RestaurantSchema data={data.schemaOrgRestaurant} />
}
```

## JSON-LD Output

```json
{
  "@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"
  }
}
```
