Sncf
SNCF API client
Install / Use
/learn @juliuste/SncfREADME
sncf
JavaScript client for the sncf API. Complies with the friendly public transport format. Inofficial, using endpoints by SNCF. Ask them for permission before using this module in production. Work in progress.
Installation
npm install --save sncf
Usage
This package contains data in the Friendly Public Transport Format.
stations(query)
Using sncf.stations, you can search train stations operated by SNCF.
const stations = require('sncf').stations
stations("Montpellier")
.then(console.log)
.catch(console.error)
Returns a Promise that will resolve in an array of stations in the Friendly Public Transport Format which looks as follows:
[
{
type: "station",
id: "FRMPL",
name: "Montpellier Saint-Roch (Occitanie)"
}
// …
]
journeys(origin, destination, date = new Date(), opt = {})
Using sncf.journeys, you can get directions and prices for routes from A to B. origin and destination can be station ids or FPTF station objects.
const journeys = require('sncf').journeys
const frankfurt = 'DEFRA'
const lyon = {type: 'station', id: 'FRLYS'}
journeys(frankfurt, lyon, new Date(), {duration: 24*60*60*1000})
.then(console.log)
.catch(console.error)
defaults, partially overridden by the opt parameter, looks like this:
const defaults = {
duration: 6*60*60*1000 // searches for journeys in the next 6 hours starting at 'date' (parameter). Warning: Spawns multiple requests, may take a couple of seconds for longer durations!
direct: false, // direct connections only
class: 2, // one of [1, 2]
via: null, // station code or object
language: 'fr',
country: 'FR', // probably influences price currency (?)
}
Returns a Promise that will resolve with an array of journeys in the Friendly Public Transport Format which looks as follows. Please note that the results are not fully spec-compatible since arrival and departure Date strings don't contain the station timezones, because the API doesn't provide this information.
[
{
type: "journey",
id: "3c9cb584-c16a-43ca-84fa-f89a610e9d82",
legs: [
{
origin: "DEFRS",
destination: "CHAJP",
departure: "2018-03-27T04:02:00+01:00",
arrival: "2018-03-27T07:20:00+01:00",
line: {
type: "line",
id: "401",
name: "Train 401",
mode: "train",
vehicleType: "ONL",
services: [],
operator: "OE"
},
operator: "OE",
schedule: "defrs-2018-03-27t04-02-00-01-00-chajp-2018-03-27t07-20-00-01-00"
}
// …
],
price: {
amount: 86,
currency: "EUR",
fares: [
{
price: {
amount: 121,
currency: "EUR"
},
model: "SEMIFLEX",
appliedDiscount: 0,
passengers: [
{
clientId: "0",
travelerId: null,
price: 121,
age: "ADULT",
fidelityCard: "NONE",
fidelityPoints: null,
promoCodeType: null,
fareInformations: [
{
fareName: "TARIF NORMAL ADULTE",
fareCondition: "Billet remboursable sans frais jusqu'à 15 jours avant le départ, avec une pénalité de 50% à partir de 14 jours et jusqu'à 1 jours avant le départ. Billet non remboursable à partir de 1 jours avant le départ.",
fareCode: "AFAD",
fareSpecificRule: null,
fareSequence: null,
cosLevel: null,
returnMandatory: false,
passengerType: "PT00AD",
classOfService: "B",
segmentId: 6,
passengerClientId: "0",
promoCodeApplied: false,
fixedPriceCuiQuotation: false,
fakeFare: false
}
// …
],
passengerType: "HUMAN",
encartedPrems: false,
specificSeatRequired: true,
hanInformation: null,
promoCodeApplied: false
}
],
animals: [],
bookingFee: {
amount: 5,
type: "FDD"
},
bicycle: false,
placementOptions: true
}
// …
]
},
isRealTime: false
}
// …
]
See also
- FPTF - "Friendly public transport format"
- FPTF-modules - modules that also use FPTF
Contributing
If you found a bug, want to propose a feature or feel the urge to complain about your life, feel free to visit the issues page.
Related Skills
node-connect
344.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
96.8kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
344.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
344.1kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
