Home

Awesome

interrail

Find european train stations and journeys. Client for the European Interrail / EuRail API. Inofficial, using endpoints by Interrail/EuRail. 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 interrail

Usage

const interrail = require('interrail')

The interrail module conforms to the FPTI-JS 0.3.2 standard for JavaScript public transportation modules and exposes the following methods:

MethodFeature descriptionFPTI-JS 0.3.2
stations.search(query, [opt])Search stations by query.✅ yes
journeys(origin, destination, [opt])Journeys between stations✅ yes

stations.search(query, [opt])

Search stations by query. See this method in the FPTI-JS 0.3.2 spec.

Supported Options

AttributeDescriptionFPTI-specValue typeDefault
resultsMax. number of results returnedNumbernull

Example

interrail.stations.search('Ljubl', { results: 1 }).then(…)
[
	{
		"type": "station",
		"id": "7942300",
		"name": "LJUBLJANA (Slovenia)",
		"location": {
			"type": "location",
			"longitude": 14.51028,
			"latitude": 46.058057
		},
		"weight": 12185,
		"products": 28
	}
]

journeys(origin, destination, [opt])

Find journeys between stations. See this method in the FPTI-JS 0.3.2 spec.

Supported Options

AttributeDescriptionFPTI-specValue typeDefault
whenJourney date, synonym to departureAfterDatenew Date()
departureAfterList journeys with a departure (first leg) after this dateDatenew Date()
resultsMax. number of results returnedNumbernull
intervalResults for how many minutes after when/departureAfterNumbernull
transfersMax. number of transfersNumbernull
languageLanguage of the resultsISO 639-1 codenull

Example

const berlin = '8065969' // station id
const ljubljana = { // FPTF station
	type: 'station',
	id: '7942300',
	name: 'Ljubljana'
	// …
}

interrail.journeys(berlin, ljubljana, { when: new Date('2018-11-02T05:00:00+0200') }).then(…)
[
	{
		"id": "8065969-2018-11-02t06-37-00…",
		"legs": [
			{
				"arrival": "2018-11-02T06:54:00+01:00",
				"departure": "2018-11-02T06:37:00+01:00",
				"destination": {
					"id": "8003025",
					"location": {
						"latitude": 52.534722,
						"longitude": 13.196947,
						"type": "location"
					},
					"name": "BERLIN-SPANDAU (Germany)",
					"type": "station"
				},
				"id": "8065969-2018-11-02t06-37-00-01-00-8003025-2018-11-02t06-54-00-01-00-rb-18604",
				"line": {
					"id": "rb-18604",
					"mode": "train",
					"name": "RB 18604",
					"public": true,
					"type": "line"
				},
				"mode": "train",
				"operator": "interrail",
				"origin": {
					"id": "8065969",
					"location": {
						"latitude": 52.525553,
						"longitude": 13.369441,
						"type": "location"
					},
					"name": "BERLIN HBF (Germany)",
					"type": "station"
				},
				"public": true
			}
			// …
			{
				"arrival": "2018-11-02T18:32:00+01:00",
				"departure": "2018-11-02T12:17:00+01:00",
				"destination": {
					"id": "7942300",
					"location": {
						"latitude": 46.058057,
						"longitude": 14.51028,
						"type": "location"
					},
					"name": "LJUBLJANA (Slovenia)",
					"type": "station"
				},
				"id": "8020347-2018-11-02t12-17-00-01-00-7942300-2018-11-02t18-32-00-01-00-ec-113",
				"line": {
					"id": "ec-113",
					"mode": "train",
					"name": "EC   113",
					"public": true,
					"type": "line"
				},
				"mode": "train",
				"operator": "interrail",
				"origin": {
					"id": "8020347",
					"location": {
						"latitude": 48.140274,
						"longitude": 11.55833,
						"type": "location"
					},
					"name": "MUENCHEN HBF (Germany)",
					"type": "station"
				},
				"public": true
			}
		],
		"type": "journey"
	}
	// …
]

Contributing

If you found a bug or want to propose a feature, feel free to visit the issues page.