TrainReservation
TrainReservation is a Reservation subtype for rail travel bookings. It adds no properties of its own. Set reservationFor to a TrainTrip object with departureStation, arrivalStation, departureTime, arrivalTime, and trainNumber. Use reservedTicket for seat assignments. Gmail reads this to show a train ticket card.
For a complete property walkthrough, see the Reservation example. Replace "@type": "Reservation" with "@type": "TrainReservation" and set reservationFor to a TrainTrip.
Full example of schema.org/TrainReservation 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": "TrainReservation",
"reservationId": "AMT-NEC-2026-7741",
"reservationStatus": "https://schema.org/ReservationConfirmed",
"reservationFor": {
"@type": "TrainTrip",
"trainName": "Northeast Regional",
"trainNumber": "NEC 171",
"departureStation": { "@type": "TrainStation", "name": "New York Penn Station" },
"arrivalStation": { "@type": "TrainStation", "name": "Scranton Intermodal" },
"departureTime": "2026-11-13T06:30:00-05:00",
"arrivalTime": "2026-11-13T10:15:00-05:00"
},
"underName": { "@type": "Person", "name": "Gina Morales" },
"reservedTicket": {
"@type": "Ticket",
"ticketNumber": "AMT-7741-B",
"ticketedSeat": { "@type": "Seat", "seatNumber": "22B", "seatSection": "Coach" }
},
"totalPrice": "67.00",
"priceCurrency": "USD"
}
</script>Minimal valid version
The smallest markup that still produces a valid TrainReservation 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": "TrainReservation",
"reservationId": "AMT-NEC-2026-7741",
"reservationStatus": "https://schema.org/ReservationConfirmed",
"reservationFor": { "@type": "TrainTrip", "trainNumber": "NEC 171", "departureStation": { "@type": "TrainStation", "name": "New York Penn Station" }, "arrivalStation": { "@type": "TrainStation", "name": "Scranton Intermodal" }, "departureTime": "2026-11-13T06:30:00-05:00" },
"underName": { "@type": "Person", "name": "Gina Morales" }
}
</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 train ticket cardprimary
Common TrainReservation 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
reservationFor as a TrainStation instead of TrainTrip
Wrong"reservationFor": { "@type": "TrainStation", "name": "Penn Station" }Right"reservationFor": { "@type": "TrainTrip", "departureStation": { ... }, "arrivalStation": { ... } }You reserve a trip, not a station. reservationFor should be a TrainTrip with departure and arrival stations, times, and train number.
Schema properties in this example
Comments
Loading comments...