SkillAgentSearch skills...

Korail

Client for the South Korean korail railway API.

Install / Use

/learn @juliuste/Korail
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

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.

npm version Build Status license fpti-js version chat on gitter

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.

View on GitHub
GitHub Stars47
CategoryDevelopment
Updated12mo ago
Forks0

Languages

JavaScript

Security Score

87/100

Audited on Apr 6, 2025

No findings