Kilwinning Railway Station
Template:Infobox UK station Kilwinning railway station is a railway station serving the town of Kilwinning, North Ayrshire, Scotland. The station is managed by Abellio ScotRail and is on the Ayrshire Coast Line (27 miles south of Glasgow Central) the Glasgow South Western Line (69 miles north of Stranraer). British Transport Police maintain an office here.
The station gets more trains than any other in Ayrshire.
Contents
History
The station was opened on 23 March 1840 by the Glasgow, Paisley, Kilmarnock and Ayr Railway<ref name="Butt133">Butt (1995), page 133</ref> and was built as an interchange, seeing traffic coming from Glasgow, Ayr and Ardrossan (and later Largs).
Station facilities
The station is located on Byers Road about 1/2 mile from the town centre. There is a fully staffed ticket office, a toilet, a kiosk, a waiting room and a ticket vending machine. In 2012, a new 130 space car park opened.
Station Usage
The station is popular with commuters travelling to Glasgow from Ayrshire and beyond. It is the last stop before the Ayrshire Coast line splits in two, so trains stop at this station more than any other in Ayrshire.
British Transport Police
The station houses a Neighbourhood Policing Team (NPT) from the British Transport Police, Officers from Kilwinning cover All stations south of Kilwinning and north of Kilwinning until Lochwinnoch, Police Scotland officers will cover if British Transport Police officers are not available,
Bus Services
Most buses do not come into the station forecourt but there is a bus stop 100 yards north of the station.
Services
1985 (pre electrification)
- 3 trains per hour to Glasgow Central
- 2 trains per hour to Ayr
- 4 trains per day to Stranraer Harbour, connecting with the ferry to Northern Ireland
- 1 train per hour to Largs
- 4 trains per day to Ardrossan Harbour, connecting with the ferry to Brodick on the Isle of Arran.
December 2011
- 4 trains per hour to Glasgow Central
- 2 trains per hour to Ayr
- 2 trains per day to Stranraer
- 1 train per hour to Largs
- 1 train per hour to Ardrossan Harbour, for the ferry to Brodick on the Isle of Arran.
December 2012
The typical weekday daytime service is:
- 6 trains per hour to Glasgow Central
- 3 trains per hour to Ayr
- 1 train per hour to Irvine
- 2 trains per day to Stranraer
- 1 train per hour to Largs
- 1 train per hour to Ardrossan Harbour, for the ferry to Brodick on the Isle of Arran.
Stopping patterns on the Glasgow service varies - 2tph call at all stations to Paisley Gilmour Street, whilst two others run non-stop and the remainder serve principal stations only.<ref>GB National Rail Timetable 2013-14, Table 221</ref> Template:Clear left
The Sunday service is:
- 3 trains per hour to Glasgow Central,
- 2 trains per hour to Ayr,
- 1 train per hour to Largs,
- 3 trains per day to Stranraer,
- 4 trains per day to Ardrossan Harbour,
May 2014
- 6 trains per hour to Glasgow Central (5 trains per day extend to Edinburgh Waverley with 1 to North Berwick)
- 4 trains per hour to Ayr
- 2 trains per day to Stranraer (for the ferries in Cairnryan.<ref>http://www.dumgal.gov.uk/CHttpHandler.ashx?id=13006&p=0</ref> to the Port of Belfast and Larne Harbour)
- 1 train per hour to Largs
- 1 train per hour to Ardrossan Harbour
Preceding Station | ![]() |
Following Station | ||
---|---|---|---|---|
Stevenston | style="background:#local p = {}
function p.main(frame) local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:If empty', removeBlanks = false}) -- For backwards compatibility reasons, the first 8 parameters can be unset instead of being blank, -- even though there's really no legitimate use case for this. At some point, this will be removed. local lowestNil = math.huge for i = 8,1,-1 do if args[i] == nil then args[i] = lowestNil = i end end for k,v in ipairs(args) do if v ~= then if lowestNil < k then -- If any uses of this template depend on the behavior above, add them to a tracking category. -- This is a rather fragile, convoluted, hacky way to do it, but it ensures that this module's output won't be modified -- by it. frame:extensionTag('ref', , {group = 'TrackingCategory'}) frame:extensionTag('references', , {group = 'TrackingCategory'}) end return v end end end return p; border-left: 0px none; border-right: 0px none; border-top:1px #aaa solid; border-bottom:0px none;" | |
local p = {}
function p.main(frame) local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:If empty', removeBlanks = false}) -- For backwards compatibility reasons, the first 8 parameters can be unset instead of being blank, -- even though there's really no legitimate use case for this. At some point, this will be removed. local lowestNil = math.huge for i = 8,1,-1 do if args[i] == nil then args[i] = lowestNil = i end end for k,v in ipairs(args) do if v ~= then if lowestNil < k then -- If any uses of this template depend on the behavior above, add them to a tracking category. -- This is a rather fragile, convoluted, hacky way to do it, but it ensures that this module's output won't be modified -- by it. frame:extensionTag('ref', , {group = 'TrackingCategory'}) frame:extensionTag('references', , {group = 'TrackingCategory'}) end return v end end end return p<div style="height:8px; background-color:#local p = {} function p.main(frame) local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:If empty', removeBlanks = false}) -- For backwards compatibility reasons, the first 8 parameters can be unset instead of being blank, -- even though there's really no legitimate use case for this. At some point, this will be removed. local lowestNil = math.huge for i = 8,1,-1 do if args[i] == nil then args[i] = lowestNil = i end end for k,v in ipairs(args) do if v ~= then if lowestNil < k then -- If any uses of this template depend on the behavior above, add them to a tracking category. -- This is a rather fragile, convoluted, hacky way to do it, but it ensures that this module's output won't be modified -- by it. frame:extensionTag('ref', , {group = 'TrackingCategory'}) frame:extensionTag('references', , {group = 'TrackingCategory'}) end return v end end end return p; border:none; margin:0;"> |
style="background:#local p = {}
function p.main(frame) local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:If empty', removeBlanks = false}) -- For backwards compatibility reasons, the first 8 parameters can be unset instead of being blank, -- even though there's really no legitimate use case for this. At some point, this will be removed. local lowestNil = math.huge for i = 8,1,-1 do if args[i] == nil then args[i] = lowestNil = i end end for k,v in ipairs(args) do if v ~= then if lowestNil < k then -- If any uses of this template depend on the behavior above, add them to a tracking category. -- This is a rather fragile, convoluted, hacky way to do it, but it ensures that this module's output won't be modified -- by it. frame:extensionTag('ref', , {group = 'TrackingCategory'}) frame:extensionTag('references', , {group = 'TrackingCategory'}) end return v end end end return p; border-left: 0px none; border-right: 0px none; border-top:1px #aaa solid; border-bottom:0px none;" | |
Dalry or Glasgow Central or Johnstone |
Irvine | style="background:#local p = {}
function p.main(frame) local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:If empty', removeBlanks = false}) -- For backwards compatibility reasons, the first 8 parameters can be unset instead of being blank, -- even though there's really no legitimate use case for this. At some point, this will be removed. local lowestNil = math.huge for i = 8,1,-1 do if args[i] == nil then args[i] = lowestNil = i end end for k,v in ipairs(args) do if v ~= then if lowestNil < k then -- If any uses of this template depend on the behavior above, add them to a tracking category. -- This is a rather fragile, convoluted, hacky way to do it, but it ensures that this module's output won't be modified -- by it. frame:extensionTag('ref', , {group = 'TrackingCategory'}) frame:extensionTag('references', , {group = 'TrackingCategory'}) end return v end end end return p; border-left: 0px none; border-right: 0px none; border-top:0px none; border-bottom:0px none;" | |
local p = {}
function p.main(frame) local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:If empty', removeBlanks = false}) -- For backwards compatibility reasons, the first 8 parameters can be unset instead of being blank, -- even though there's really no legitimate use case for this. At some point, this will be removed. local lowestNil = math.huge for i = 8,1,-1 do if args[i] == nil then args[i] = lowestNil = i end end for k,v in ipairs(args) do if v ~= then if lowestNil < k then -- If any uses of this template depend on the behavior above, add them to a tracking category. -- This is a rather fragile, convoluted, hacky way to do it, but it ensures that this module's output won't be modified -- by it. frame:extensionTag('ref', , {group = 'TrackingCategory'}) frame:extensionTag('references', , {group = 'TrackingCategory'}) end return v end end end return p<div style="height:8px; background-color:#local p = {} function p.main(frame) local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:If empty', removeBlanks = false}) -- For backwards compatibility reasons, the first 8 parameters can be unset instead of being blank, -- even though there's really no legitimate use case for this. At some point, this will be removed. local lowestNil = math.huge for i = 8,1,-1 do if args[i] == nil then args[i] = lowestNil = i end end for k,v in ipairs(args) do if v ~= then if lowestNil < k then -- If any uses of this template depend on the behavior above, add them to a tracking category. -- This is a rather fragile, convoluted, hacky way to do it, but it ensures that this module's output won't be modified -- by it. frame:extensionTag('ref', , {group = 'TrackingCategory'}) frame:extensionTag('references', , {group = 'TrackingCategory'}) end return v end end end return p; border:none; margin:0;"> |
style="background:#local p = {}
function p.main(frame) local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:If empty', removeBlanks = false}) -- For backwards compatibility reasons, the first 8 parameters can be unset instead of being blank, -- even though there's really no legitimate use case for this. At some point, this will be removed. local lowestNil = math.huge for i = 8,1,-1 do if args[i] == nil then args[i] = lowestNil = i end end for k,v in ipairs(args) do if v ~= then if lowestNil < k then -- If any uses of this template depend on the behavior above, add them to a tracking category. -- This is a rather fragile, convoluted, hacky way to do it, but it ensures that this module's output won't be modified -- by it. frame:extensionTag('ref', , {group = 'TrackingCategory'}) frame:extensionTag('references', , {group = 'TrackingCategory'}) end return v end end end return p; border-left: 0px none; border-right: 0px none; border-top:0px none; border-bottom:0px none;" | | |
Historical railways | ||||
Ardrossan Montgomerie Pier 1947 - 1960 Line and station closed |
British Railways Montgomerie Pier Branch |
Connection with Ardrossan Railway at Stevenston No. 1 Jct. | ||
Stevenston Line and station open |
style="background:#local p = {}
function p.main(frame) local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:If empty', removeBlanks = false}) -- For backwards compatibility reasons, the first 8 parameters can be unset instead of being blank, -- even though there's really no legitimate use case for this. At some point, this will be removed. local lowestNil = math.huge for i = 8,1,-1 do if args[i] == nil then args[i] = lowestNil = i end end for k,v in ipairs(args) do if v ~= then if lowestNil < k then -- If any uses of this template depend on the behavior above, add them to a tracking category. -- This is a rather fragile, convoluted, hacky way to do it, but it ensures that this module's output won't be modified -- by it. frame:extensionTag('ref', , {group = 'TrackingCategory'}) frame:extensionTag('references', , {group = 'TrackingCategory'}) end return v end end end return p; border-left: 0px none; border-right: 0px none; border-top:1px #aaa solid; border-bottom:0px none;" | |
local p = {}
function p.main(frame) local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:If empty', removeBlanks = false}) -- For backwards compatibility reasons, the first 8 parameters can be unset instead of being blank, -- even though there's really no legitimate use case for this. At some point, this will be removed. local lowestNil = math.huge for i = 8,1,-1 do if args[i] == nil then args[i] = lowestNil = i end end for k,v in ipairs(args) do if v ~= then if lowestNil < k then -- If any uses of this template depend on the behavior above, add them to a tracking category. -- This is a rather fragile, convoluted, hacky way to do it, but it ensures that this module's output won't be modified -- by it. frame:extensionTag('ref', , {group = 'TrackingCategory'}) frame:extensionTag('references', , {group = 'TrackingCategory'}) end return v end end end return p<div style="height:8px; background-color:#local p = {} function p.main(frame) local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:If empty', removeBlanks = false}) -- For backwards compatibility reasons, the first 8 parameters can be unset instead of being blank, -- even though there's really no legitimate use case for this. At some point, this will be removed. local lowestNil = math.huge for i = 8,1,-1 do if args[i] == nil then args[i] = lowestNil = i end end for k,v in ipairs(args) do if v ~= then if lowestNil < k then -- If any uses of this template depend on the behavior above, add them to a tracking category. -- This is a rather fragile, convoluted, hacky way to do it, but it ensures that this module's output won't be modified -- by it. frame:extensionTag('ref', , {group = 'TrackingCategory'}) frame:extensionTag('references', , {group = 'TrackingCategory'}) end return v end end end return p; border:none; margin:0;"> |
style="background:#local p = {}
function p.main(frame) local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:If empty', removeBlanks = false}) -- For backwards compatibility reasons, the first 8 parameters can be unset instead of being blank, -- even though there's really no legitimate use case for this. At some point, this will be removed. local lowestNil = math.huge for i = 8,1,-1 do if args[i] == nil then args[i] = lowestNil = i end end for k,v in ipairs(args) do if v ~= then if lowestNil < k then -- If any uses of this template depend on the behavior above, add them to a tracking category. -- This is a rather fragile, convoluted, hacky way to do it, but it ensures that this module's output won't be modified -- by it. frame:extensionTag('ref', , {group = 'TrackingCategory'}) frame:extensionTag('references', , {group = 'TrackingCategory'}) end return v end end end return p; border-left: 0px none; border-right: 0px none; border-top:1px #aaa solid; border-bottom:0px none;" | |
Dalry Junction Line open; station closed |
Bogside Line open; station closed |
style="background:#local p = {}
function p.main(frame) local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:If empty', removeBlanks = false}) -- For backwards compatibility reasons, the first 8 parameters can be unset instead of being blank, -- even though there's really no legitimate use case for this. At some point, this will be removed. local lowestNil = math.huge for i = 8,1,-1 do if args[i] == nil then args[i] = lowestNil = i end end for k,v in ipairs(args) do if v ~= then if lowestNil < k then -- If any uses of this template depend on the behavior above, add them to a tracking category. -- This is a rather fragile, convoluted, hacky way to do it, but it ensures that this module's output won't be modified -- by it. frame:extensionTag('ref', , {group = 'TrackingCategory'}) frame:extensionTag('references', , {group = 'TrackingCategory'}) end return v end end end return p; border-left: 0px none; border-right: 0px none; border-top:0px none; border-bottom:0px none;" | |
local p = {}
function p.main(frame) local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:If empty', removeBlanks = false}) -- For backwards compatibility reasons, the first 8 parameters can be unset instead of being blank, -- even though there's really no legitimate use case for this. At some point, this will be removed. local lowestNil = math.huge for i = 8,1,-1 do if args[i] == nil then args[i] = lowestNil = i end end for k,v in ipairs(args) do if v ~= then if lowestNil < k then -- If any uses of this template depend on the behavior above, add them to a tracking category. -- This is a rather fragile, convoluted, hacky way to do it, but it ensures that this module's output won't be modified -- by it. frame:extensionTag('ref', , {group = 'TrackingCategory'}) frame:extensionTag('references', , {group = 'TrackingCategory'}) end return v end end end return p<div style="height:8px; background-color:#local p = {} function p.main(frame) local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:If empty', removeBlanks = false}) -- For backwards compatibility reasons, the first 8 parameters can be unset instead of being blank, -- even though there's really no legitimate use case for this. At some point, this will be removed. local lowestNil = math.huge for i = 8,1,-1 do if args[i] == nil then args[i] = lowestNil = i end end for k,v in ipairs(args) do if v ~= then if lowestNil < k then -- If any uses of this template depend on the behavior above, add them to a tracking category. -- This is a rather fragile, convoluted, hacky way to do it, but it ensures that this module's output won't be modified -- by it. frame:extensionTag('ref', , {group = 'TrackingCategory'}) frame:extensionTag('references', , {group = 'TrackingCategory'}) end return v end end end return p; border:none; margin:0;"> |
style="background:#local p = {}
function p.main(frame) local args = require('Module:Arguments').getArgs(frame, {wrappers = 'Template:If empty', removeBlanks = false}) -- For backwards compatibility reasons, the first 8 parameters can be unset instead of being blank, -- even though there's really no legitimate use case for this. At some point, this will be removed. local lowestNil = math.huge for i = 8,1,-1 do if args[i] == nil then args[i] = lowestNil = i end end for k,v in ipairs(args) do if v ~= then if lowestNil < k then -- If any uses of this template depend on the behavior above, add them to a tracking category. -- This is a rather fragile, convoluted, hacky way to do it, but it ensures that this module's output won't be modified -- by it. frame:extensionTag('ref', , {group = 'TrackingCategory'}) frame:extensionTag('references', , {group = 'TrackingCategory'}) end return v end end end return p; border-left: 0px none; border-right: 0px none; border-top:0px none; border-bottom:0px none;" | |
Rail & Sea Connections
Northern Ireland
Trains connect Ayr along the Glasgow South Western Line to Stranraer where a bus link runs, route 350 operated by McLeans (except Sundays) to Cairnryan.<ref>http://www.dumgal.gov.uk/CHttpHandler.ashx?id=13006&p=0</ref> for onward ferries to the Port of Belfast by Stena Line and Larne Habour by P&O Ferries.
Trains also connect along the Ayrshire Coast Line to Troon for the P&O Ferries service to Larne Harbour.
Isle of Arran
Trains also connect along the Ayrshire Coast Line to Ardrossan Harbour for the Caledonian MacBrayne service to Brodick.
Future developments
Redevelopment of Kilwinning station is due to start soon, with the taxi rank and main car park being moved to allow buses to serve the station as part of an interchange project drawn up by North Ayrshire Council, where Service 11 buses to/from Kilmarnock will call at the station.[citation needed]
Discussions have been on-going for some time between the Council and Network Rail over the buying of old goods sidings to the west of the station to allow for more car parking at the site. North Ayrshire are hoping to build a two-tiered structure which will hold double the amount of cars than is currently the case at the station.[citation needed]