Train VR 407 Oulu – Haaparanta pohjoinen

Oulu 19:50 → Haaparanta pohjoinen 21:30 Mon, Wed, Thu, Fri, Sat, Sun 1 h 40 min · 5 stops VR (Finland)

✓ Today’s run finished

Today, last fix heading to HPA_1 at 22:24 +25 min

  1. Oulu19:50
  2. Kemi20:53
  3. Tornio-Itäinen21:16
  4. Tornio21:20
  5. Haaparanta pohjoinen21:30

Next service: tomorrow 19:50 from Oulu · Fri 16 Oct

Next departure 19:50 tomorrow · Oulu
On-time · 30 days
13%
3/24 runs under 3 min
RT coverage: 18 full · 6 partial · 3 no data
On-time · 90 days
13%
8/61 runs under 3 min
RT coverage: 55 full · 6 partial · 3 no data
Typical delay
+11min
Median at arrival, 90 days
30 days: +13 min
P90
+25min
9 in 10 runs arrive with less than this
30 days: +24 min

Last 30 days

Arrival delay at Haaparanta pohjoinen, in minutes. One bar per run.

  • On time (<3 min)
  • 3–10 min
  • 10–30 min
  • 30+ min
  • Partial coverage
  • No data

Worst days

  • Sat 22 Aug Max en route +57 min · last fix heading to — +56 min
  • Sun 30 Aug Max en route +51 min · last fix heading to — +49 min
  • Thu 13 Aug Max en route +42 min · last fix heading to — +42 min
  • Mon 7 Sept Max en route +33 min · last fix heading to — +33 min
  • Sun 4 Oct Max en route +30 min · last fix heading to HPA_1 +30 min

Distribution · 90 days

61 runs with a known final delay. On time = under 3 min, the same cut the map uses.

  • Early 0% · 0
  • On time 13% · 8
  • 3–10 min 33% · 20
  • 10–30 min 48% · 29
  • 30+ min 7% · 4

On-time by weekday

  • 10% M n=10
  • 0% T n=8
  • 22% W n=9
  • 0% T n=10
  • 25% F n=8
  • 38% S n=8
  • 0% S n=8

Stops and timetable

Timetable of the latest run from the operator’s GTFS (5 stops).

StopSched.
19:50
20:53 / 20:55
21:16 / 21:17
21:20 / 21:22
21:30

Each run is closed into train_runs (country, train number, service day) from the live positions. Final delay = last delay seen. Partial coverage: the feed stopped before the final stop (last value used, hatched in the chart). No data: a run without any valid delay; counts as neither on time nor late. Data collected since 11 July 2026.

Recent runs

DateLast stopFinalMax
Thu 15 OctHPA_1 22:24Partial coverage+25 min+25 min
Mon 12 OctHPA_1 22:16Partial coverage+15 min+16 min
Sun 11 Oct— 22:33No data—
Sat 10 Oct— 22:14No data—
Fri 9 Oct— 22:18No data—
Thu 8 OctHPA_1 22:12Partial coverage+5 min+6 min
Wed 7 OctHPA_1 22:14Partial coverage+14 min+15 min
Mon 5 OctHPA_1 22:23Partial coverage+25 min+25 min
Sun 4 OctHPA_1 22:29Partial coverage+30 min+30 min
Sat 3 Oct— 22:20+21 min+22 min
Fri 2 Oct— 21:59+1 min+4 min
Thu 1 Oct— 22:30+23 min+24 min
Wed 30 Sept— 22:010 min+4 min
Tue 29 Sept— 22:11+13 min+14 min
Mon 28 Sept— 22:14+15 min+16 min
Sun 27 Sept— 22:07+8 min+9 min
Sat 26 Sept— 22:07+3 min+9 min
Fri 25 Sept— 22:16+16 min+17 min
Thu 24 Sept— 22:15+6 min+10 min
Wed 23 Sept— 22:04+5 min+7 min
Tue 22 Sept— 22:13+14 min+16 min
Mon 21 Sept— 22:17+12 min+12 min
Sun 20 Sept— 22:19+20 min+21 min
Sat 19 Sept— 22:12+10 min+13 min
Fri 18 Sept— 22:09+10 min+12 min
Thu 17 Sept— 22:12+6 min+8 min
Wed 16 Sept— 22:19+20 min+21 min
Tue 15 Sept— 22:12+3 min+4 min
Mon 14 Sept— 22:01+2 min+5 min
Sun 13 Sept— 22:05+6 min+9 min