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

Terminal
npm install irctc-connect

Requirements

  • Node.js 14+
  • Internet connection
  • Valid credentials

Supported Platforms

  • Node.js apps
  • Express.js servers
  • Next.js applications
  • React Native

Quick Start

index.js
import { 
  checkPNRStatus, getTrainInfo, trackTrain, liveAtStation, searchTrainBetweenStations 
  } 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');

checkPNRStatus(pnr)

Get comprehensive PNR status with passenger details and journey information.

Parameters

pnr(string) — 10-digit PNR number
Example Usage
const 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}`);
  });
}
Response Structure
{
  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 number
Example Usage
const 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 number
date(string) — Date in dd-mm-yyyy format
Example Usage
const 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(stationCode)

Get list of upcoming trains at any station with real-time information.

Parameters

stationCode(string) — Station code (e.g., 'NDLS', 'BCT', 'HWH')
Example Usage
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}`);
  });
}

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

CodeDescription
CNFSeat is confirmed
WLNot confirmed yet
RACPartially confirmed
CANTicket cancelled
PQWLOn pooled quota
TQWLOn tatkal quota
GNWLOn 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

Live Playground

Test the API functions with your own data. See live JSON response, status code, and response time.