OPEN DATA · RAIL INFRASTRUCTURE

Unified Romanian passenger rail GTFS archive

The timetable of every passenger train in Romania, from CFR Călători and the six private operators, in one place: a departures board for each station, route search from origin to destination, a map, and downloads as GTFS, SQLite and GeoJSON. The GTFS feed is the one Vasile Coțovanu publishes (MIT licence), built from Informatică Feroviară data; this site adds the tools that make it usable without writing code. The timetable is valid 14 December 2025 – 12 December 2026. On Monday 7 September 2026, 1,835 trips run; 2,103 are defined in the annual timetable.

📅 Static annual schedule model (2025–2026 timetable year, 14 Dec 2025 – 12 Dec 2026). Reconstructed algorithmically from Informatică Feroviară public data; does not track real-time GPS locations or live operational delays.
7
Passenger carriers
CFR + 6 private operators
1,695
Active stations & halts
100% geocoded coordinates
1,835
trips run on Mon 7 Sep 2026
2,103 defined in the annual timetable
30,267
Scheduled stop calls
timetable valid until 12 Dec 2026

How trips are counted. “Defined” trips are the rows of trips.txt (2,103), including trips that run only on certain days or seasons; 2,069 of them run on at least one day of the timetable year. “Run on a day” counts the trips that the calendar and its exceptions allow on that date: 1,835 on Monday 7 September 2026, 1,586 on Saturday 12 and 1,567 on Sunday 13 September.

Interactive instrument

Station departures & arrivals board and railway route search

Inspect the full schedule and carrier breakdown for any of Romania’s 1,695 stations, or switch to route search to find direct passenger trains between two stations with exact durations across all operators.

🗺️ National passenger rail map (1,695 stations & 5 major corridors)
6–7 operators (Hubs) 4–5 operators 2–3 operators 1 operator Corridor traces
Carrier:
Category:
Direction:
Station: Bucureşti Nord Gr.A —
Time Train Operator Route / Destination
Loading departure board...
Structural analysis

The seven passenger rail operators

Romania’s passenger rail market is no longer a single state monopoly. Private operators run 46.0% of the trips defined in the annual timetable (968 of 2,103). On Monday 7 September 2026 they ran 851 of the 1,835 trips active that day (46.4%), on commuter, regional and competitive intercity routes.

CFR Călători

State
1135 Trips in the timetable
54% Trip share
730 Routes
71.4% Route share
Train types: IC: 20 · IR: 133 · IR-N: 38 · R: 832 · R-E: 92 · R-M: 20

Transferoviar Calatori

Private
387 Trips in the timetable
18.4% Trip share
78 Routes
7.6% Route share
Train types: IR: 43 · R: 210 · R-E: 86 · R-M: 48

Regio Călători

Private
277 Trips in the timetable
13.2% Trip share
99 Routes
9.7% Route share
Train types: IR: 9 · R: 228 · R-E: 40

InterRegional Călători

Private
249 Trips in the timetable
11.8% Trip share
82 Routes
8% Route share
Train types: IR: 15 · R: 215 · R-E: 19

Astra Trans Carpatic

Private
21 Trips in the timetable
1% Trip share
13 Routes
1.3% Route share
Train types: IR: 15 · IR-N: 4 · R-E: 2

Ferotrafic - T.F.I. S.R.L.

Private
18 Trips in the timetable
0.9% Trip share
12 Routes
1.2% Route share
Train types: IC: 18

Softrans

Private
16 Trips in the timetable
0.8% Trip share
9 Routes
0.9% Route share
Train types: IR: 4 · R-E: 12
Corridor frequency

State versus private services on major axes

On key arteries like Prahova Valley, private operators provide up to 44% of scheduled trains. On secondary lines under modernization like Cluj–Oradea, private services outnumber the national carrier.

Bucharest North – Brașov

166 km
CFR 56%
Private 44%
CFR Călători (28 trips) Private lines (22 trips)

