OPEN DATA · RAIL INFRASTRUCTURE

Unified Romanian passenger rail GTFS archive

The first open, standardized, and validated data package uniting all scheduled passenger trains in Romania: national operator CFR Călători alongside all six private operators. Point-to-point journey planner, 2,103 daily scheduled runs, 1,695 geocoded stations, interactive railway map, and complete open timetable access.

📅 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
2.103
Daily scheduled runs
46.0% run by private lines
30.267
Scheduled stop calls
2025–2026 timetable year
Interactive instrument

Station departure board & 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:
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 now run 46.0% of all scheduled train runs (968 out of 2,103 trips), offering critical connections on commuter, regional, and competitive intercity routes.

CFR Călători

State
1135 Daily trips
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 Daily trips
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 Daily trips
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 Daily trips
11.8% Trip share
82 Routes
8% Route share
Train types: IR: 15 · R: 215 · R-E: 19

Astra Trans Carpatic

Private
21 Daily trips
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 Daily trips
0.9% Trip share
12 Routes
1.2% Route share
Train types: IC: 18

Softrans

Private
16 Daily trips
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
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
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
Speed change: -1m (+0.8%)

The only major corridor 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
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
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
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
Historical (1989) 10h 00m Rapid direct 63.6 km/h
2026 timetable 14h 04m IRN 472 / IRN 1743 51.8 km/h
Speed change: +4h 04m (-18.6%)

With the direct Cluj–Oradea line closed for electrification, trains divert via Sibiu and Arad (+93 km, taking 14h04 in total).

Quality control

GTFS referential integrity report

The unified dataset has been generated following the General Transit Feed Specification (GTFS) standard, with relational checks across all 7 core text files.

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 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

Free, unrestricted access under Open Data Commons / Romanian Open Government Licence. Zero API keys, zero rate limits, directly served from Cloudflare edge.

📦

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 coordinate geometry, daily departure frequencies, 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)