IRCTC Connect
A comprehensive Node.js package for Indian Railways services. Get real-time PNR status, detailed train information, live train tracking, station updates, and search trains between stations.
PNR Status
Real-time booking status
Train Info
Complete route details
Live Tracking
Real-time location
Installation
npm install irctc-connectRequirements
- ā Node.js 14+
- ā Internet connection
- ā Valid credentials
Supported Platforms
- ā Node.js apps
- ā Express.js servers
- ā Next.js applications
- ā React Native
Quick Start
import {
checkPNRStatus, getTrainInfo, trackTrain, liveAtStation, searchTrainBetweenStations, getAvailability
} from 'irctc-connect';
// Check PNR status
const pnrResult = await checkPNRStatus('1234567890');
// Get train information
const trainResult = await getTrainInfo('12345');
// Track live train status
const trackResult = await trackTrain('12345', '06-12-2025');
// Get live trains at station
const stationResult = await liveAtStation('NDLS');
// Search trains between stations
const searchResult = await searchTrainBetweenStations('NDLS', 'BCT');
// Get seat availability with fare
const availabilityResult = await getAvailability('12496', 'ASN', 'DDU', '27-12-2025', '2A', 'GN');checkPNRStatus(pnr)
Get comprehensive PNR status with passenger details and journey information.
Parameters
pnr(string) ā 10-digit PNR numberconst result = await checkPNRStatus('1234567890');
if (result.success) {
console.log('PNR:', result.data.pnr);
console.log('Status:', result.data.status);
console.log('Train:', result.data.train.name);
console.log('Journey:', result.data.journey.from.name, 'ā', result.data.journey.to.name);
result.data.passengers.forEach(passenger => {
console.log(`${passenger.name}: ${passenger.status} - ${passenger.seat}`);
});
}{
success: true,
data: {
pnr: "1234567890",
status: "CNF",
train: { number: "12345", name: "Rajdhani Express", class: "3A" },
journey: {
from: { name: "New Delhi", code: "NDLS", platform: "16" },
to: { name: "Mumbai Central", code: "BCT", platform: "3" },
departure: "20:05",
arrival: "08:35",
duration: "12h 30m"
},
passengers: [
{ name: "JOHN DOE", status: "CNF", seat: "B1-45", berthType: "SL" }
]
}
}getTrainInfo(trainNumber)
Get detailed train information including complete route with station coordinates.
Parameters
trainNumber(string) ā 5-digit train numberconst result = await getTrainInfo('12345');
if (result.success) {
const { trainInfo, route } = result.data;
console.log(`š ${trainInfo.train_name} (${trainInfo.train_no})`);
console.log(`š ${trainInfo.from_stn_name} ā ${trainInfo.to_stn_name}`);
console.log(`ā±ļø ${trainInfo.from_time} - ${trainInfo.to_time}`);
console.log(`š
Running Days: ${trainInfo.running_days}`);
route.forEach(station => {
console.log(` ${station.stnName} - ${station.departure}`);
});
}trackTrain(trainNumber, date)
Get real-time train status and tracking for a specific date with detailed station-wise information including delays and coach positions.
Parameters
trainNumber(string) ā 5-digit train numberdate(string) ā Date in dd-mm-yyyy formatconst result = await trackTrain('12342', '06-12-2025');
if (result.success) {
const { trainNo, trainName, statusNote, stations } = result.data;
console.log(`š ${trainName} (${trainNo})`);
console.log(`š Status: ${statusNote}`);
stations.forEach(station => {
console.log(`š ${station.stationName} (${station.stationCode})`);
console.log(` Arrival: ${station.arrival.scheduled} ā ${station.arrival.actual}`);
if (station.arrival.delay) {
console.log(` ā ļø Delay: ${station.arrival.delay}`);
}
});
}liveAtStation(stnCode)
Get list of upcoming trains at any station with real-time information.
Parameters
stnCode(string) ā Station code (e.g., 'NDLS', 'BCT', 'HWH')const result = await liveAtStation('NDLS');
if (result.success) {
console.log(`š Live trains at ${result.data.stationName}:`);
result.data.trains.forEach(train => {
console.log(`š ${train.trainName} (${train.trainNumber})`);
console.log(` š ${train.source} ā ${train.destination}`);
console.log(` ā° Expected: ${train.expectedTime}`);
console.log(` š Status: ${train.status}`);
});
}searchTrainBetweenStations(from, to)
Find all trains running between two stations with timing and availability.
Parameters
fromStationCode(string) ā Origin station codetoStationCode(string) ā Destination station codeconst result = await searchTrainBetweenStations('NDLS', 'BCT');
if (result.success) {
console.log(`š Trains from ${result.data.from} to ${result.data.to}:`);
result.data.trains.forEach(train => {
console.log(`š ${train.trainName} (${train.trainNumber})`);
console.log(` ā° ${train.departure} ā ${train.arrival}`);
console.log(` ā±ļø Duration: ${train.duration}`);
console.log(` š
Days: ${train.runningDays}`);
});
}getAvailability( trainNo, fromStnCode, toStnCode, date, coach, quota )
Check seat availability with complete fare breakdown for a specific train journey.
Parameters
trainNo(string) ā 5-digit train numberfromStnCode(string) ā Origin station code (e.g. ASN, NDLS)toStnCode(string) ā Destination station code (e.g. DDU, BCT)date(string) ā Journey date in DD-MM-YYYY formatcoach(string) ā Class: 2S, SL, 3A, 3E, 2A, 1A, CC, ECquota(string) ā Quota: GN, LD, SS, TQconst result = await getAvailability(
'12496',
'ASN',
'DDU',
'27-12-2025',
'2A',
'GN'
);
if (result.success) {
const { train, fare, availability } = result.data;
console.log(`š ${train.trainName} (${train.trainNo})`);
console.log(
`š ${train.fromStationName} ā ${train.toStationName}`
);
console.log('\nš° Fare Breakdown:');
console.log('Base Fare:', fare.baseFare);
console.log('Reservation:', fare.reservationCharge);
console.log('Superfast:', fare.superfastCharge);
console.log('Total:', fare.totalFare);
console.log('\nš
Availability:');
availability.forEach(day => {
console.log(
`${day.date}: ${day.availabilityText} (${day.prediction})`
);
});
}Live Playground
Test the API functions with your own data. See live JSON response, status code, and response time.
Input Validation
PNR Number
- ⢠Must be exactly 10 digits
- ⢠Only numeric characters
- ⢠Auto-cleans non-numeric input
Train Number
- ⢠Must be exactly 5 characters
- ⢠Valid train number string
Date Format
- ⢠Format: dd-mm-yyyy
- ⢠Validates actual dates
- ⢠No invalid dates like 32-01-2025
Station Codes
- ⢠Valid station code strings
- ⢠Examples: NDLS, BCT, HWH
Status Codes
| Code | Description |
|---|---|
CNF | Seat is confirmed |
WL | Not confirmed yet |
RAC | Partially confirmed |
CAN | Ticket cancelled |
PQWL | On pooled quota |
TQWL | On tatkal quota |
GNWL | On general quota |
Error Handling
All functions return a consistent response structure. Always check the success field before accessing data.
ā Success Response
{
success: true,
data: { ... }
}ā Error Response
{
success: false,
error: "Error message"
}Common Error Scenarios
- ⢠Invalid input parameters
- ⢠Network timeouts (10-second timeout)
- ⢠API service unavailable
- ⢠Invalid PNR/train numbers
- ⢠Invalid date formats