---
title: "Read saved price history for a travel date"
method: GET
path: "/v1/fares/history"
tags: ["Fares"]
---

# Read saved price history for a travel date

`GET /v1/fares/history`

## Request

- Base URL: `https://sweetsaverfare.com`
- URL: `https://sweetsaverfare.com/v1/fares/history`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://sweetsaverfare.com/oauth/auth`, token URL `https://sweetsaverfare.com/oauth/token`, scopes: `fares:read`)

Returns the same saved price history as sailing-fare responses, without loading sailing status or alternative evidence. Include observation times and fare qualifications when quoting historical prices.

## Query parameters

- `route_id` 'TSA_SWB' | 'SWB_TSA' | 'TSA_DUK' | 'DUK_TSA' | 'TSA_NAN' | 'HSB_NAN' | 'NAN_HSB' | 'SWB_FUL' | 'FUL_SWB' | 'HSB_LNG' | 'LNG_HSB' | 'ERL_SLT' | 'SLT_ERL' | 'CMX_PWR' | 'PWR_CMX', required
- `profile_id` 'ADULT_NO_VEHICLE' | 'ADULT_STANDARD_VEHICLE' | 'ADULT_OVERHEIGHT_VEHICLE', required
- `travel_date` string, date, required
- `departure_time` string
- `passenger` 'ADULT' | 'SENIOR_65_PLUS' | 'CHILD_0_4' | 'CHILD_5_11'

## Response `200`

Saved price history

- FareHistoryResponse
  - `observation_id` string, uuid, nullable, required
  - `observed_at` string, date-time, required
  - `stale_after` string, date-time, required
  - `freshness_state` 'fresh' | 'stale' | 'expired', required
  - `source_status` 'ok' | 'missing' | 'provider_queue_active' | 'session_expired' | 'blocked' | 'unknown', required
  - `data_source` 'demo' | 'fake_worker' | 'fixture' | 'live_provider' | 'schedule_reference', required
  - `parser_version` string, required
  - `observation_trace_id` string, nullable, required
  - `fixture_sha` string, nullable, required
  - `observation_outcome` 'verified' | 'partial' | 'unavailable' | 'failed'
  - `disclaimer` 'Ferry fares can change. Confirm final availability and price directly with BC Ferries before making travel decisions.', required
  - `route_id` 'TSA_SWB' | 'SWB_TSA' | 'TSA_DUK' | 'DUK_TSA' | 'TSA_NAN' | 'HSB_NAN' | 'NAN_HSB' | 'SWB_FUL' | 'FUL_SWB' | 'HSB_LNG' | 'LNG_HSB' | 'ERL_SLT' | 'SLT_ERL' | 'CMX_PWR' | 'PWR_CMX', required
  - `profile_id` 'ADULT_NO_VEHICLE' | 'ADULT_STANDARD_VEHICLE' | 'ADULT_OVERHEIGHT_VEHICLE', required
  - `travel_date` string, date, required
  - `route_advisory` RouteAdvisory, required
    - `message` string, required
    - `source_url` string, uri, required
    - `reviewed_at` string, date, required
  - `price_history_included` true: History is included by this endpoint.
  - `price_history` PriceHistoryPoint[], required
    - `observed_at` string, date-time, required
    - `price_cents` integer, required
    - `saver_price_cents` integer, nullable

## Other responses

- `400`: Invalid request
- `401`: Authentication required
- `403`: Permission or plan entitlement required
- `429`: Request rate limit exceeded
- `500`: Internal server error

---

[API](https://skmtc.dev/sweetsaverfare/apis/sweet-saver-fare-public-api.md) · [All operations](https://skmtc.dev/sweetsaverfare/apis/sweet-saver-fare-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/sweetsaverfare/apis/sweet-saver-fare-public-api/revisions/102cb8af7798?raw)
