Trains Between Stations

GET/v1/trains/between/{from}/{to}

Trains between two stations

Description

Find all trains running between two stations, with optional date filtering and live status. **Date filtering (`date` param):** Trains run on specific weekdays. A train that departs its source on Saturday may only reach an intermediate station (e.g. UJN) on Sunday. The `date` param filters by the date the train is at the `from` station — not the source departure date. - Omit `date` → all trains returned regardless of day (useful for showing a full timetable) - Pass `date` → only trains that actually run on that date at the `from` station - Returns 404 if no trains run on the given date **Live status (`live` param):** - `live=false` (default) — static schedule only, very fast - `live=true` — enriches each train with a `live` object at the `from` station.

Parameters

NameInTypeRequiredDescription
frompathstringYesSource station code (e.g. `UJN`)
topathstringYesDestination station code (e.g. `INDB`)
datequerystringNoFilter trains by the date they are at the `from` station (YYYY-MM-DD). Accounts for multi-day journeys.
livequerytrue | falseNoEnrich each train with live status at the `from` station. Default: `false`. Default: false

Code Examples

CURL
curl -X GET "https://api.railradar.in/v1/trains/between/UJN/INDB?date=2026-06-22" \
  -H "Authorization: Bearer rr_live_YOUR_API_KEY"

Example Response

JSON200 OK
{
  "success": true,
  "data": {
    "from": {
      "code": "UJN",
      "name": "Ujjain Junction"
    },
    "to": {
      "code": "INDB",
      "name": "Indore Junction"
    },
    "count": 1,
    "trains": [
      {
        "train": {
          "number": "69211",
          "name": "Ujjain - Indore Passenger",
          "type": "Passenger",
          "runDays": [
            "mon",
            "tue",
            "wed",
            "thu",
            "fri",
            "sat",
            "sun"
          ]
        },
        "from": {
          "departure": "06:00",
          "day": 1,
          "sequence": 1
        },
        "to": {
          "arrival": "07:55",
          "day": 1,
          "sequence": 11
        },
        "distance": 62.2,
        "duration": 115,
        "totalHaltsBetween": 6,
        "live": {
          "type": "upcoming",
          "startDate": "2026-06-22",
          "expectedArrivalTime": "2026-06-22T06:00:00+05:30",
          "platform": "2",
          "delayMinutes": 0
        }
      }
    ]
  },
  "meta": {
    "traceId": "550e8400-e29b-41d4-a716-446655440000",
    "timestamp": "2026-06-22T12:30:00+05:30",
    "executionTime": 38,
    "source": "database"
  }
}

Try it Out

Login to test this endpoint

Sign in to pre-fill your API key and send live requests directly from the browser.

Sign in →

Error Codes

StatusMeaning
400Bad Request — invalid or missing parameter
401Unauthorized — missing or invalid Authorization Bearer token
404Not Found — train/station not found (or no results)
429Too Many Requests — rate limit exceeded
503Service Unavailable — upstream data source temporarily down

Error Response Examples

JSON Error Envelope404 Not Found
{
  "success": false,
  "error": {
    "code": "NOT_FOUND",
    "message": "Resource not found (e.g. Train 12919 not found on journey date 2026-06-22)"
  },
  "meta": {
    "traceId": "9772f1c9-6ec6-4d9f-b269-a5210f33ec73",
    "timestamp": "2026-06-22T08:14:00+05:30",
    "executionTime": 5,
    "source": "database"
  }
}