The most competitive rail corridor in Romania. Four private operators compete directly with CFR Călători, providing 44% of scheduled services over Prahova Valley.

Active private operators: Transferoviar Calatori, Regio Călători, Astra Trans Carpatic, Softrans

Bucharest North – Constanța

225 km
CFR 67%
Private 33%
CFR Călători (24 trips) Private lines (12 trips)

The modernized line 800 attracts five private operators year-round and seasonally, accounting for a third of coastal passenger traffic.

Active private operators: Transferoviar Calatori, Regio Călători, Astra Trans Carpatic, Softrans, Ferotrafic - T.F.I. S.R.L.

Cluj-Napoca – Oradea

152 km
CFR 44%
Private 56%
CFR Călători (14 trips) Private lines (18 trips)

Corridor under major electrification work with bus substitution; private operators provide more than half of local and regional runs on active sections.

Active private operators: InterRegional Călători, Transferoviar Calatori

Timișoara North – Arad

55 km
CFR 53%
Private 47%
CFR Călători (18 trips) Private lines (16 trips)

The western intercity axis enjoys frequent commuter service provided 47% by Regio Călători multiple units.

Active private operators: Regio Călători

Bucharest North – Craiova

209 km
CFR 85%
Private 15%
CFR Călători (22 trips) Private lines (4 trips)

The degraded line 900 (96% past renewal) is dominated by CFR Călători, with private operators running only select electric services to Arad and Craiova.

Active private operators: Astra Trans Carpatic, Softrans
Historical speed benchmarks

Commercial speed evolution: 1978–1996 vs. 2026 timetable

A direct comparison between today's fastest scheduled trains and the benchmark records documented in official railway archives (1978–1996). On six of seven major rail arteries radiating from Bucharest, passenger trains run significantly slower than 30–50 years ago, with travel time losses exceeding 4 hours towards Timișoara and Oradea. Only the fully reconstructed Bucharest–Constanța line maintained historical speeds. For an exhaustive monograph on network degradation, read Nine Hours and Seventeen Minutes.

București – Timișoara 533 km
Historical (1996) 6h 25m IC 912 83.1 km/h
2026 timetable 10h 41m IR 12072 49.9 km/h
Journey time / speed change: +4h 16m (-40%)

Direct route via Craiova–Filiași–Caransebeș–Lugoj. In 1996, IC 912 ran the distance in 6 hours 25 minutes; today's fastest train requires 10 hours 41 minutes.

București – Craiova 209 km
Historical (1996) 2h 05m IC 100.3 km/h
2026 timetable 3h 49m IR 12072 54.8 km/h
Journey time / speed change: +1h 44m (-45.4%)

On Line 900, journey duration has almost doubled, with average speeds collapsing from 100 km/h to below 55 km/h due to overdue track renewals.

București – Constanța 225 km
Historical (1996) 2h 10m IC 103.8 km/h
2026 timetable 2h 09m IR 14302 104.7 km/h
Journey time / speed change: -1m (+0.8%)

The only one of the seven routes compared that was fully modernized with European funds, where historical performance was matched and maintained at a 160 km/h standard.

București – Brașov 166 km
Historical (1978) 2h 03m Rapid 26 „Decebal” 81 km/h
2026 timetable 2h 18m IC 535 72.2 km/h
Journey time / speed change: +15m (-10.9%)

The country's busiest railway line is 15 minutes slower than the 1978 record set by the "Decebal" Rapid train.

București – Iași 463 km
Historical (1996) 5h 00m IC 964 (via Bacău) 92.6 km/h
2026 timetable 6h 20m IC 561 (via Bacău) 73.1 km/h
Journey time / speed change: +1h 20m (-21.1%)

Line 500 into Moldavia has accumulated 1 hour and 20 minutes of scheduled delay compared to 1990s InterCity timetables.

București – Arad 621 km
Historical (1989) 9h 00m Rapid / Expres 69 km/h
2026 timetable 10h 09m IR 16021 61.2 km/h
Journey time / speed change: +1h 09m (-11.3%)

