Passenger Ferry & Island Water Transit Route Schema Markup (JSON-LD)
Structured data for scheduled passenger ferry routes, island water taxis, and vehicle car ferries, encoding departure/arrival marine terminals, sailing durations, vehicle deck fees, and ticketing offers.
Displayed below main page header or above the tool container. • Zero CLS Container
Production JSON-LD Code Block
Embed this structured data block directly into your HTML <head> or framework layout template.
{
"@context": "https://schema.org",
"@type": "BoatTrip",
"@id": "https://example.com/ferry/seattle-bainbridge-route#trip",
"name": "Seattle to Bainbridge Island Scheduled Passenger & Vehicle Ferry",
"description": "Scenic 35-minute cross-sound public ferry transit service carrying walk-on foot passengers, bicycles, and motor vehicles with departures every 50 minutes.",
"departureBoatTerminal": {
"@type": "BoatTerminal",
"name": "Colman Dock / Seattle Ferry Terminal (Pier 52)",
"address": {
"@type": "PostalAddress",
"streetAddress": "801 Alaskan Way",
"addressLocality": "Seattle",
"addressRegion": "WA",
"postalCode": "98104",
"addressCountry": "US"
}
},
"arrivalBoatTerminal": {
"@type": "BoatTerminal",
"name": "Bainbridge Island Ferry Terminal",
"address": {
"@type": "PostalAddress",
"streetAddress": "Olympic Drive SE",
"addressLocality": "Bainbridge Island",
"addressRegion": "WA",
"postalCode": "98110",
"addressCountry": "US"
}
},
"provider": {
"@type": "Organization",
"name": "Washington State Ferries",
"telephone": "+1-206-555-0190"
},
"offers": {
"@type": "Offer",
"price": "9.85",
"priceCurrency": "USD",
"description": "Standard adult walk-on passenger one-way fare."
}
}Typed Properties Specification (6 Fields)
Key Schema.org properties and sub-objects required to qualify for rich snippet treatment in Google Search.
| Property | Expected Type | Status | Description & Example |
|---|---|---|---|
| name | Text | Required | Official sailing route title connecting departure and arrival terminals. e.g. Seattle to Bainbridge Island Scheduled Passenger & Vehicle Ferry |
| departureBoatTerminal | BoatTerminal | Required | Originating marine ferry terminal name and physical street address. e.g. { "@type": "BoatTerminal", "name": "Colman Dock / Seattle Ferry Terminal..." } |
| arrivalBoatTerminal | BoatTerminal | Required | Destination island or mainland ferry terminal and address. e.g. { "@type": "BoatTerminal", "name": "Bainbridge Island Ferry Terminal..." } |
| provider | Organization | Required | Operating maritime transit authority or private ferry company. e.g. { "@type": "Organization", "name": "Washington State Ferries" } |
| offers | Offer | Required | Walk-on passenger or vehicle ticket fare, currency, and concession terms. e.g. { "@type": "Offer", "price": "9.85", "priceCurrency": "USD" } |
| description | Text | Recommended | Crossing duration, departure frequency, vehicle deck restrictions, and accessibility. e.g. Scenic 35-minute cross-sound public ferry transit service... |
Google Search Console Pitfalls & Critical Warnings
Avoid these 3 common validation traps, parser errors, and algorithmic policy penalties when deploying BoatTrip schema.
Missing Explicit Departure & Arrival BoatTerminal Nodes
Using plain string names for ferry docks without BoatTerminal structured nodes prevents Google Maps transit route integration.
Encapsulate terminals inside typed BoatTerminal objects with postal addresses.
Confusing Passenger Foot Fares with Vehicle Deck Fares
Failing to clarify whether ticket price is per-person or per-vehicle causes passenger fare disputes.
Specify 'walk-on passenger fare' vs 'standard vehicle fare' in offer description.
Omission of Crossing Travel Time Duration
Failing to provide crossing duration in description hurts travel planning SERP utility.
State transit duration (e.g., '35 minutes') in description.
Recommended Implementation Scenarios
Related Schema Blueprints
Explore complementary structured data blueprints across the Local Business cluster.
Displayed below main page header or above the tool container. • Zero CLS Container