TrainRouter Atlas
TrainRouter Atlas — the world's legendary train routes, as open data
744 train routes · 118 countries · ≈ 366,500 km of line — every route with its key facts and hand-traced geometry, from trainrouter.com, the interactive world railway map.
High-speed spines (Eurostar, TGV, Shinkansen, AVE), classic long-distance runs (Trans-Siberian, California Zephyr), night trains (Nightjet, the Ghan) and the scenic lines people fly in just to ride (Glacier Express, Bernina Express, the Jacobite).
🗺️ Explore it interactively: trainrouter.com
🤖 Use it from an AI assistant: free MCP server at https://trainrouter.com/mcp (how to connect) — or run it from this repo: npm install && npm start (mcp/)
Files
File | Contents |
| One row per route — all facts, no geometry |
| Same records with structured country objects |
|
|
Related MCP server: db-mcp
Schema
Field | Type | Notes |
| string | Stable slug, e.g. |
| string | Route/service name |
| string | Terminus cities |
| enum |
|
| string | Rolling stock, e.g. |
| string | Operating company |
| number | Route length |
| number | Service top speed |
| string | Published journey time, e.g. |
| number | Year the line/service entered service |
| number|null | Approx. annual ridership where published |
| string |
|
| string | One-line description of what makes the route legendary |
| number | 1 = most famous (TrainRouter renown ranking) |
| string | The route's page on trainrouter.com |
Quick start
import pandas as pd
routes = pd.read_csv("data/routes.csv")
routes.nsmallest(10, "fame_rank")[["name", "from", "to", "distance_km"]]
import geopandas as gpd
gdf = gpd.read_file("data/routes.geojson")
gdf.plot(column="category", figsize=(16, 8))Accuracy & provenance
Figures are approximate published values (operator sites, timetables, press material) — good for exploration and visualization, not operations.
Geometry is hand-traced at map scale to follow each line's real corridor — it is not survey-grade track alignment.
The dataset is curated: it covers the world's notable routes, not every railway line on earth.
Not included here (they live on the site): per-route stories and sights, photos, and city-to-city journey guides.
License & attribution
CC BY 4.0 — free to use, share and adapt, with attribution to TrainRouter. A link to https://trainrouter.com (or the specific route page in url) satisfies attribution.
Also available on
Kaggle: kaggle.com/datasets/albanius/world-train-routes-trainrouter-atlas
Hugging Face: huggingface.co/datasets/Flightmussy/trainrouter-atlas
Zenodo (archived, DOI): doi.org/10.5281/zenodo.21322030 — always resolves to the latest version
Citing
TrainRouter Atlas: the world's legendary train routes (2026). trainrouter.com. DOI: 10.5281/zenodo.21322030. https://github.com/Flightmussy/trainrouter-atlas
Updating
The data is generated from the TrainRouter atlas source. New versions land here first; publishing a GitHub release mints a fresh Zenodo DOI and (once the repo's KAGGLE_API_TOKEN/HF_TOKEN secrets are configured) syncs the Kaggle and Hugging Face mirrors automatically via sync-mirrors.yml.
Also in this repo
mcp/— source of the TrainRouter MCP server (live athttps://trainrouter.com/mcp, listed in the Official MCP Registry ascom.trainrouter/atlas), which serves this atlas as tools for Claude and other MCP clients.
Maintenance
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Flightmussy/trainrouter-atlas'
If you have feedback or need assistance with the MCP directory API, please join our Discord server