---
title: "Food Establishment Schema · Unhead"
canonical_url: "https://unhead.unjs.io/docs/svelte/schema-org/api/schema/food-establishment"
last_updated: "2026-09-13T08:04:10.008Z"
meta:
  description: "Use defineFoodEstablishment() to describe a food-related business, including its menu, reservations, cuisine, address, and opening hours."
  "og:description": "Use defineFoodEstablishment() to describe a food-related business, including its menu, reservations, cuisine, address, and opening hours."
  "og:title": "Food Establishment Schema · Unhead"
---

Home

`
Unhead on GitHub

Switch to SvelteSwitch to TypeScriptSwitch to VueSwitch to ReactSwitch to Solid.jsSwitch to AngularSwitch to Nuxt

**Schema**

# **Food Establishment Schema**

[Copy for LLMs](https://raw.githubusercontent.com/unjs/unhead/refs/heads/main/docs/schema-org/5.api/9.schema/food-establishment.md)

## Schema.org FoodEstablishment

**Type**: `defineFoodEstablishment<T extends Record<string, any>>(input?: FoodEstablishment & T)`

Describes a food-related business.

## Useful Links

- [**~~FoodEstablishment - Schema.org~~**](https://schema.org/FoodEstablishment)
- [**~~Local Business - Google Search Central~~**](https://developers.google.com/search/docs/appearance/structured-data/local-business)

## Google requirements

For [**~~Google's LocalBusiness feature~~**](https://developers.google.com/search/docs/appearance/structured-data/local-business#local-business-properties), a FoodEstablishment needs both `**name**` and a physical `**address**`. Unhead resolves the address but does not require or validate it.

- **name** `**string**`  
  The name of the business.
- **address** `**NodeRelations<PostalAddress>**`: [**~~PostalAddress~~**](https://schema.org/PostalAddress)  
  The physical address of the business.

## Recommended Properties

- **acceptsReservations** `**string | boolean**`  
  Indicates whether a FoodEstablishment accepts reservations.
- **hasMenu** `**string**`  
  URL of the menu.
- **openingHoursSpecification** `**NodeRelations<OpeningHoursSpecification>**`: [**~~OpeningHoursSpecification~~**](https://schema.org/OpeningHoursSpecification)  
  The specification for when the business is open.
- **servesCuisine** `**string**`  
  The type of cuisine the restaurant serves.

### Minimal Example

```
defineFoodEstablishment({
  name: 'Harbor Cafe',
  logo: '/logo.png',
  address: {
    addressCountry: 'Australia',
    postalCode: '2000',
    streetAddress: '123 st',
  },
  openingHoursSpecification: [
    {
      dayOfWeek: 'Saturday',
      opens: '09:30',
      closes: '13:30',
    },
    {
      dayOfWeek: ['Monday', 'Tuesday'],
      opens: '10:30',
      closes: '15:30',
    },
  ]
})
```

## Defaults

- **@type**: `**FoodEstablishment**`
- **@id**: `**${canonicalHost}#identity**`
- **url**: `**${canonicalHost}**`
- **currenciesAccepted**: `**currency**` from resolved page metadata. See [**~~global options~~**](https://unhead.unjs.io/docs/schema-org/guides/core-concepts/params)

## Sub-Types

- `**Bakery**`
- `**BarOrPub**`
- `**Brewery**`
- `**Dentist**`
- `**CafeOrCoffeeShop**`
- `**Distillery**`
- `**FastFoodRestaurant**`
- `**IceCreamShop**`
- `**Restaurant**`
- `**Winery**`

## Resolves

See [**~~Global Resolves~~**](https://unhead.unjs.io/docs/schema-org/guides/get-started/overview#how-does-schemaorg-get-page-data) for full context.

- for the primary identity, a string `**logo**` creates a root ImageObject with the `**#logo**` ID and a compact Organization node with the absolute logo URL
- `**@type**` resolve: `**Restaurant**` -> `**['Organization', 'LocalBusiness', 'FoodEstablishment', 'Restaurant']**`
- `**starRating**` will be resolved as a [**~~Rating~~**](https://schema.org/Rating)

## Types

```
type ValidFoodEstablishmentSubTypes = 'Bakery'
  | 'BarOrPub'
  | 'Brewery'
  | 'Dentist'
  | 'CafeOrCoffeeShop'
  | 'Distillery'
  | 'FastFoodRestaurant'
  | 'IceCreamShop'
  | 'Restaurant'
  | 'Winery'

export interface FoodEstablishmentSimple extends Omit<LocalBusiness, '@type'> {
  '@type'?: ['Organization', 'LocalBusiness', 'FoodEstablishment'] | ['Organization', 'LocalBusiness', 'FoodEstablishment', ValidFoodEstablishmentSubTypes] | ValidFoodEstablishmentSubTypes
  /**
   * Indicates whether a FoodEstablishment accepts reservations.
   */
  'acceptsReservations'?: string | boolean
  /**
   * URL of the menu.
   */
  'hasMenu'?: string
  /**
   * Methods of payment accepted.
   */
  'paymentAccepted'?: string
  /**
   * The cuisine of the restaurant.
   */
  'servesCuisine'?: string
  /**
   * An official rating for a lodging business or food establishment
   */
  'starRating'?: NodeRelations<Rating>
}
```

## Related Schemas

- [**~~LocalBusiness~~**](https://unhead.unjs.io/docs/schema-org/api/schema/local-business): Parent type
- [**~~Organization~~**](https://unhead.unjs.io/docs/schema-org/api/schema/organization): Parent organization
- [**~~Event~~**](https://unhead.unjs.io/docs/schema-org/api/schema/event): Restaurant events

[Edit this page](https://github.com/unjs/unhead/edit/main/docs/schema-org/5.api/9.schema/food-establishment.md)

[Markdown For LLMs](https://raw.githubusercontent.com/unjs/unhead/refs/heads/main/docs/schema-org/5.api/9.schema/food-establishment.md)

**Did this page help you? **

[**Event Schema** Use defineEvent() to add Event structured data for concerts, conferences, and meetups with dates, venues, and ticket information.](https://unhead.unjs.io/docs/schema-org/api/schema/event) [**HowTo** Add HowTo structured data with Unhead, including step-by-step JSON-LD, images, supplies, tools, and time estimates.](https://unhead.unjs.io/docs/schema-org/api/schema/how-to)

**On this page **

- [Schema.org FoodEstablishment](#schemaorg-foodestablishment)
- [Useful Links](#useful-links)
- [Google requirements](#google-requirements)
- [Recommended Properties](#recommended-properties)
- [Defaults](#defaults)
- [Sub-Types](#sub-types)
- [Resolves](#resolves)
- [Types](#types)
- [Related Schemas](#related-schemas)