Data sources and API guide

Ferry FYI is an independent trip-planning app. This page explains which data informs the app, how to interpret its freshness, and how to cite it accurately.

Methodology last reviewed .

Data sources and freshness

  • Washington State Ferries service data: schedules, terminal relationships, vessel context, capacity reports, service bulletins, and camera metadata are refreshed as upstream information is available. This context originates with Washington State Ferries. Its timestamps describe when the source was last observed, not a guarantee that conditions are unchanged.
  • Weather: Ferry FYI uses forecast weather conditions to help explain future capacity estimates. Weather data is from Open-Meteo.
  • Tides: predicted tide conditions from NOAA help identify low-tide cancellation risk on affected routes. A risk indication is not a confirmed cancellation.
  • Ferry FYI forecasts: capacity and delay forecasts are Ferry FYI estimates derived from observed conditions, historical patterns, and forecast inputs. They are not an official boarding, reservation, delay, or cancellation decision.

Citing Ferry FYI data

Cite the canonical route or terminal page for a human-readable summary, include the page's access time, and preserve the displayed freshness timestamp. For live claims, distinguish an observed value such as a capacity report or GPS delay from a predictive estimate.

Link to this page when citing Ferry FYI's methodology or data limits, and to Forecasting when explaining how vehicle-space, delay, weather, or tide-risk forecasts are produced.

Public read-only API

Ferry FYI's public JSON API can provide current planning context. It is operational data rather than a stable third-party integration contract. Responses include a body payload and wsfStatusso callers can retain upstream availability and freshness context.

The generated OpenAPI contract is the machine-readable operation reference. Live API responses are not stored for offline reuse. Public reads use shared-NAT-aware limits; sensitive ticket lookups and upstream-triggering refreshes use separate, stricter classes. Errors retain the same top-level envelope and never include stack or authentication-provider details.

  • GET /api/terminals discovers terminal ids, route relationships, bulletins, and wait-time context.
  • GET /api/schedule/:departingId/:arrivingId/:YYYY-MM-DDreturns a route's sailings, observed crossing data, estimates, weather, tides, and vessel context for a service date.
  • GET /api/vessels returns known vessel status and active GPS-delay signals when available.
  • GET /api/cameras/frames?ids=:commaSeparatedCameraIdsreturns camera freshness and image metadata. Do not infer an exact queue length or boarding availability from an image.
  • GET /api/fares/catalog returns the available fare items for a terminal pair and service date; POST /api/fares/quotecalculates selected items. Preserve current, stale, no-fare, or unavailable state in any summary.

Corrections and limits

Conditions can change after a refresh. For an error, missing timestamp, or source question, use the Ferry FYI support page. Do not use a forecast or camera observation as proof of a confirmed sailing outcome.