www.gwr.com
Open in
urlscan Pro
2600:9000:2156:9400:7:3b29:8e40:93a1
Public Scan
Submitted URL: https://www.gwr.com/plan-journey/stations-and-routes?utm_source=misc&utm_medium=email&utm_term=Station_information&u...
Effective URL: https://www.gwr.com/stations-and-destinations/stations?utm_source=misc&utm_medium=email&utm_term=Station_information...
Submission: On February 01 via manual from GB — Scanned from GB
Effective URL: https://www.gwr.com/stations-and-destinations/stations?utm_source=misc&utm_medium=email&utm_term=Station_information...
Submission: On February 01 via manual from GB — Scanned from GB
Form analysis
3 forms found in the DOM<form action="" class="new-signup-form" data-bind="visible: !newSignUpFormIsSubmitted(), submit: newSignUpFormSubmit">
<div class="singup-input-col">
<div class="input-wrapper" data-bind="validationElement:newSignUpFormData.email" title="Please enter a valid email address." data-orig-title="">
<label for="emailAddress" class="hidden">Email Address</label>
<input id="emailAddress" type="text" placeholder="Email address" data-bind="value: newSignUpFormData.email" title="Please enter a valid email address." data-orig-title="">
</div>
<p class="validation-error-message" data-bind="validationMessage: newSignUpFormData.email" style="display: none"></p>
</div>
<div class="singup-button-col">
<button class="btn btn-signup-newsletter" id="newSignUpFormSubmit" data-bind="click: newSignUpFormSubmit">Submit<span class="sr-only"> signup to newsletter form</span></button>
</div>
</form>
<form action="" class="new-signup-modal-form" data-bind="visible: !isSubmitted(), submit: submit">
<div class="singup-input-col">
<div class="input-wrapper" data-bind="validationElement:data.email" title="Please enter a valid email address." data-orig-title="">
<label for="newSignUpModalForm">Enter your email here to join</label>
<input type="text" id="newSignUpModalForm" placeholder="Email address" tabindex="0" data-bind="value: data.email" title="Please enter a valid email address." data-orig-title="">
</div>
<p class="validation-error-message" data-bind="validationMessage: data.email" style="display: none"></p>
</div>
<div class="singup-button-col">
<button class="btn btn-signup-newsletter" id="newSignUpFormModalSubmit" tabindex="0" data-bind="click: submit">Submit<span class="sr-only"> signin to GWR news and offers form</span></button>
</div>
</form>
<form action="" class="forms-wrapper qtt-form" data-bind="
css: {'ko-hide': false, 'qtt-form--simplified': false, 'simpliform': false },
event: { }
">
<div class="row top-links">
<h2 class="col-xs-12">Buy train tickets <span class="hidden-xs hidden-sm">to any destination in Britain </span><span class="hidden-xs hidden-sm">– no booking fee</span></h2>
<div class="clearfix"></div>
<div class="col-sm-12 hidden-xs plan-journey-links-in-qtt-header">
<a href="https://tickets.gwr.com/gw/en/journeyplanning/seasonmixingdeck" target="" class="btn-go-seasontickets"><span class="sr-only">Find prices and </span>Buy season tickets</a>
<a href="http://tickets.gwr.com/gw/en/JourneyPlanning/Wizard/" target="" class="hide-on-simple-qtt">Accessible booking tool</a>
<a href="/your-tickets/choosing-your-ticket/smart-tickets/touch" target="" class="">Touch smartcard</a>
</div>
<div class="clearfix"></div>
</div>
<div class="row station-selection">
<div tid="stationPickerFrom" class="col-xs-12 col-sm-5 col-md-5 col-lg-2 departure-station with-caret station-input">
<div data-bind="validationElement: searchCriteria.departureStation" title="Please enter a valid station name" data-orig-title="">
<label for="qtt_out_dep_st_38fcbb0c-00ef-425a-82cf-0462e2517849" class="hidden">Please start typing and select departure station name</label>
<input data-elid="qtt-from-station" type="text" id="qtt_out_dep_st_38fcbb0c-00ef-425a-82cf-0462e2517849" placeholder="Departing from..."
data-bind="autoCompleteStations: { selectedId: searchCriteria.departureStation, selectedText: departureStationName }, event: {change: dlPushNewFieldValue.bind($data, false, 'qtt_out_dep_st', searchCriteria.departureStation) }"
autocomplete="off" aria-label="Please start typing and select departure station name">
</div>
<span class="validation-error-message" data-bind="validationMessage: searchCriteria.departureStation" style="display: none;"></span>
</div>
<div class="col-sm-2 col-md-2 col-lg-1 station-switch" title="Swap selected station">
<button type="button" class="gwr-icon icon-swap_horizontal hidden-xs" data-bind="click: swapStationDirections, event: {click: dlTriggerEvent.bind($data, false, 'qttSwapStations')}" data-elid="qtt-station-swap-desktop"
aria-label="Swap selected stations"></button>
<button type="button" class="gwr-icon icon-swap_vertical visible-xs" data-bind="click: swapStationDirections, event: {click: dlTriggerEvent.bind($data, false, 'qttSwapStations')}" data-elid="qtt-station-swap-mobile"
aria-label="Swap selected stations"></button>
</div>
<div tid="stationPickerTo" class="col-xs-12 col-sm-5 col-md-5 col-lg-3 arrival-station with-caret station-input">
<div data-bind="validationElement: searchCriteria.arrivalStation" title="Please enter a valid station name" data-orig-title="">
<label for="qtt_out_arr_st_38fcbb0c-00ef-425a-82cf-0462e2517849" class="hidden">Please start typing and select arrival station name</label>
<input data-elid="qtt-to-station" type="text" id="qtt_out_arr_st_38fcbb0c-00ef-425a-82cf-0462e2517849" placeholder="Going to..."
data-bind="autoCompleteStations: { selectedId: searchCriteria.arrivalStation, selectedText: arrivalStationName }, event: {change: dlPushNewFieldValue.bind($data, false, 'qtt_out_arr_st', searchCriteria.arrivalStation) }" autocomplete="off"
aria-label="Please start typing and select arrival station name">
</div>
<span class="validation-error-message" data-bind="validationMessage: searchCriteria.arrivalStation" style="display: none;"></span>
</div>
<div class="col-xs-12 col-lg-6 via-avoid-wrapper">
<div class="row">
<div class="qtt--v2__accordion">
<div class="col-xs-12 col-sm-6 col-lg-6 qtt--v2__via-avoid via-avoid-checkbox">
<div class="row narrow-padding">
<div class="col-xs-5 col-sm-5 via-avoid-checkbox-wrapper">
<div class="checkbox-wrapper">
<input type="checkbox" id="viaAvoidCheckbox_38fcbb0c-00ef-425a-82cf-0462e2517849" class="gwr-checkbox" aria-describedby="travelViaAvoid_38fcbb0c-00ef-425a-82cf-0462e2517849" data-bind="checked: searchCriteria.hasViaAvoid"
aria-label="If you want to travel with via or avoid option please select this checkbox" title="">
<label for="viaAvoidCheckbox_38fcbb0c-00ef-425a-82cf-0462e2517849" id="travelViaAvoid_38fcbb0c-00ef-425a-82cf-0462e2517849">Via/Avoid</label>
</div>
</div>
<div class="col-xs-7 col-sm-7" data-bind="visible: searchCriteria.hasViaAvoid" style="display: none;">
<div class="position-relative" data-bind="validationElement: searchCriteria.viaAvoidType" title="">
<label for="qtt_via_avoid_38fcbb0c-00ef-425a-82cf-0462e2517849" class="hidden">Please select option Via or Avoid from list</label>
<div class="fancy-select"><select id="qtt_via_avoid_38fcbb0c-00ef-425a-82cf-0462e2517849" class="form-control fancified" data-bind="
value: searchCriteria.viaAvoidType,
options: searchCriteria.viaAvoidTypes,
fancySelect:{ setWidth: true, desktopOnly: false },
event: { focus: dlCaptureCurrentFieldValue.bind($data, 'qtt_via_avoid', searchCriteria.viaAvoidType()), change: dlPushNewFieldValue.bind($data, false, 'qtt_via_avoid', searchCriteria.viaAvoidType) }"
data-elid="qtt-via-avoid-options" aria-label="Please select option Via or Avoid from list" title="" style="width: 1px; height: 1px; display: block; position: absolute; top: 0px; left: 0px; opacity: 0;">
<option value="Via">Via</option>
<option value="Avoid">Avoid</option>
</select>
<div class="trigger">Via</div>
<ul class="options">
<li data-raw-value="Via" class="selected">Via</li>
<li data-raw-value="Avoid">Avoid</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="qtt--v2__spacer qtt--v2__visible"></div>
<div tid="stationPickerViaAvoid" class="col-xs-12 col-sm-6 col-lg-6 via-avoid-station with-caret station-input" data-bind="visible: searchCriteria.hasViaAvoid" style="display: none;">
<div class="position-relative" data-bind="validationElement: searchCriteria.viaAvoidStation" title="">
<label for="qtt_via_avoid_st_38fcbb0c-00ef-425a-82cf-0462e2517849" class="hidden">Please start typing and select name of station for via or avoid option</label>
<input data-elid="qtt-viaavoid-station" type="text" id="qtt_via_avoid_st_38fcbb0c-00ef-425a-82cf-0462e2517849" placeholder="Enter station..."
data-bind="autoCompleteStations: { selectedId: searchCriteria.viaAvoidStation, selectedText: viaAvoidStationName }, event: {change: dlPushNewFieldValue.bind($data, false, 'qtt_via_avoid_st', searchCriteria.viaAvoidStation) }"
autocomplete="off" aria-label="Please start typing and select name of station for via or avoid option">
</div>
<span class="validation-error-message" data-bind="validationMessage: searchCriteria.viaAvoidStation" style="display: none;"></span>
</div>
</div>
</div>
</div>
<div class="qtt--v2__accordion date-type-row">
<div class="col-xs-12 col-sm-9 col-md-9 col-lg-4 departure-info-row">
<div class="row narrow-padding">
<div class="col-xs-12 col-sm-6 col-lg-4 with-caret qtt--v2__outdate" data-bind="validationElement: searchCriteria.departureDate" title="">
<div class="datepickerwrap">
<label for="qtt_out_date_38fcbb0c-00ef-425a-82cf-0462e2517849" class="hidden">Please select date from calendar for outbound journey</label>
<input data-elid="qtt-out-date" id="qtt_out_date_38fcbb0c-00ef-425a-82cf-0462e2517849" type="text" class="form-control hasDatepicker" data-bind="value: formattedDepartureDate,
focusOnElement: {trigger: { event: 'keydown', which: [32,40]}, target: '.extended-booking-horizon__link'},
datepicker: { date: searchCriteria.departureDate, options: { showButtonPanel: true }, focusOnClose: '#qtt_out_date_38fcbb0c-00ef-425a-82cf-0462e2517849'},
event: {focus: dlCaptureCurrentFieldValue.bind($data, 'qtt_out_date', searchCriteria.departureDate()), blur: dlPushNewFieldValue.bind($data, false, 'qtt_out_date', searchCriteria.departureDate) }"
aria-label="Please select date from calendar for outbound journey">
<i class="gwr-icon icon-carat_down"></i>
</div>
</div>
<div class="col-xs-7 col-sm-4 with-caret qtt--v2__outafter">
<div data-bind="validationElement: searchCriteria.departureType" data-elid="qtt-departure-options" title="">
<label for="qtt_out_after_38fcbb0c-00ef-425a-82cf-0462e2517849" class="hidden">Please select if you want to depart after or arrive before the selected date</label>
<div class="fancy-select"><select id="qtt_out_after_38fcbb0c-00ef-425a-82cf-0462e2517849" class="form-control fancified"
data-bind="fancySelect:{ setWidth : true }, value: searchCriteria.departureType, event: {focus: dlCaptureCurrentFieldValue.bind($data, 'qtt_out_after', searchCriteria.departureType()), change: dlPushNewFieldValue.bind($data, false, 'qtt_out_after', searchCriteria.departureType) }"
aria-label="Please select if you want to depart after or arrive before the selected date" title="" style="width: 1px; height: 1px; display: block; position: absolute; top: 0px; left: 0px; opacity: 0;">
<option value="DepartAfter" selected="selected">Depart after</option>
<option value="ArriveBy">Arrive before</option>
</select>
<div class="trigger">Depart after</div>
<ul class="options">
<li data-raw-value="DepartAfter" class="selected">Depart after</li>
<li data-raw-value="ArriveBy">Arrive before</li>
</ul>
</div>
</div>
</div>
<div class="col-xs-5 col-sm-2 col-lg-4 with-caret qtt--v2__outtime">
<div data-bind="validationElement: searchCriteria.departureDate, event: {click: dlTriggerEvent.bind($data, false, 'qtt_ret_time_click') }" data-elid="qtt-out-time" title="">
<label for="qtt_out_time_38fcbb0c-00ef-425a-82cf-0462e2517849" class="hidden">Please select time for outbound journey</label>
<div class="fancy-select"><select id="qtt_out_time_38fcbb0c-00ef-425a-82cf-0462e2517849" class="form-control fancified" data-bind="timeList: { time: searchCriteria.departureDate }, fancySelect: { setWidth: true }"
aria-label="Please select time for outbound journey" style="width: 1px; height: 1px; display: block; position: absolute; top: 0px; left: 0px; opacity: 0;">
<option value="00:00">00:00</option>
<option value="00:30">00:30</option>
<option value="01:00">01:00</option>
<option value="01:30">01:30</option>
<option value="02:00">02:00</option>
<option value="02:30">02:30</option>
<option value="03:00">03:00</option>
<option value="03:30">03:30</option>
<option value="04:00">04:00</option>
<option value="04:30">04:30</option>
<option value="05:00">05:00</option>
<option value="05:30">05:30</option>
<option value="06:00">06:00</option>
<option value="06:30">06:30</option>
<option value="07:00">07:00</option>
<option value="07:30">07:30</option>
<option value="08:00">08:00</option>
<option value="08:30">08:30</option>
<option value="09:00">09:00</option>
<option value="09:30">09:30</option>
<option value="10:00">10:00</option>
<option value="10:30">10:30</option>
<option value="11:00">11:00</option>
<option value="11:30">11:30</option>
<option value="12:00">12:00</option>
<option value="12:30">12:30</option>
<option value="13:00">13:00</option>
<option value="13:30">13:30</option>
<option value="14:00">14:00</option>
<option value="14:30">14:30</option>
<option value="15:00">15:00</option>
<option value="15:30">15:30</option>
<option value="16:00">16:00</option>
<option value="16:30">16:30</option>
<option value="17:00">17:00</option>
<option value="17:30">17:30</option>
<option value="18:00">18:00</option>
<option value="18:30">18:30</option>
<option value="19:00">19:00</option>
<option value="19:30">19:30</option>
<option value="20:00">20:00</option>
<option value="20:30">20:30</option>
<option value="21:00">21:00</option>
<option value="21:30">21:30</option>
<option value="22:00">22:00</option>
<option value="22:30">22:30</option>
<option value="23:00">23:00</option>
<option value="23:30">23:30</option>
</select>
<div class="trigger">01:30</div>
<ul class="options">
<li data-raw-value="00:00">00:00</li>
<li data-raw-value="00:30">00:30</li>
<li data-raw-value="01:00">01:00</li>
<li data-raw-value="01:30" class="selected">01:30</li>
<li data-raw-value="02:00">02:00</li>
<li data-raw-value="02:30">02:30</li>
<li data-raw-value="03:00">03:00</li>
<li data-raw-value="03:30">03:30</li>
<li data-raw-value="04:00">04:00</li>
<li data-raw-value="04:30">04:30</li>
<li data-raw-value="05:00">05:00</li>
<li data-raw-value="05:30">05:30</li>
<li data-raw-value="06:00">06:00</li>
<li data-raw-value="06:30">06:30</li>
<li data-raw-value="07:00">07:00</li>
<li data-raw-value="07:30">07:30</li>
<li data-raw-value="08:00">08:00</li>
<li data-raw-value="08:30">08:30</li>
<li data-raw-value="09:00">09:00</li>
<li data-raw-value="09:30">09:30</li>
<li data-raw-value="10:00">10:00</li>
<li data-raw-value="10:30">10:30</li>
<li data-raw-value="11:00">11:00</li>
<li data-raw-value="11:30">11:30</li>
<li data-raw-value="12:00">12:00</li>
<li data-raw-value="12:30">12:30</li>
<li data-raw-value="13:00">13:00</li>
<li data-raw-value="13:30">13:30</li>
<li data-raw-value="14:00">14:00</li>
<li data-raw-value="14:30">14:30</li>
<li data-raw-value="15:00">15:00</li>
<li data-raw-value="15:30">15:30</li>
<li data-raw-value="16:00">16:00</li>
<li data-raw-value="16:30">16:30</li>
<li data-raw-value="17:00">17:00</li>
<li data-raw-value="17:30">17:30</li>
<li data-raw-value="18:00">18:00</li>
<li data-raw-value="18:30">18:30</li>
<li data-raw-value="19:00">19:00</li>
<li data-raw-value="19:30">19:30</li>
<li data-raw-value="20:00">20:00</li>
<li data-raw-value="20:30">20:30</li>
<li data-raw-value="21:00">21:00</li>
<li data-raw-value="21:30">21:30</li>
<li data-raw-value="22:00">22:00</li>
<li data-raw-value="22:30">22:30</li>
<li data-raw-value="23:00">23:00</li>
<li data-raw-value="23:30">23:30</li>
</ul>
</div>
</div>
</div>
</div>
<div class="row validation">
<div class="col-xs-12">
<span class="validation-error-message" data-bind="validationMessage: searchCriteria.departureDate" style="display: none;"></span>
<span class="validation-error-message" data-bind="validationMessage: searchCriteria.departureType" style="display: none;"></span>
</div>
</div>
</div>
<div class="qtt--v2__spacer qtt--v2__visible"></div>
<div class="col-xs-12 col-sm-7 col-md-3 col-lg-3 qtt--v2__visible qtt--v2__journey-type">
<div class="btn-group pill-switch" role="group" aria-label="Return options">
<button data-elid="single-button" title="Single" type="button" class="btn btn-default active"
data-bind="css: {active: !searchCriteria.isReturnJourney() }, click: function(){ searchCriteria.isReturnJourney(false); searchCriteria.isOpenReturn(false) }, event: {click: dlTriggerEvent.bind($data, false, 'qttTabClickSingle')}">
<span class="pill-switch__text">Single</span>
</button>
<button data-elid="return-button" title="Return" type="button" class="btn btn-default"
data-bind="css: {active: searchCriteria.isReturnJourney() && !searchCriteria.isOpenReturn()}, click: function(){ searchCriteria.isReturnJourney(true); searchCriteria.isOpenReturn(false) }, event: {click: dlTriggerEvent.bind($data, false, 'qttTabClickReturn')}">
<span class="pill-switch__text">Return</span>
</button>
<button data-elid="open-return-button" title="Open Return" type="button" class="btn btn-default"
data-bind="css: {active: searchCriteria.isOpenReturn }, click: function(){ searchCriteria.isReturnJourney(true); searchCriteria.isOpenReturn(true) }, event: {click: dlTriggerEvent.bind($data, false, 'qttTabClickOpenReturn')}">
<span class="pill-switch__text">Open Return</span>
</button>
</div>
</div>
</div>
</div>
<!-- ko if: searchCriteria.isReturnJourney() && !searchCriteria.isOpenReturn() --><!-- /ko -->
<div class="row other-info-row">
<div class="qtt--v2__accordion">
<div class="col-xs-12 col-sm-7 col-md-3 col-lg-3 qtt--v2__hidden">
<div class="btn-group pill-switch" role="group" aria-label="Return options">
<button type="button" title="Single" class="btn btn-default active"
data-bind="css: {active: !searchCriteria.isReturnJourney() }, click: function(){ searchCriteria.isReturnJourney(false); searchCriteria.isOpenReturn(false) }, event: {click: dlTriggerEvent.bind($data, false, 'qttTabClickSingle')}">
<span class="pill-switch__text">Single</span>
</button>
<button type="button" title="Return" class="btn btn-default"
data-bind="css: {active: searchCriteria.isReturnJourney() && !searchCriteria.isOpenReturn()}, click: function(){ searchCriteria.isReturnJourney(true); searchCriteria.isOpenReturn(false) }, event: {click: dlTriggerEvent.bind($data, false, 'qttTabClickReturn')}">
<span class="pill-switch__text">Return</span>
</button>
<button type="button" title="Open Return" class="btn btn-default"
data-bind="css: {active: searchCriteria.isOpenReturn }, click: function(){ searchCriteria.isReturnJourney(true); searchCriteria.isOpenReturn(true) }, event: {click: dlTriggerEvent.bind($data, false, 'qttTabClickOpenReturn')}">
<span class="pill-switch__text">Open Return</span>
</button>
</div>
</div>
<div class="col-xs-12 col-sm-5 col-md-3 col-lg-3 qtt--v2__passengers">
<div class="row narrow-padding">
<div class="col-xs-5 col-sm-5 adultno" data-bind="validationElement: searchCriteria.numberOfAdults" data-elid="qtt-adult-count" title="">
<label for="qtt_adult_no_38fcbb0c-00ef-425a-82cf-0462e2517849" class="hidden">Please select total number of adults traveling in this journey from list</label>
<div class="fancy-select"><select id="qtt_adult_no_38fcbb0c-00ef-425a-82cf-0462e2517849" class="form-control fancified" data-bind="
value: searchCriteria.numberOfAdults,
options: numberOfAdultsList,
fancySelect: { setWidth: true, suffixes: { none: ' Adults', singular: ' Adult', multiple: ' Adults' } },
event: {focus: dlCaptureCurrentFieldValue.bind($data, 'qtt_adult_no', searchCriteria.numberOfAdults()), blur: dlPushNewFieldValue.bind($data, false, 'qtt_adult_no', searchCriteria.numberOfAdults) }"
aria-label="Please select total number of adults traveling in this journey from list" title="" style="width: 1px; height: 1px; display: block; position: absolute; top: 0px; left: 0px; opacity: 0;">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
</select>
<div class="trigger">1 Adult</div>
<ul class="options">
<li data-raw-value="0">0</li>
<li data-raw-value="1" class="selected">1</li>
<li data-raw-value="2">2</li>
<li data-raw-value="3">3</li>
<li data-raw-value="4">4</li>
<li data-raw-value="5">5</li>
<li data-raw-value="6">6</li>
<li data-raw-value="7">7</li>
<li data-raw-value="8">8</li>
<li data-raw-value="9">9</li>
</ul>
</div>
</div>
<div class="col-xs-7 col-sm-7 childno" data-bind="validationElement: searchCriteria.numberOfChildren" data-elid="qtt-children-count" title="">
<label for="qtt_children_no_38fcbb0c-00ef-425a-82cf-0462e2517849" class="hidden">Please select total number of children traveling in this journey from list</label>
<div class="fancy-select"><select id="qtt_children_no_38fcbb0c-00ef-425a-82cf-0462e2517849" class="form-control fancified" data-bind="
value: searchCriteria.numberOfChildren,
options: numberOfChildrenList,
fancySelect: { setWidth: true, suffixes: { none: ' Children (5-15)', singular: ' Child (5-15)', multiple: ' Children (5-15)' } },
event: {focus: dlCaptureCurrentFieldValue.bind($data, 'qtt_children_no', searchCriteria.numberOfChildren()), blur: dlPushNewFieldValue.bind($data, false, 'qtt_children_no', searchCriteria.numberOfChildren) }"
aria-label="Please select total number of children traveling in this journey from list" title="" style="width: 1px; height: 1px; display: block; position: absolute; top: 0px; left: 0px; opacity: 0;">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
</select>
<div class="trigger">0 Children (5-15)</div>
<ul class="options">
<li data-raw-value="0" class="selected">0</li>
<li data-raw-value="1">1</li>
<li data-raw-value="2">2</li>
<li data-raw-value="3">3</li>
<li data-raw-value="4">4</li>
<li data-raw-value="5">5</li>
<li data-raw-value="6">6</li>
<li data-raw-value="7">7</li>
<li data-raw-value="8">8</li>
<li data-raw-value="9">9</li>
</ul>
</div>
</div>
</div>
<div class="row validation">
<span class="validation-error-message" data-bind="visible: !searchCriteria.adultsPassOnMaxCombinedValidation()" style="display: none;"> Booking for 10 or more, please visit our
<a class="validation-message-url" href="/your-tickets/ways-to-save/group-travel" target="_blank">Group travel page</a>
</span>
<span class="validation-error-message" data-bind="visible: searchCriteria.adultsPassOnMaxCombinedValidation, validationMessage: searchCriteria.numberOfAdults" style="display: none;"></span>
</div>
</div>
<div class="qtt--v2__spacer qtt--v2__visible"></div>
<div class="col-xs-12 col-sm-7 col-md-3 col-lg-4 with-caret railcards-wrapper" data-bind="event: {focusout: $data.onRailcardsFocusOut}">
<div class="row narrow-padding">
<label for="railcards_6a5299df-2e7c-4076-b896-785b59470b04" class="sr-only">Please select your railcards</label>
<input data-elid="railcards-qtt" type="button" id="railcards_6a5299df-2e7c-4076-b896-785b59470b04" class="form-control railcards-qtt" data-bind="value: $data.searchCriteria.railcardsCount() + ' Railcard(s)',
click: $data.onRailcardsInputFocus,
event: {click: $data.dlTriggerEvent.bind($data, false, 'qttRailcardsAdd'), focus: $data.onRailcardsInputFocus, keydown: $data.onRailcardsInputControlKeyDown},
customKeypress: {keyCodes: [13, 32], callback: $data.focusRailcards, callbackValue: true}" value="0 Railcard(s)">
<i class="gwr-icon icon-carat_down" data-bind="click: $data.onRailcardsInputFocus, event: {click: $data.dlTriggerEvent.bind($data, false, 'qttRailcardsAdd')}"></i>
<div class="railcards" style="display:none" data-bind="visible: $data.showRailcardsContainer(), css: { warning: invalidRailcardsParams }, event: {keydown: $data.onRailcardsInputControlKeyDown}">
<!-- ko foreach: { data: $data.searchCriteria.railcards, as: 'railcard'} --><!-- /ko -->
<div class="row">
<div class="col-xs-6 col-md-6 cancel">
<button type="button" class="btn-railcard-link" data-bind="click: $data.railcardsCancel, event: {click: $data.dlTriggerEvent.bind($data, false, 'qttRailcardsCancel')}" data-elid="railcards-cancel-button">Cancel</button>
</div>
<div class="col-xs-6 col-md-6 done">
<button type="button" class="btn btn-custom btn-search-custom railcards-done-button" data-elid="railcards-done-button"
data-bind="click: $data.railcardsDone, css: { disabled: invalidRailcardsParams }, event: {click: $data.dlTriggerEvent.bind($data, false, 'qttRailcardsDone')}">Done</button>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="qtt--v2__footer-links qtt--v2__visible link-container">
<a class="btn-go-seasontickets" href="https://tickets.gwr.com/gw/en/journeyplanning/seasonmixingdeck" target=""><span class="sr-only">Find prices and </span>Buy season tickets</a> <span class="divider"></span>
<a class="hide-on-simple-qtt" href="http://tickets.gwr.com/gw/en/JourneyPlanning/Wizard/" target="">Accessible booking tool</a> <span class="divider"></span>
<a class="" href="/your-tickets/choosing-your-ticket/smart-tickets/touch" target="">Touch smartcard</a> <span class="divider"></span>
</div>
<div class="qtt--v2__spacer qtt--v2__visible"></div>
<div class="col-xs-12 col-sm-5 col-md-3 col-lg-2 form-group text-right btn-wrapper qtt--v2__submit qtt-find-ticket-button-container show-wrapper">
<button tid="findTicketQtt" title="Find Tickets" type="button" class="col-xs-8 col-xs-offset-2 col-sm-12 col-sm-offset-0 btn btn-custom btn-revenue-custom disabled"
data-bind="click: submit, clickBubble: false, css: { disabled: invalidSearchParams }, event: {click: dlTriggerEvent.bind($data, false, 'qttSubmit')}" data-elid="qtt-find"> Find tickets <span class="sr-only"> . You will have 45 minutes to
complete this transaction before the session expires. </span>
</button>
</div>
</div>
</form>
Text Content
Skip to main content Travel Updates Last updated: 01:11 There is a good service across our network Check your journey Buy tickets Travel updates Menu You are not signed in Buy Tickets You have no items in your basket My Account Your tickets Stations and destinations Travel information Travelling with us Help and support Accessibility tools MyAccount Dashboard View your Bookings on MyAccount View your Season tickets on MyAccount View your Favourites on MyAccount View your Nectar card on MyAccount View your eVouchers on MyAccount View your Personal details on MyAccount Your tickets Choosing your ticket Seat reservations Railcards Ways to save Choosing your ticket Advance tickets Smart tickets Season tickets Rangers and Rovers Ways to save Cheap train tickets Combined train and bus tickets Weekend upgrades Group travel Offers Business travel Family ticket Stations and destinations Stations Destinations Popular routes Travel Inspiration Stations Wi-Fi at stations Car parking Travel Inspiration Festivals and events Blogs Heritage railways EnterTrainment Email signup Travel information Train times Travel updates Travel connections Passenger Assist Safety Travel updates Live network updates Check your journey Our busy trains Planned engineering Travel connections Train and bus London transport connections Getting to the airport RailAir Airline partnerships Carhire Travelling with us First Class Night Riviera Sleeper Pullman Dining On our trains Family travel First Class Lounges Food on board On our trains Bringing your bike Food and drink Wi-Fi on board Luggage Travelling with children Travelling with animals Family travel Priority boarding Help and support Refunds and compensation Changing your ticket Penalties and enforcements Lost property FAQs Making a complaint Cymraeg Online security Contact us Refunds and compensation Unused ticket refunds Delay Repay Season ticket refunds FAQs Coronavirus travel information Ticket Types Website and Mobile App Compensation and Refunds Travelling with GWR Other topics Search on entire page: Sign in Travel Updates Last updated: 01:11 Check your journey There is a good service across our network * You are not signed in * Accessibility tools * My account * (0) Travel updatesToggle travel update details * £ 0.00 Buy tickets * Your tickets * Stations and destinations * Travel information * Travelling with us * Help and support Search on entire page: * Choosing your ticket * Seat reservations * Railcards * Ways to save * Advance tickets * Smart tickets * Season tickets * Rangers and Rovers * Cheap train tickets * Combined train and bus tickets * Weekend upgrades * Group travel * Offers * Business travel * Family ticket * Stations * Destinations * Popular routes * Travel Inspiration * Wi-Fi at stations * Car parking * Festivals and events * Blogs * Heritage railways * EnterTrainment * Email signup * Train times * Travel updates * Travel connections * Passenger Assist * Safety * Live network updates * Check your journey * Our busy trains * Planned engineering * Train and bus * London transport connections * Getting to the airport * RailAir * Airline partnerships * Carhire * First Class * Night Riviera Sleeper * Pullman Dining * On our trains * Family travel * Lounges * Food on board * Bringing your bike * Food and drink * Wi-Fi on board * Luggage * Travelling with children * Travelling with animals * Priority boarding * Refunds and compensation * Changing your ticket * Penalties and enforcements * Lost property * FAQs * Making a complaint * Cymraeg * Online security * Contact us * Unused ticket refunds * Delay Repay * Season ticket refunds * Coronavirus travel information * Ticket Types * Website and Mobile App * Compensation and Refunds * Travelling with GWR * Other topics * Home * Stations and destinations * Stations STATIONS AND ROUTES Find out about our stations – from details on car parking and WiFi, to how to get involved in our station community scheme. Departures and arrivals Please enter a station on the GWR network Acton Main Line (AML)Aldermaston (AMT)Appleford (APF)Ascott-under-Wychwood (AUW)Ash (ASH)Ashchurch for Tewkesbury (ASC)Avoncliff (AVF)Avonmouth (AVN)Banbury (BAN)Barnham (BAA)Barnstaple (BNP)Basingstoke (BSK)Bath Spa (BTH)Bedminster (BMT)Bedwyn (BDW)Bere Alston (BAS)Bere Ferrers (BFE)Betchworth (BTO)Blackwater (BAW)Bodmin Parkway (BOD)Bourne End (BNE)Bradford-on-Avon (BOA)Bramley (Hampshire) (BMY)Bridgend (BGN)Bridgwater (BWT)Brighton (BTN)Bristol Parkway (BPW)Bristol Temple Meads (BRI)Bruton (BRU)Bugle (BGL)Burnham (Buckinghamshire) (BNM)Calstock (CSK)Cam & Dursley (CDU)Camborne (CBN)Carbis Bay (CBB)Cardiff Central (CDF)Carmarthen (CMN)Castle Bar Park (CBP)Castle Cary (CLC)Causeland (CAU)Chapelton (Devon) (CPN)Charlbury (CBY)Cheltenham Spa (CNM)Chetnole (CNO)Chichester (CCH)Chilworth (CHL)Chippenham (CPM)Cholsey (CHO)Clifton Down (CFN)Colwall (CWL)Combe (Oxon) (CME)Cookham (COO)Coombe Junction Halt (COE)Copplestone (COP)Cosham (CSA)Crediton (CDI)Crowthorne (CRN)Culham (CUM)Dawlish (DWL)Dawlish Warren (DWW)Dean (Wilts) (DEN)Devonport (DPT)Didcot Parkway (DID)Digby & Sowton (DIG)Dilton Marsh (DMH)Dockyard (Devonport) (DOC)Dorchester West (DCW)Dorking (Deepdene) (DPD)Dorking West (DKT)Drayton Green (DRG)Ealing Broadway (EAL)Eggesford (EGG)Evesham (EVE)Exeter Central (EXC)Exeter St David's (EXD)Exeter St Thomas (EXT)Exmouth (EXM)Exton (EXN)Falmouth Docks (FAL)Falmouth Town (FMT)Fareham (FRM)Farnborough North (FNN)Ferryside (FYS)Filton Abbey Wood (FIT)Finstock (FIN)Fratton (FTN)Freshford (FFD)Frome (FRO)Furze Platt (FZP)Gatwick Airport (GTW)Gloucester (GCR)Gomshall (GOM)Goring & Streatley (GOR)Great Malvern (GMV)Guildford (GLD)Gunnislake (GSL)Hanborough (HND)Hanwell (HAN)Havant (HAV)Hayes & Harlington (HAY)Hayle (HYL)Henley-on-Thames (HOT)Hereford (HFD)Heyford (HYD)Highbridge & Burnham (HIG)Honeybourne (HYB)Hove (HOV)Hungerford (HGD)Iver (IVR)Ivybridge (IVY)Kemble (KEM)Keyham (KEY)Keynsham (KYN)Kidwelly (KWL)Kingham (KGM)Kings Nympton (KGN)Kings Sutton (KGS)Kintbury (KIT)Langley (Berks) (LNY)Lapford (LAP)Lawrence Hill (LWH)Ledbury (LED)Lelant (LEL)Lelant Saltings (LTS)Liskeard (LSK)Llanelli (LLE)London Paddington (PAD)Looe (LOO)Lostwithiel (LOS)Luxulyan (LUX)Lympstone Commando (LYC)Lympstone Village (LYM)Maiden Newton (MDN)Maidenhead (MAI)Malvern Link (MVL)Marlow (MLW)Melksham (MKM)Menheniot (MEN)Midgham (MDG)Montpelier (MTP)Morchard Road (MRD)Moreton-in-Marsh (MIM)Mortimer (MOR)Mottisfont & Dunbridge (DBG)Nailsea & Backwell (NLS)Neath (NTH)Newbury (NBY)Newbury Racecourse (NRC)Newcourt (NCO)Newport (South Wales) (NWP)Newquay (NQY)Newton Abbot (NTA)Newton St Cyres (NTC)North Camp (NCM)Okehampton (OKE)Oldfield Park (OLF)Oxford (OXF)Oxford Parkway (OXP)Paignton (PGN)Pangbourne (PAN)Par (PAR)Parson Street (PSN)Patchway (PWY)Pembrey & Burry Port (PBY)Penmere (PNM)Penryn (Cornwall) (PYN)Penzance (PNZ)Perranwell (PRW)Pershore (PSH)Pewsey (PEW)Pilning (PIL)Plymouth (PLY)Polsloe Bridge (POL)Port Talbot Parkway (PTA)Portsmouth & Southsea (PMS)Portsmouth Arms (PMA)Portsmouth Harbour (PMH)Quintrell Downs (QUI)Radley (RAD)Reading (RDG)Reading West (RDW)Redhill (RDH)Redland (RDA)Redruth (RED)Reigate (REI)Roche (ROC)Romsey (ROM)Salisbury (SAL)Saltash (STS)Sampford Courtenay (SMC)Sandhurst (Berks) (SND)Sandplace (SDP)Sea Mills (SML)Severn Beach (SVB)Severn Tunnel Junction (STJ)Shalford (Surrey) (SFR)Shiplake (SHI)Shipton (SIP)Shirehampton (SHH)Shoreham-by-Sea (SSE)Slough (SLO)South Greenford (SGN)Southall (STL)Southampton Central (SOU)St Andrews Road (SAR)St Austell (SAU)St Budeaux Ferry Road (SBF)St Budeaux Victoria Road (SBV)St Columb Road (SCR)St Erth (SER)St Germans (SGM)St Ives (Cornwall) (SIV)St James Park (Exeter) (SJP)St Keyne Wishing Well Halt (SKN)Stapleton Road (SRD)Starcross (SCS)Stonehouse (SHU)Stroud (Gloucs) (STD)Swansea (SWA)Swindon (Wilts) (SWI)Tackley (TAC)Taplow (TAP)Taunton (TAU)Teignmouth (TGM)Thatcham (THA)Theale (THE)Thornford (THO)Tilehurst (TLH)Tiverton Parkway (TVP)Topsham (TOP)Torquay (TQY)Torre (TRR)Totnes (TOT)Trowbridge (TRO)Truro (TRU)Twyford (TWY)Umberleigh (UMB)Upwey (UPW)Wanborough (WAN)Wargrave (WGV)Warminster (WMN)West Drayton (WDT)West Ealing (WEA)Westbury (WSB)Weston Milton (WNM)Weston-super-Mare (WSM)Weymouth (WEY)Windsor & Eton Central (WNC)Winnersh (WNS)Winnersh Triangle (WTI)Wokingham (WKM)Worcester Foregate Street (WOF)Worcester Shrub Hill (WOS)Worcestershire Parkway (WOP)Worle (WOR)Worthing (WRH)Yate (YAE)Yatton (YAT)Yeoford (YEO)Yeovil Pen Mill (YVP)Yetminster (YET)Enter a station View live trains GWR NETWORK MAP Download the Great Western Railway network map and explore the Greater West. WI-FI AT STATIONS Enjoy complimentary Wi-Fi at our main stations. CAR PARKING Find out all the details about parking capacity and charges at our stations. NATIONAL RAIL MAP Visit the National Rail site to download the National Rail network map. YOU MAY ALSO LIKE TO... * view and download our latest timetables * check the latest travel updates * find out about on board information * discover our top destinations * find out more about travelling with children and animals Help us improve our service: * * * * At GWR, we're always working to improve your journey. Let us know how – we want to hear from you Contact us * Your journey * Travel updates * Train times * Planned engineering * Passenger Assist * Onboard services * Inspiration * Top destinations * Popular routes * Festival and events * Offers * Blogs * GWR souvenirs * Help and support * Refunds and compensation * Making a complaint * Lost property * Frequently asked questions * Changing your ticket * About GWR * What you can expect from us * Our named trains * Our business * Careers * Passengers charter * Useful links * Your tickets * Cymraeg * Our performance * Security * Safety SIGN UP, AND GET MORE The more rewarding way to book your train travel Email Address Submit signup to newsletter form -------------------------------------------------------------------------------- * Terms and conditions * Privacy and cookies * Site accessibility * Site map * Gender pay * Modern Slavery Act (PDF) * Press * Cookie Preferences © GWR 2022 All rights reserved. Images owned by GWR, or courtesy of Network Rail or Visit England. SIGN UP TO GWR NEWS AND OFFERS * Promotional offers * Pre-sale tickets * Collect Nectar bonus points * Win weekend breaks and other great prizes * Latest news and information Enter your email here to join Submit signin to GWR news and offers form Together we can end domestic abuse close BUY TRAIN TICKETS TO ANY DESTINATION IN BRITAIN – NO BOOKING FEE <span class="sr-only">Find prices and </span>Buy season tickets Accessible booking tool Touch smartcard Please start typing and select departure station name Please start typing and select arrival station name Via/Avoid Please select option Via or Avoid from list ViaAvoid Via * Via * Avoid Please start typing and select name of station for via or avoid option Please select date from calendar for outbound journey Please select if you want to depart after or arrive before the selected date Depart after Arrive before Depart after * Depart after * Arrive before Please select time for outbound journey 00:0000:3001:0001:3002:0002:3003:0003:3004:0004:3005:0005:3006:0006:3007:0007:3008:0008:3009:0009:3010:0010:3011:0011:3012:0012:3013:0013:3014:0014:3015:0015:3016:0016:3017:0017:3018:0018:3019:0019:3020:0020:3021:0021:3022:0022:3023:0023:30 01:30 * 00:00 * 00:30 * 01:00 * 01:30 * 02:00 * 02:30 * 03:00 * 03:30 * 04:00 * 04:30 * 05:00 * 05:30 * 06:00 * 06:30 * 07:00 * 07:30 * 08:00 * 08:30 * 09:00 * 09:30 * 10:00 * 10:30 * 11:00 * 11:30 * 12:00 * 12:30 * 13:00 * 13:30 * 14:00 * 14:30 * 15:00 * 15:30 * 16:00 * 16:30 * 17:00 * 17:30 * 18:00 * 18:30 * 19:00 * 19:30 * 20:00 * 20:30 * 21:00 * 21:30 * 22:00 * 22:30 * 23:00 * 23:30 Single Return Open Return Single Return Open Return Please select total number of adults traveling in this journey from list 0123456789 1 Adult * 0 * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 Please select total number of children traveling in this journey from list 0123456789 0 Children (5-15) * 0 * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 Booking for 10 or more, please visit our Group travel page Please select your railcards Cancel Done Find prices and Buy season tickets Accessible booking tool Touch smartcard Find tickets . You will have 45 minutes to complete this transaction before the session expires. IMPORTANT TO KNOW Continue to tickets OK Change Country Afghanistan Åland Albania Algeria American Samoa Andorra Angola Anguilla Antarctica Antigua and Barbuda Argentina Armenia Aruba Australia Austria Azerbaijan Bahamas Bahrain Bangladesh Barbados Belarus Belgium Belize Benin Bermuda Bhutan Bolivia Bonaire, Sint Eustatius and Saba Bosnia and Herzegovina Botswana Bouvet Island Brazil British Indian Ocean Territory British Virgin Islands Brunei Bulgaria Burkina Faso Burma Burundi Cambodia Cameroon Canada Cape Verde Cayman Islands Central African Republic Chad Chile China Christmas Island Cocos (Keeling) Islands Colombia Comoros Congo Congo (Democratic Republic) Cook Islands Costa Rica Croatia Cuba Curaçao Cyprus Czechia Denmark Djibouti Dominica Dominican Republic East Timor Ecuador Egypt El Salvador Equatorial Guinea Eritrea Estonia Ethiopia Falkland Islands Faroe Islands Fiji Finland France French Guiana French Polynesia French Southern Territories Gabon Gambia Georgia Germany Ghana Gibraltar Greece Greenland Grenada Guadeloupe Guam Guatemala Guernsey Guinea Guinea-Bissau Guyana Haiti Heard Island and McDonald Islands Honduras Hong Kong Hungary Iceland India Indonesia Iran Iraq Ireland Isle of Man Israel Italy Ivory Coast Jamaica Japan Jersey Jordan Kazakhstan Kenya Kiribati Korea (North) Korea (South) Kuwait Kyrgyzstan Laos Latvia Lebanon Lesotho Liberia Libya Liechtenstein Lithuania Luxembourg Macao Macedonia Madagascar Malawi Malaysia Maldives Mali Malta Marshall Islands Martinique Mauritania Mauritius Mayotte Mexico Micronesia Moldova Monaco Mongolia Montenegro Montserrat Morocco Mozambique Namibia Nauru Nepal Netherlands New Caledonia New Zealand Nicaragua Niger Nigeria Niue Norfolk Island Northern Mariana Islands Norway Oman Pakistan Palau Palestine Panama Papua New Guinea Paraguay Peru Philippines Pitcairn Poland Portugal Puerto Rico Qatar Réunion Romania Russia Rwanda Saint Martin (French) Samoa San Marino Sao Tome and Principe Saudi Arabia Senegal Serbia Seychelles Sierra Leone Singapore Sint Maarten (Dutch) Slovakia Slovenia Solomon Islands Somalia South Africa South Georgia and the South Sandwich Islands South Sudan Spain Sri Lanka St Barthélemy St Helena, Ascension and Tristan da Cunha St Kitts and Nevis St Lucia St Pierre and Miquelon St Vincent Sudan Suriname Svalbard and Jan Mayen Swaziland Sweden Switzerland Syria Taiwan Tajikistan Tanzania Thailand Togo Tokelau Tonga Trinidad and Tobago Tunisia Turkey Turkmenistan Turks and Caicos Islands Tuvalu Uganda Ukraine United Arab Emirates United Kingdom United States United States Minor Outlying Islands United States Virgin Islands Uruguay Uzbekistan Vanuatu Vatican City Venezuela Vietnam Wallis and Futuna Western Sahara Yemen Zambia Zimbabwe Change Country