Free · Independent · Indian Railways

Live railway data,
without the guesswork.

Railway Engine is a free, independent Indian Railways API for live status, position, delay, route progress, ETA, schedules and stations — with honest freshness metadata on every response.

Freeone plan, no card
60/minrate limit per key
x-api-keysimple auth
Honestfreshness metadata
status.ts
// railway-engine.apkscope.workers.dev
const res = await fetch(
  base + "/v1/train/12919/status",
  { headers: { "x-api-key": key } }
)

const { data } = await res.json()

// RUNNING · LIVE · delay 12 min
console.log(data.state, data.freshness)

How developers use it

Small surface.
Built for backends.

One key, plain REST, and a predictable envelope. Works in API routes, background jobs, support tools, or mobile app backends.

  • Honest freshness: LIVE, RECENT or STALE
  • Confidence and delay source on every response
  • One envelope: status, data, error, meta
  • Free forever — one plan, 60 requests/min
live-status.ts
// free key from your dashboard
const key = process.env.RAILWAY_ENGINE_API_KEY
const base = "https://railway-engine.apkscope.workers.dev"

const res = await fetch(
  base + "/v1/train/12919/status",
  { headers: { "x-api-key": key } }
)

const { data } = await res.json()

// RUNNING · LIVE · 12 min delay
console.log(data.state, data.freshness, data.delayMinutes)

Live playground

Call the API
from this page.

Pick an endpoint, send a real request, and read the raw JSON envelope. Running a request needs a free key — sign in with Google when you're asked for one. No card, no credits.

GET/v1/train/:number/status

Live Status

Live running status: position, delay, route progress, ETA, and data freshness.

Request parameters

Configure the request and send it to the live API.

URLhttps://railway-engine.apkscope.workers.dev/v1/train/12919/status

Exactly 5 numeric digits

Optional · defaults to today (IST) · YYYY-MM-DD

Response

JSON
{
  "message": "Run a request to see the response here."
}
Free forever
Every endpoint, no card required
One free plan
no tiers, no upgrades
Every endpoint
all 9 routes included
60 requests / min
per API key
Google sign-in
key issued in dashboard
x-api-key header
one header, plain REST
No card, ever
nothing to cancel
See what's included

Ready to build?

Connect your app to Indian Railways.

Sign in with Google, copy your free key from the dashboard, and start calling live train endpoints from your own backend in minutes.

Get API keyRead the docs

Questions, answered

Frequently asked
questions.

Everything developers ask before integrating a live train tracking API — auth, freshness, routes, schedules and limits.

Is Railway Engine really free?

Yes. There is one free plan with every endpoint included — no tiers, no card and nothing to cancel. Sign in with Google, copy the API key issued in your dashboard, and start calling the API. The limit is about 60 requests per minute per key.

How do I track a train live?

Call GET /v1/train/:number/status?date=YYYY-MM-DD with a 5-digit train number. You get the RUNNING state, current, previous and next station, GPS position with source and observed time, speed, delay minutes with their source, ETA with its basis, route progress and exceptions such as DIVERTED or CANCELLED.

What do freshness and confidence mean?

Every live response tells you how good the data is. Freshness is reported as LIVE, RECENT or STALE, and confidence as HIGH, MEDIUM or LOW. When a fresh observation is not available, the API reports STALE or unavailable instead of guessing.

What do the schedule and route endpoints return?

GET /v1/train/:number/schedule returns the timetable for a train, and GET /v1/train/:number/route returns the station-by-station route with scheduled and actual times, platform, distance and coordinates for each stop.

How do I search for trains and stations?

GET /v1/trains/search?q= finds trains by number or name, GET /v1/station/:code resolves a single station code, and GET /v1/stations/search?q= finds stations by partial name or code. Health, version and coverage are available at /v1/health, /v1/version and /v1/coverage.

How does authentication work?

Send your free key in the x-api-key header with every request. Responses use a single JSON envelope with status, data, error and meta fields, so success and failure paths always look the same in your code.