amtrak.io
A little clarity before your next train.
On time
Some delays
Major delays
No trains running
Hover or tap a route to see how it's running.
THE NEXT DEPARTURE
Find your station.
Loading stations…
| Station | State | Next train |
|---|---|---|
| Finding your next stop… | ||
Use it from your AI agent
Add this MCP server URL to any MCP-capable client. No sign-up or key needed.
https://amtrak.io/mcp
Claude
Settings → Connectors → Add custom connector, then paste the URL above.
ChatGPT
Settings → Apps & Connectors → add a custom connector with the URL above (no authentication).
Other apps
Most MCP-capable apps accept the URL directly, or a config like:
{
"mcpServers": {
"amtrak": { "url": "https://amtrak.io/mcp" }
}
}
Tools
search_stationsfind a station code by name or cityget_station_boardupcoming departures/arrivals with live estimatesget_train_statuswhere a train is and how late it's runninglist_routesall routes with a live summaryget_route_statusevery live train on a routeget_data_statusdata freshness and source health
JSON API
Read-only, no key, CORS enabled. Every response is { ok, data, meta, error }; meta says how fresh the live data is.
GET /api/trains | All trains in the live feed |
GET /api/trains/:number | One train's run(s) with every stop. Optional ?origin_date=YYYY-MM-DD&operator=amtrak|brightline |
GET /api/stations | All stations, or search with ?q=boston |
GET /api/stations/:code | One station and its routes |
GET /api/stations/:code/board | Upcoming trains. ?hours=3&type=departures|arrivals|both |
GET /api/routes | All routes with live status. Optional ?station=NYP |
GET /api/routes/:id | One route, its stations and live trains |
GET /api/routes.geojson | Route lines as GeoJSON |
GET /api/status | Data freshness and source health |
Example: /api/trains/5 · /api/stations/NYP/board
Live data refreshes about every 5 minutes. A train missing from the feed doesn't mean it's cancelled.