The route via Brașov–Sighișoara–Simeria is impacted by Transylvanian reconstruction projects, adding over an hour compared to 1989.

București – Oradea 729 km · 2026 route
Historical (1989) 10h 00m Rapid direct Route length unconfirmed
2026 timetable 14h 04m IRN 472 / IRN 1743 51.8 km/h
Journey time change: +4h 04m

In this 2025–2026 timetable archive, the diverted route covers 729 km in 14h04. The 1989 benchmark is 10h00 on a different route whose length has not been confirmed here. The journey takes 4h04 longer; no percentage speed comparison is calculated between these routes.

Quality control

GTFS referential integrity report

The checks below are our own (foreign keys, coordinates, time sequences) and do not replace the official GTFS validator.

Component / File Scope Integrity metric Status
agency.txt 7 agencies 100% valid agency_id references with URLs and timezones PASS (7/7)
routes.txt 1,023 routes All routes map to valid agencies; standard route_type=2 (rail) PASS (1,023/1,023)
trips.txt 2,103 trips defined All trips linked to active route_ids and valid service_ids PASS (2,103/2,103)
stops.txt 1,695 stations 1,695 / 1,695 (100.0%) verified WGS84 geographic coordinates PASS (100.0%)
stop_times.txt 30,267 stop calls Zero orphan stops; monotonically increasing arrival/departure sequences PASS (30,267/30,267)
calendar.txt 203 service rules Covers 14 Dec 2025 to 12 Dec 2026 timetable period PASS (2025–2026)
calendar_dates.txt 19,864 exceptions Full exception calendar mapping holidays, summer specials, and seasonal runs PASS (19,864)
Research series

Foundations: speed decay and network analysis

This unified GTFS archive provides the direct quantitative dataset for our sister investigation, Nine Hours and Seventeen Minutes (analyzing speed decay on Bucharest–Timișoara from 1939 to 2026). Explore the companion monographs and visualizations below:

Together, these publications offer an exhaustive civic analysis of passenger train speeds, infrastructure bottlenecks, and timetable open data in Romania.
Open data downloads

Download the unified railway datasets

Download without an account. Reuse requires compliance with the source licences: OGL-ROU-1.0 for six operators and CC BY 4.0 for Ferotrafic. Retain attribution, licence links and notices of changes; the upstream GTFS conversion has its own MIT licence. Details and sources below.

📦

Standard GTFS feed (.zip)

gtfs-romania-feroviar.zip (353 KB)

Standard archive containing all 7 specification files (agency, routes, trips, stops, stop_times, calendar, calendar_dates). Ready for transit engines.

Download GTFS (.zip) ↓
🗄️

Relational SQLite database

mersul-trenurilor-unificat.sqlite (2.8 MB)

Self-contained SQL database with indexed tables for stops, departures, operators, and trips. Perfect for local analytics, queries, and data journalism.

Download SQLite (.sqlite) ↓
🗺️

GeoJSON station layer

statii-feroviare.geojson (625 KB)

FeatureCollection of all 1,695 railway halts and stations with coordinates, scheduled stop counts and operating carriers.

Download GeoJSON (.geojson) ↓

Quick query example (Python + SQLite)

import sqlite3 conn = sqlite3.connect("mersul-trenurilor-unificat.sqlite") cur = conn.cursor() # Find all departures from Bucharest North with operator name and train category query = """ SELECT st.departure_time, t.trip_id, t.trip_short_name, a.agency_name, r.route_long_name FROM stop_times st JOIN stops s ON st.stop_id = s.stop_id JOIN trips t ON st.trip_id = t.trip_id JOIN routes r ON t.route_id = r.route_id JOIN agencies a ON r.agency_id = a.agency_id WHERE s.stop_name = 'Bucureşti Nord Gr.A' AND st.departure_time != '' ORDER BY st.departure_time LIMIT 10 """ for row in cur.execute(query): print(row)

Pass it on