korail
JavaScript client for the South Korean ๐ฐ๐ท korail railway API. Inofficial, using korail endpoints. Ask them for permission before using this module in production.
This module conforms to the FPTI-JS 0.3.2
standard for JavaScript public transportation modules.
Installation
npm install korail
Usage
const korail = require('korail')
The korail
module conforms to the FPTI-JS 0.3.2
standard for JavaScript public transportation modules and exposes the following methods:
Method | Feature description | FPTI-JS 0.3.2 |
---|---|---|
stations.all([opt]) |
All stations of the Korail network, such as ์์ธ , ๋ถ์ฐ or ๋ชฉํฌ |
โ yes |
journeys(origin, destination, [opt]) |
Journeys between stations | โ yes |
tripStopovers(tripId) |
All stopovers for a trip (all stations a given train passes) | โ no |
stations.all([opt])
Get all stations of the Korail network, such as ์์ธ
, ๋ถ์ฐ
or ๋ชฉํฌ
. See this method in the FPTI-JS 0.3.2
spec.
Supported Options
There currently aren't any supported options for this method, but this might change in a future release.
Example
const korail = require('korail')
const stationStream = korail.stations.all()
stationStream.on('data', item => {
// item is an FPTF station object
console.log(item)
})
{
type: "station",
id: "0001",
name: "์์ธ",
location: {
type: "location",
longitude: 126.9708191,
latitude: 37.551856
},
group: "7",
major: "1"
}
journeys(origin, destination, [opt])
Find journeys between stations. See this method in the FPTI-JS 0.3.2
spec.
Supported Options
Attribute | Description | FPTI-spec | Value type | Default |
---|---|---|---|---|
when |
Journey date, synonym to departureAfter |
โ | Date |
new Date() |
departureAfter |
List journeys with a departure (first leg) after this date | โ | Date |
new Date() |
results |
Max. number of results returned | โ | Number |
null |
interval |
Results for how many minutes after when /departureAfter |
โ | Number |
null |
transfers |
Max. number of transfers | โ | Number |
null |
product |
Filter journey for specific train type | โ | Enum (String ) |
KTX , ์๋ง์ , ๋ฌด๊ถํ (includes ๋๋ฆฌ๋ก), ์ฒญ์ถ |
Please note that this module fetches a list of stations using the stations.all()
method upon initialization, which takes about 3-4 seconds.
Example
const seoul = '0001' // station id
const busan = { // FPTF station
type: 'station',
id: '0020'
// โฆ
}
korail.journeys(seoul, busan, { when: new Date('2019-06-27T05:00:00+0200'), product: 'KTX', transfers: 0 }).then(โฆ)
{
type: "journey",
id: "0001-2019-06-27t12-00-00-000-09-00-0020-2019-06-27t14-42-00-000-09-00-ktx-127",
legs: [
{
origin: {
type: "station",
id: "0001",
name: "์์ธ",
location: {
type: "location",
longitude: 126.9708191,
latitude: 37.551856
},
group: "7",
major: "1"
},
destination: {
type: "station",
id: "0020",
name: "๋ถ์ฐ",
location: {
type: "location",
longitude: 129.0415717,
latitude: 35.1150906
},
group: "6",
major: "21"
},
departure: "2019-06-27T12:00:00.000+09:00",
arrival: "2019-06-27T14:42:00.000+09:00",
mode: "train",
public: true,
operator: {
type: "operator",
id: "korail",
name: "korail",
url: "https://www.letskorail.com"
},
line: {
type: "line",
id: "127",
name: "KTX 127",
product: {
id: "100",
name: "KTX"
},
mode: "train",
operator: {
type: "operator",
id: "korail",
name: "korail",
url: "https://www.letskorail.com"
}
},
tripId: "127###20190627"
}
],
price: {
amount: 59800,
currency: "KRW"
}
}
tripStopovers(tripId)
All stopovers for a given trip (all stations a given train passes). Obtain a tripId
using the journeys(origin, destination, [opt])
method. Returns a Promise
that resolves in a list of stopovers.
Example
const tripId = '127###20190627' // taken from the journeys example above
korail.tripStopovers(tripId).then(โฆ)
[
{
type: "stopover",
stop: {
type: "station",
id: "0001",
name: "์์ธ"
},
arrival: null,
departure: "2019-06-27T12:00:00.000+09:00"
},
{
type: "stopover",
stop: {
type: "station",
id: "0501",
name: "๊ด๋ช
"
},
arrival: "2019-06-27T12:15:00.000+09:00",
departure: "2019-06-27T12:16:00.000+09:00"
},
{
type: "stopover",
stop: {
type: "station",
id: "0502",
name: "์ฒ์์์ฐ"
},
arrival: "2019-06-27T12:37:00.000+09:00",
departure: "2019-06-27T12:39:00.000+09:00"
},
// โฆ
{
type: "stopover",
stop: {
type: "station",
id: "0020",
name: "๋ถ์ฐ"
},
arrival: "2019-06-27T14:42:00.000+09:00",
departure: null
}
]
Contributing
If you found a bug or want to propose a feature, feel free to visit the issues page.