Railway infrastructure,
without the scraping.

Powering modern railway applications with live train tracking, PNR status, seat availability, and station intelligence through one clean developer API.

3M+API Requests
99.9%Uptime
✓Live Train Data
v4.1.0SDK
journey.ts
import { configure, checkPNRStatus, trackTrain }
from "railkit"

// one-time setup
configure(process.env.RAILKIT_API_KEY)

const pnr = await checkPNRStatus("1234567890")

What it includes

16 methods.
Every use case.

Each method maps to a clear railway data use case. Your team can understand the integration at a glance.

PNR Status
checkPNRStatus()

Get complete PNR status with passenger details, journey route, and confirmation updates.

Train Information
getTrainInfo()

Retrieve route details, running schedule, stoppages, and station-level metadata.

Track Train — V1 NTES
trackTrain()

Track live movement with the complete NTES schedule, intermediate station times, distance and progress metrics, Hindi names when supplied, coach metadata, and layout snapshots when coach composition changes.

Track Train — V2 WIMT
trackTrainV2()

Track live movement using the WIMT-backed v2 endpoint, with expanded route points, current location, halt summaries, delay, speed, and coach-position data.

Train History
getTrainHistory()

Get the completed journey history of a train for a specific date — full station-by-station timeline, per-stop delays, and final coach position once the train has reached its destination.

Live At Station
liveAtStation()

Get upcoming and passing trains at a station with near real-time status, delays, and platform info.

Train Search
searchTrainBetweenStations()

Find available trains between stations with timetable and running-day data.

Seat Availability
getAvailability()

Check availability forecasts and detailed fare breakup by quota and class.

Fare Lookup
fareLookup()

Get the full fare breakdown for a journey — base fare, reservation, superfast, catering, GST, dynamic fare, and total collectible amount.

Cancelled Trains
cancelList()

Get the complete list of fully and partially cancelled trains, with route details and the affected segment for partial cancellations.

Station Train Timetable
trainTimetableAtStation()

Get all scheduled trains at a station, or filter by a nearby running date.

Station Lookup by Code
stationByCode()

Resolve a station code to its name and coordinates.

Station Amenities
stationAmenities()

Get station facilities in a readable structure, including platforms, passenger amenities, counts, and facility availability.

Station Search by Name
stationsByName()

Find up to 10 matching stations by partial name.

Train Lookup by Number
trainByNumber()

Find up to 10 stored trains matching a train-number prefix.

Train Search by Name
trainsByName()

Find up to 10 trains matching a partial train name.

How developers use it

Small surface.
Built for backends.

Works in API routes, background jobs, support tools, or mobile app backends. One key, one import, 16 methods.

  • Predictable response shape
  • Works with any server-side framework
  • Usage plans and developer dashboard
  • TypeScript types included
journey.ts
import { configure,
         checkPNRStatus, trackTrain }
from "railkit"

// one-time setup
configure(process.env.RAILKIT_API_KEY)

export async function getJourney(pnr: string) {
  const status = await
    checkPNRStatus(pnr)

  const live = await
    trackTrain("12342", "06-12-2025")

  return { status, live }
}
Active Enterprise Users
Teams currently on paid access
Sainarasimha Peddi Reddy
pvsn......com
Suvam Banerjee
bane......com
Nayab Mirza
naya......com
Gyanendra Shankar Rai
raig......com
jay luni
luni......com
Gautam Kumar
bite......com

Ready to build?

Connect your app to Indian Railways.

Create an account, get your key, and start calling railway endpoints from your own backend in minutes.

Get API keyView on GitHub

Questions, answered

Frequently asked
questions.

Everything developers ask before integrating the Indian Railways API — PNR status, live tracking, seat availability and more.

How do I check PNR status with an API?

Sign up for a free RailKit API key, then call the getPNRStatus method (or the REST PNR endpoint) with a 10-digit PNR number. You get back the booking status, coach and berth details, boarding point, and chart status as JSON — ready to use in any Node.js, JavaScript, or TypeScript backend.

How do I track a train live and get its running status?

Use the live train tracking method with a five-digit train number and journey date. V1 returns stoppages and intermediate stations in route order, scheduled and actual stop times, scheduled-only intermediate times, distance and progress metrics, and detailed coach metadata. Hindi names are included when supplied by NTES.

How do I search for trains between two stations?

Call the train-between-stations method with a source and destination station code (and optional date). RailKit returns every train on that route with departure and arrival times, running days, train type, and available classes — ideal for building journey-planning features.

Is there a free tier and how do I get an API key?

Yes. RailKit has a free tier so you can start building right away. Create an account, generate your API key from the dashboard, and start calling railway endpoints in minutes. Paid plans start at ₹49 when you need higher rate limits — see the pricing page for details.

Does it support seat availability and fare enquiry?

It does. You can check seat and berth availability for a train, class, and date, and run a fare enquiry to get class-wise ticket prices. Both are exposed as simple promise-based methods in the SDK and as REST endpoints.

Does RailKit support Node.js and TypeScript?

RailKit is a promise-based Node.js SDK with first-class TypeScript types built in. Install it with npm install railkit, import the client, and every method is fully typed with autocomplete for requests and responses.