Data guide › Rail
Rail — a GTFS dataset for Korea
Also: Companies · Addresses · how to call it
Every subway and commuter-rail stop, route and departure in South Korea, 11 operators reconciled into a single GTFS dataset with English station names — and validated by two independently written GTFS validators with zero errors. The API charges 1 credit per row.
| Stations | 1,120, with WGS84 coordinates and English names |
|---|---|
| Routes | 32, across 11 operators |
| Trains | 23,384 |
| Departures | 655,961 |
Why this is worth buying
Korea publishes the raw material. Each operator publishes it differently: headers on a different row, stops packed into one cell with a different separator, and at least nine different ways of writing which days a train runs. The reconciliation is the product.
A nationwide Korean GTFS does exist — the Korea Transport Institute released one in 2023, built from March 2021 timetables as a pilot. It is obtained by application, and its publisher says plainly that it was assembled for internal accessibility analysis and that its ids are not standardised. What has not existed is a current feed, fetchable without asking, with stable ids, English names and a documented account of what was left out and why.
Which days a train runs
Korean operators publish separate weekday, Saturday and holiday timetables — but one line writes 공휴일 where the line beside it writes 일요일 for the same thing, and four operators publish no Saturday timetable at all because their holiday timetable covers the whole weekend. Copied literally that produces a feed in which Seoul's subway does not run on Sundays.
So the labels are reconciled per operator, and every public holiday is written out as an
actual date, including the ones that fall midweek. Lunar New Year and Chuseok are handled
separately again, because at least one operator publishes a distinct timetable for those.
GET /transit/calendar returns all of it, free.
Names are given three ways
The source is not consistent about English station names — some carry a parenthesised subtitle, some do not, and the spacing before the bracket varies within a single file. So each station comes with the published name, a subtitle-free short form for display, and a normalised key for joining. The join is the part that is hard to do yourself.
20 stations have a Korean subtitle with no English counterpart in the source. Those keep the short English form; nothing is invented to fill the gap.
What is not in here
| Contradictory timetables | Trains whose published arrival and departure columns contradict each other are left out rather than guessed at |
|---|---|
| Wrong coordinates | A station whose published position is provably wrong — one is filed 141 km from its own line — is left out rather than approximated |
| Boardings and alightings | Not here yet. This dataset is schedule, not ridership |
| Buses | Rail only |
A .zip feed | Not sold. The data is GTFS and the API serves GTFS entities row by row; a downloadable feed file is not part of it today. Ask if you need one |
The row counts above are what actually shipped, not what the sources claimed. Every train that was left out has a stated reason, and that accounting is checked on every build.
Source
Korea Railroad Industry Information Center (레일포털), the national rail data portal — station master, route composition and operating schedules. See sources.
Missing something you need? Say what you were trying to do.