CP, Comboios de Portugal

Live delays Timetables

Live delays and timetables of CP, Comboios de Portugal in Portugal, recorded since 30 Sep 2026 from a GTFS feed and live data published on infraestruturasdeportugal.pt, which the archive converts to GTFS-RT.

Days

CP, Comboios de Portugal’s terms do not allow republishing its live data without its consent: the archive shows it on this site but does not give out its files until that consent is given. Its timetable can be downloaded.

Pick a day on the calendar to see its trains and delays, in Portugal local time.

Delays of CP, Comboios de Portugal in October 2026. Days with a file are links.
MonTueWedThuFriSatSun
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
  • A file to download
  • Collected, file ready after 02:15 UTC
  • Today, still being collected
  • No data

35 days ready to download. The archive has data for this source since 30 Sep 2026.

The timetable

The planned timetable: stations, routes, trips and times. It comes as GTFS, the standard timetable format, one Parquet table per GTFS file. 9 versions stored, a new one when CP, Comboios de Portugal changes the coming week’s trains.

All versions as Parquet tables

Tools that need a GTFS zip: pip install gtfs-parquet, then gtfs_parquet.write_gtfs(gtfs_parquet.read_parquet(folder), "gtfs.zip") on a folder of the tables. This version was stored on 2 Nov 2026, 00:02 and is the current one.

Accounts are free: you sign in with a code sent to your email, no password.

Use it from code

The live data of this source is not given out, so there is no API address for its days (see above). Its timetable is, as Parquet tables.

Try it in your browser Developer guide

Source id
pt-cp
Services
TripUpdate live delays: daily files from 30 Sep 2026 to 3 Nov 2026 (35 days)
Timetables
Service static: 9 versions, listed in pt-cp/static/latest.json
Stations of the current timetable
import json, urllib.request
import polars as pl

base, token = "https://data.train-archive.eu", "YOUR_TOKEN"
latest = json.load(urllib.request.urlopen(f"{base}/pt-cp/static/latest.json?token={token}"))
stops = pl.read_parquet(f"{base}/{latest['tables']['stops']}?token={token}")
print(stops.select("stop_id", "stop_name"))

Also: every file of this source, listed, and asking an AI assistant to query it for you.

What is covered

Local time
Europe/Lisbon
Rail filter
Off: the feed carries trains only
Live delays
30 Sep 2026 to 4 Nov 2026, 107 files, 14.5 MB.
1 missing hour

    On a usual day the live data covers 98% of the trains the timetable plans. Incomplete days: 30 Sep 2026 (67%, part of the day).

    Feed status
    Last update 18:16 on 4 Nov 2026, local time, 246 trains.
    Timetables
    9 versions stored.
    • 2 Nov 2026, 00:02 8 files, 213.5 KB current
    • 25 Oct 2026, 01:02 6 files, 187.1 KB
    • 17 Oct 2026, 17:18 7 files, 201.5 KB
    • 10 Oct 2026, 15:40 7 files, 188.6 KB
    • 3 Oct 2026, 11:17 6 files, 175.8 KB
    • 1 Oct 2026, 07:26 5 files, 171.7 KB
    457 stops in the latest timetable (every stop: the timetable does not mark stations).

    Do you publish this feed? Ask for a change or its removal. Removal stops collection and deletes the files already stored.