FoodEstablishmentReservation
FoodEstablishmentReservation is a Reservation subtype for restaurant bookings, cafe reservations, and any food establishment table booking. It has 3 properties of its own: startTime (when the reservation starts), endTime (when it ends), and partySize (how many guests). Gmail reads this markup in confirmation emails to show a restaurant reservation card with the time, party size, and restaurant details.
The type hierarchy is Thing → Intangible → Reservation → FoodEstablishmentReservation. All 12 Reservation properties apply. Set reservationFor to a Restaurant or FoodEstablishment object with name and address so Gmail can show the restaurant location on a map.
Full example of schema.org/FoodEstablishmentReservation json-ld markup
The markup is verified as valid with Rich Results Test from Google.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FoodEstablishmentReservation",
"reservationId": "DG-2026-11-14-1930",
"reservationStatus": "https://schema.org/ReservationConfirmed",
"reservationFor": {
"@type": "Restaurant",
"name": "The Dunmore Grill",
"address": {
"@type": "PostalAddress",
"streetAddress": "412 Main Street",
"addressLocality": "Dunmore",
"addressRegion": "PA",
"postalCode": "18512",
"addressCountry": "US"
},
"telephone": "+1-570-555-0200"
},
"startTime": "2026-11-14T19:30:00-05:00",
"endTime": "2026-11-14T21:30:00-05:00",
"partySize": 6,
"underName": {
"@type": "Person",
"name": "Lena Vasquez",
"email": "lena@xoocode.com"
},
"provider": {
"@type": "Restaurant",
"name": "The Dunmore Grill"
},
"bookingTime": "2026-11-01T10:15:00-05:00"
}
</script>startTime and endTime
startTime is when the table is reserved. endTime is when the reservation slot ends. Not every restaurant uses endTime (many have open-ended seatings), so it is optional. Use ISO 8601 time format: "19:30:00" or full datetime "2026-11-14T19:30:00-05:00".
partySize
partySize takes an integer or QuantitativeValue for the number of guests. Gmail displays this on the reservation card. For a party of 4, just use the integer 4.
Minimal valid version
The smallest markup that still produces a valid FoodEstablishmentReservation entity. Use it as the floor. Reach for the advanced example above when you want search engines and AI agents to understand more about your content.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FoodEstablishmentReservation",
"reservationId": "DG-2026-11-14-1930",
"reservationStatus": "https://schema.org/ReservationConfirmed",
"reservationFor": { "@type": "FoodEstablishment", "name": "The Dunmore Grill", "address": { "@type": "PostalAddress", "streetAddress": "412 Main Street", "addressLocality": "Dunmore", "addressRegion": "PA", "addressCountry": "US" } },
"startTime": "2026-11-14T19:30:00-05:00",
"partySize": 6,
"underName": { "@type": "Person", "name": "Lena Vasquez" }
}
</script>Google rich results this unlocks
Markup matching this example makes your page eligible for the following Google Search rich results. The primary target drives the required / recommended property classification in the advanced code block above.
- Google docsGmail reservation cardprimary
Common FoodEstablishmentReservation mistakes
Mistakes that pass validation but silently fail to earn rich results or mislead consumers walking the graph. Avoid these and your markup will be ahead of most sites in the wild.
- 01
Missing partySize
WrongFoodEstablishmentReservation with time and restaurant but no partySizeRight"partySize": 6partySize tells the restaurant (and Gmail) how many guests are coming. It is the most important FoodEstablishmentReservation-specific property. Without it, the reservation card is incomplete.
- 02
reservationFor as a string
Wrong"reservationFor": "The Dunmore Grill"Right"reservationFor": { "@type": "Restaurant", "name": "The Dunmore Grill", "address": { ... } }reservationFor expects a FoodEstablishment or Restaurant object with name and address. Gmail uses the address to show a map link on the reservation card. A plain string has no location data.
- 03
Using Reservation instead of FoodEstablishmentReservation
Wrong"@type": "Reservation" for a restaurant bookingRight"@type": "FoodEstablishmentReservation"FoodEstablishmentReservation adds startTime, endTime, and partySize. Without the subtype, you cannot express when the table is reserved or for how many people.
Schema properties in this example
About the example data
A dinner reservation at The Dunmore Grill for an XooCon speaker dinner. The reservationFor references the Restaurant entity.
Comments
Loading comments...