Bridge PowerTEN-T port shore power

Data status · registry surveyed 2026-11-10

What each port publishes.

One row per TEN-T core port from ports/registry.csv: the best public call-level source found, its access and licence terms, what has been ingested, and the recorder schedule for rolling lists.

A

22 ports. Public call-level records with actual arrival and departure (like Valencia PCS, Finland Digitraffic).

B

32 ports. Call-level but planned or expected times only, or a short rolling window (< 90 days) without history: a recorder builds the history.

C

30 ports. Aggregates only (monthly calls or GT) or vessel-in-port snapshots without times.

D

13 ports. Nothing public beyond AIS trackers.

EU exit proxies

  • Several port sources answer only to European addresses; two small SOCKS5 exits (Paris, Amsterdam) let the fetchers reach them.
  • Via Paris: the Spanish Posidonia GISWeb viewers, Bilbao, HAROPA, Gdynia and Aarhus lists. Still unreachable: Barcelona open data, Marseille-Fos PCS, Rijeka, Klaipėda, Gent.
  • Same politeness rules as the survey: one request at a time per host, at least 2 s apart, never log in, never bypass captchas.

ports/proxy/README.md

Live AIS recorder (aisstream.io)

  • Record-forward AIS for all 97 ports since 2026-11-10: one websocket, a box of ±0.25° lat by ±0.40° lon around each port, position and static messages.
  • Thinned to one point per ship per 5 min when stopped (10 min when moving), written hourly; there is no history before the start date.
  • No published licence yet, so it is an internal analysis input. Next step: berth-stay detection to build visit registers for ports without a call feed.

ports/aisstream/README.md

Danish AIS archive (DMA)

  • The Danish Maritime Authority's open AIS archive (2006 to today, 4.2 TB of zips) is streamed and cut to boxes around 9 Øresund, Kattegat and western Baltic ports.
  • Coverage is strong for Copenhagen, Malmö, Helsingborg and Aarhus, good for Göteborg and Trelleborg, partial for Rostock and Kiel, nearly absent for Lübeck.
  • Open data under the Danish re-use act, credit the Danish Maritime Authority; timestamps are UTC. The same berth-stay detection will turn it into visits.

ports/ais_dk/README.md

Ports · 97

Status: Modelled = app data built (the port page exists); Call data / recording = call-level rows ingested or a recorder collecting a rolling list, not yet modelled; Aggregates only = tier C; No public data = nothing usable yet.

PortCtryTierStatusSourceAccessLicence terms RowsHistoryRecorder cadenceNotes
Barcelona ESBCNESANo public dataopen_data_apiblockedCC BY-SA 4.0 (portal, not re-verified)02015 to 2026
2026-11-10 retry: direct = HTTP 500 FortiWeb block page (Attack ID 20000018); via Paris an…2026-11-10 retry: direct = HTTP 500 FortiWeb block page (Attack ID 20000018); via Paris and Amsterdam SOCKS exits TLS completes (1.4-1.9 s) but the server never sends an HTTP response (timeout 45-60 s), with default TLS, --tlsv1.2 --tls-max 1.2 and --http1.1 alike, for /, /en/dataset/..., /api/3/action/package_show and direct resource CSV URLs. datos.gob.es API gives the 12 resource URLs but they point at the same host (no mirror copy). Retry from a Spanish/residential network.
Cartagena ESCARESACall data / recordingpcs_webopenunclear (public viewer, no licence stated)62,0962004-12 to 2026-11
Same GISWeb guest mode via Paris proxy. Includes Escombreras (codpue E, tanker/LNG basin);…Same GISWeb guest mode via Paris proxy. Includes Escombreras (codpue E, tanker/LNG basin); port_sub column keeps it. Older years have date-only times; see ESCAR/README. fetch_ES_gisweb.py
Gijón ESGIJESACall data / recordingpcs_webopenunclear (public viewer, no licence stated)15,8102017-01 to 2026-11
Posidonia GISWeb public guest mode, reachable only via Paris proxy (403 direct/AMS). Local…Posidonia GISWeb public guest mode, reachable only via Paris proxy (403 direct/AMS). Local time (Europe/Madrid), verified via cruise 07-08h arrivals. Anchorage rows included (FONDEO). No GT/ETA/origin. fetch_ES_gisweb.py
Las Palmas ESLPAESACall data / recordingpcs_webopenunclear (public anonymous viewer of the port authority; no terms page found)106,8362018-01 to 2026-11
public anonymous session of Prodevelop Portlive (pui9): GET /operations_server/portlive/in…public anonymous session of Prodevelop Portlive (pui9): GET /operations_server/portlive/init -> JWT; POST /operations_server/vstophistorical/getStopsHistorical model stopsportlivehistorical. Authority PA 203 (Puerto del Rosario, Arrecife not fetched); server-side filter port_id 206 La Luz y Las Palmas. History exists from ~2018-01 but only the last 24 months were ingested (server ~20 s/page); resumable backfill with --from 2018-01. Times ISO UTC.
Palma de Mallorca ESPMIESACall data / recordingport_website_tableopenunclear (openly published file folder; also catalogued on datos.gob.es ea0001301-historico-de-buques-en-puerto)27,1432019-01 to 2026-10
Row = berthing (atraque); shifts share Escala. Folder covers all 5 APB ports (A,F,I,M,P); …Row = berthing (atraque); shifts share Escala. Folder covers all 5 APB ports (A,F,I,M,P); visits_raw keeps P=Palma. UTC column from 2021-06, earlier converted from Europe/Madrid. APB also has an anonymous Portlive at baleares.portlive.posidoniaport.com (not needed).
Santa Cruz de Tenerife (incl. Granadilla) ESSCTESACall data / recordingpcs_webopenunclear (public anonymous viewer of the port authority; no terms page found)34,4582023-06 to 2026-11
public anonymous session of Prodevelop Portlive (pui9): GET /operations_server/portlive/in…public anonymous session of Prodevelop Portlive (pui9): GET /operations_server/portlive/init -> JWT; POST /operations_server/vstophistorical/getStopsHistorical model stopsportlivehistorical. Authority PA 104 also has La Palma, Gomera, Hierro, Los Cristianos (raw only); visits_raw = portid 107 S/C de Tenerife (Granadilla is not a separate port id in Portlive; check subports). Times ISO UTC. 6 stray rows dated 2022 in the source.
Tarragona ESTARESACall data / recordingpcs_webopenunclear (public anonymous viewer of the port authority; no terms page found)28,0542018-01 to 2026-05-06 (feed stalled)
public anonymous session of Prodevelop Portlive (pui9): GET /operations_server/portlive/in…public anonymous session of Prodevelop Portlive (pui9): GET /operations_server/portlive/init -> JWT; POST /operations_server/vstophistorical/getStopsHistorical model stopsportlivehistorical. Single port (PA 236). FEED STALLED: no stops after 2026-05-06 and the current-situation tab is empty (checked 2026-11-09); probably a back-end migration. Re-check, otherwise a gap remains after May 2026. Times ISO UTC. PARTIAL: fetched 2018-01..2018-03 and 2024-11..2026-11; missing 2018-04..2024-10. Resume: cd valencia && uv run python ../ports/scripts/fetch_ES_portlive.py ESTAR --from 2018-01 Backfill 2018-01..2026-05 completed 2026-11-10; feed stopped 2026-05-06.
Valencia ESVLCESAModelledpcs_webopenpublic port-authority service; attribution 'Autoridad Portuaria de València via ValenciaportPCS'36,6892021-01 to 2026-11
Reference implementation; see ESVLC/README.md and ../valencia/scripts/pcs_download_histori…Reference implementation; see ESVLC/README.md and ../valencia/scripts/pcs_download_historic.py. Times epoch UTC. PCS also covers Sagunto/Gandia (excluded).
Hamina FIHMNFIACall data / recordingnational_apiopenCC BY 4.0 (Fintraffic / digitraffic.fi)5,7542018-10 to 2026-11 (+~100 d planned)
scripts/fetch_FI.py; UTC verified vs Silja Serenade 17:00 departure; actual ATA 95%. Portn…scripts/fetch_FI.py; UTC verified vs Silja Serenade 17:00 departure; actual ATA 95%. Portnet files most Hamina calls under FIKTK since the HaminaKotka merger; split by Hamina port-area codes (portnet_locode column keeps the original)
Helsinki FIHELFIACall data / recordingnational_apiopenCC BY 4.0 (Fintraffic / digitraffic.fi)63,5012018-10 to 2026-11 (+~100 d planned)
scripts/fetch_FI.py; UTC verified vs Silja Serenade 17:00 departure; actual ATA 94%. FIHEL…scripts/fetch_FI.py; UTC verified vs Silja Serenade 17:00 departure; actual ATA 94%. FIHEL; Portnet port areas also include Loviisa and Kantvik (2,056 calls), filter on terminal if needed
Kotka FIKTKFIACall data / recordingnational_apiopenCC BY 4.0 (Fintraffic / digitraffic.fi)14,7662018-10 to 2026-11 (+~100 d planned)
scripts/fetch_FI.py; UTC verified vs Silja Serenade 17:00 departure; actual ATA 94%. Hamin…scripts/fetch_FI.py; UTC verified vs Silja Serenade 17:00 departure; actual ATA 94%. Hamina-area calls filed under FIKTK moved to FIHMN
Naantali FINLIFIACall data / recordingnational_apiopenCC BY 4.0 (Fintraffic / digitraffic.fi)12,3692018-10 to 2026-11 (+~100 d planned)
scripts/fetch_FI.py; UTC verified vs Silja Serenade 17:00 departure; actual ATA 93%. Neste…scripts/fetch_FI.py; UTC verified vs Silja Serenade 17:00 departure; actual ATA 93%. Neste refinery + Finnlines ferries
Oulu FIOULFIACall data / recordingnational_apiopenCC BY 4.0 (Fintraffic / digitraffic.fi)4,0132018-10 to 2026-11 (+~100 d planned)scripts/fetch_FI.py; UTC verified vs Silja Serenade 17:00 departure; actual ATA 94%.
Turku FITKUFIACall data / recordingnational_apiopenCC BY 4.0 (Fintraffic / digitraffic.fi)14,1912018-10 to 2026-11 (+~100 d planned)
scripts/fetch_FI.py; UTC verified vs Silja Serenade 17:00 departure; actual ATA 94%. inclu…scripts/fetch_FI.py; UTC verified vs Silja Serenade 17:00 departure; actual ATA 94%. includes Meyer Turku yard calls (Pernon telakka)
Piraeus GRPIRGRACall data / recordingport_website_tableopenunclear (no terms on pct.com.gr; olp.gr not checked)1,2842026-01-04 to 2026-12-31
PCT container terminal call-level with actuals but only a rolling window (2026-08-05..2026…PCT container terminal call-level with actuals but only a rolling window (2026-08-05..2026-11-12, 519 calls) -> weekly recorder needed. PPA cruise plan 2026 (756), ferry board (9 one-sided events). Not covered: PPA Pier I containers, car terminal, ro-ro/cargo, most ferries. Stats: https://www.olp.gr/en/statistics . Arrivals&Departures page is iframe /dromologia.php.
Thessaloniki GRSKGGRAModelledport_website_tableopenthpa.gr terms: content may not be modified, sold or exploited by third parties; single copy for personal non-public use with attribution allowed -> internal use only, no redistribution1,7582024-01-01 to 2026-11-16
Container terminal (Pier 6) only; conventional/bulk (SEMPO), cruise, ferry not covered (th…Container terminal (Pier 6) only; conventional/bulk (SEMPO), cruise, ferry not covered (thpa.gr/cruise and /ferry pages not ingested). Times naive local, assumed Europe/Athens. Ingested for internal analysis; confirm with ThPA before publishing derived data.
Rīga LVRIXLVACall data / recordingopen_data_apiopenunclear (unauthenticated backend of rop.lv widget)1,6462016 (ids resolve) to 2026-11
scripts/fetch_LVRIX.py; history needs sequential id enumeration (~3 s/id, ~2.7k visits/yr …scripts/fetch_LVRIX.py; history needs sequential id enumeration (~3 s/id, ~2.7k visits/yr -> ~6 h for 24 months); complete Jul-Oct 2026 so far; resumable Script has a --max-minutes budget (default 25); 7 h run started 2026-11-10.
Leixões PTLEIPTAModelledport_website_tableopenunclear (public APDL LIVEDATA site)4,3182024-12 to today
Also has arrivalForecast, approachZone, planned manoeuvres, cruises endpoints. Times are U…Also has arrivalForecast, approachZone, planned manoeuvres, cruises endpoints. Times are UTC (verified by DST shift of cruise call hours). Viana do Castelo (PTVDC) on the same platform. Captain/CSO contacts dropped at download. Tier C: APDL estatística mensal.
Lisboa (incl. Setúbal) PTLISPTACall data / recordingport_website_tableopenunclear (public page, no reuse terms found)31,3282013-01 to today
Lisbon only; Setúbal (APSS, portodesetubal.pt) not covered - its TLS chain failed verifica…Lisbon only; Setúbal (APSS, portodesetubal.pt) not covered - its TLS chain failed verification, not pursued. Server is slow (~60-90 s per month query) so most recent 24 months ingested first; script resumable to 2013. Agent email/phone/address dropped at download.
Göteborg SEGOTSEACall data / recordingopen_data_apiopenunclear (public web backend; attribute Göteborgs Hamn AB)69,2912015-03-01 to 2027-05 (planned)
scripts/fetch_SEGOT.py; UTC 'Z' verified vs Stena Danica timetable; full 2017+ (…scripts/fetch_SEGOT.py; UTC 'Z' verified vs Stena Danica timetable; full 2017+ (2015-16 partial); ANCHORAGE/GENOMGÅENDE rows are not berth calls
Stockholm SESTOSEACall data / recordingopen_data_apiopenunclear (public web backend; attribute Stockholms Hamn AB)50,8322014-01 to 2026-11-09
scripts/fetch_SESTO.py; Stohab only in parquet (raw also has Nynäshamn/Kapellskär); local …scripts/fetch_SESTO.py; Stohab only in parquet (raw also has Nynäshamn/Kapellskär); local time verified vs Silja timetable; contains leisure/museum craft
Koper SIKOPSIACall data / recordingport_website_tableopenunclear (public page, no reuse terms stated)41,6422006-06-28 to 2026-12-29
JSON behind the public "Ship arrivals, pilotage and mooring plans" page; date-ra…JSON behind the public "Ship arrivals, pilotage and mooring plans" page; date-range query works back to 2007.
Gent BEGNEBEBCall data / recordingport_website_tableopenunclear178*-*-* 05;11;17;23:40:00 Europe/Brussels (BEGNE)
Enigma+ public lists (linked from northseaport.com/en/departures-and-arrivals; old portofg…Enigma+ public lists (linked from northseaport.com/en/departures-and-arrivals; old portofghent.be/enigma host dead from all exits). Works direct and via Paris. Snapshot 2026-11-09T23:41Z: 16 actual arrivals, 20 actual departures, 90 at berth, 52 expected; IMO on 169/178. Feed covers all North Sea Port (Zeeland berth codes present); rows tagged BEGNE pending berth->port mapping. scripts/fetch_BEGNE.py; run >= 2x/day for a gap-free ATA/ATD record (tier-A-like).
Limassol (incl. Zygi) CYLMSCYBNo public datapcs_webblockedunclear0
pcsportal.cpa.gov.cy connect timeout on https (Paris, Amsterdam) and http (Paris) on 2026-…pcsportal.cpa.gov.cy connect timeout on https (Paris, Amsterdam) and http (Paris) on 2026-11-10, as from HK: host down or allow-listed. Tier B provisional.
Bremen DEBREDEBCall data / recordingpcs_webopenoffered for import into users systems (dbh.de/kis/port/sis); no licence text: unclear23rolling (~2 wk back) to +4 weeks*-*-* 06;18:05:00 (DE_sis)
dbh SIS planned liner schedules only (Bremen city terminals codes 21-24). Few rows; bulk/o…dbh SIS planned liner schedules only (Bremen city terminals codes 21-24). Few rows; bulk/other traffic not covered. Tier C: Eurostat mar_tf_qm (quarterly vessels & GT by main port and vessel type): https://ec.europa.eu/eurostat/databrowser/view/mar_tf_qm/default/table; Destatis GENESIS 46331.
Bremerhaven DEBRVDEBCall data / recordingpcs_webopenoffered for import into users systems (dbh.de/kis/port/sis); no licence text: unclear563rolling (~2 wk back) to +4 weeks*-*-* 06;18:05:00 (DE_sis)
dbh SIS planned liner schedules (EUROGATE CTB C1/C2, NTB NT/N1/N2, BLG auto). bremenports …dbh SIS planned liner schedules (EUROGATE CTB C1/C2, NTB NT/N1/N2, BLG auto). bremenports ships-in-port page only links SIS + AIS shiptracker. Tier C: Eurostat mar_tf_qm (quarterly vessels & GT by main port and vessel type): https://ec.europa.eu/eurostat/databrowser/view/mar_tf_qm/default/table; Destatis GENESIS 46331.
Hamburg DEHAMDEBCall data / recordingpcs_webopenoffered for import into users systems (dbh.de/kis/port/sis); no licence text: unclear901rolling (~2 wk back) to +4 weeks*-*-* 06;18:05:00 (DE_sis); *-*-* 00/6:30:00 (DEHAM_exp)
Two tier-B sources: dbh SIS (ZAPP) planned liner calls (880 calls, terminal codes) + Port …Two tier-B sources: dbh SIS (ZAPP) planned liner calls (880 calls, terminal codes) + Port of Hamburg Marketing expected vessels (~2 days, 21 rows). HHLA COAST Segelliste (coast.hhla.de/segelliste) is a JS app, not explored (reports likely login). No public history with ATA/ATD found. Tier C: Eurostat mar_tf_qm (quarterly vessels & GT by main port and vessel type): https://ec.europa.eu/eurostat/databrowser/view/mar_tf_qm/default/table; Destatis 46331.
Rostock DERSKDEBCall data / recordingport_website_tableopendisclaimer only; unclear65snapshot to advised (~days ahead)*-*-* 00/6:35:00 (DERSK)
Ships in port (31) + advised (34) snapshot. No departures; recorder every 6-12 h gives arr…Ships in port (31) + advised (34) snapshot. No departures; recorder every 6-12 h gives arrival + last-seen. Tier C: Eurostat mar_tf_qm (quarterly vessels & GT by main port and vessel type): https://ec.europa.eu/eurostat/databrowser/view/mar_tf_qm/default/table
Wilhelmshaven DEWVNDEBCall data / recordingpcs_webopenoffered for import into users systems (dbh.de/kis/port/sis); no licence text: unclear188rolling (~2 wk back) to +4 weeks*-*-* 06;18:05:00 (DE_sis)
dbh SIS planned schedules for EUROGATE CTW (JadeWeserPort) only; tanker/bulk/LNG terminals…dbh SIS planned schedules for EUROGATE CTW (JadeWeserPort) only; tanker/bulk/LNG terminals not covered. Tier C: Eurostat mar_tf_qm (quarterly vessels & GT by main port and vessel type): https://ec.europa.eu/eurostat/databrowser/view/mar_tf_qm/default/table
Aarhus DKAARDKBCall data / recordingport_website_tableopenunclear68*-*-* 00/6:10:00 (DKAAR)
Paris exit needed (HK times out). Snapshot 2026-11-09T23:38Z: 24 arrived, 43 expected, 1 o…Paris exit needed (HK times out). Snapshot 2026-11-09T23:38Z: 24 arrived, 43 expected, 1 ordered; 9 terminals. No history. scripts/fetch_DKAAR.py. DMA AIS archive remains the history fallback (see BALTIC.md).
København DKCPHDKBCall data / recordingport_website_tableopenunclear912026-11-02 to 2026-12-31*-*-* 04:20:00 (CMP)
scripts/fetch_CMP.py (also SEMMA). Past ranges (2025) return empty -> recorder needed. …scripts/fetch_CMP.py (also SEMMA). Past ranges (2025) return empty -> recorder needed. AIS fallback: DMA archive. Tier C: https://ec.europa.eu/eurostat/databrowser/view/mar_tf_qm/default/table (Vessels arriving in main ports by type/size, quarterly)
Tallinn (Old City Harbour, Muuga) EETLLEEBCall data / recordingport_website_tableopenunclear7,1942020-05 to 2026-11-30
scripts/fetch_EETLL.py; liner Nov 2025-Nov 2026 (back to ~2020 available); ships-in-port l…scripts/fetch_EETLL.py; liner Nov 2025-Nov 2026 (back to ~2020 available); ships-in-port list is sparse (~100-400/yr) so cargo calls need AIS. Tier C: https://ec.europa.eu/eurostat/databrowser/view/mar_tf_qm/default/table (Vessels arriving in main ports by type/size, quarterly)
Bilbao ESBIOESBCall data / recordingport_website_tableopenunclear (site disclaims accuracy)96*-*-* 09:30:00 Europe/Madrid (ESBIO)
200 via Paris proxy on first request; the second request (sub-page vessel-arrivals) got a …200 via Paris proxy on first request; the second request (sub-page vessel-arrivals) got a Radware bot challenge, so only the one overview snapshot (2026-11-09 23:35Z) was used and no retry. Recorder would need to stay at <=1 request per visit window and may still be challenged. fetch_ESBIO.py
Bordeaux FRBODFRBCall data / recordingpcs_webopenunclear (no reuse terms on page)234rolling (open announcements, some back to 2024) to +3 y (cruise bookings)*-*-* 01/6:00:00 (FRBOD)
VigieSip capitainerie WS. ETA = arrival at BXA buoy (port limit). Snapshot taken once; run…VigieSip capitainerie WS. ETA = arrival at BXA buoy (port limit). Snapshot taken once; run scripts/fetch_FR.py on a schedule to build history. Tier C: GPMB annual/monthly traffic reports on bordeaux-port.fr.
Brest FRBESFRBCall data / recordingpcs_webopenunclear; endpoint not linked from brest.port.bzh (found via VigieSip host pattern)40rolling to +~1 month*-*-* 01/6:05:00 (FRBES)
Same VigieSip WS family as Bordeaux; brest.port.bzh itself shows no call list. Small volum…Same VigieSip WS family as Bordeaux; brest.port.bzh itself shows no call list. Small volume (40 calls in window).
Nantes Saint-Nazaire FRNTEFRBCall data / recordingport_website_tableopenunclear88rolling to +~1 y*-*-* 01/6:10:00 (FRNTE)
No IMO/MMSI: match to AIS by name+LOA. Includes long-stay/service craft (navy, dredgers, s…No IMO/MMSI: match to AIS by name+LOA. Includes long-stay/service craft (navy, dredgers, shipyard). Tier C: GPMNSN annual traffic.
Rouen FRUROFRBCall data / recordingport_website_tableopenunclear71*-*-* 06;18:25:00 (FRURO)
DrakHAR public lists linked from capitainerie-rouen.com; Rouen only. Snapshot 2026-11-09T2…DrakHAR public lists linked from capitainerie-rouen.com; Rouen only. Snapshot 2026-11-09T23:40Z: 17 departed (actual ATD), 54 open calls. No call id/IMO (keyed by name). Works direct and via Paris. scripts/fetch_FRURO.py; run every 12-24 h to keep all departures.
Sète FRSETFRBCall data / recordingpcs_webopenunclear358rolling (a few stale announcements from 2021-22) to +~3 y (cruise/ferry bookings)*-*-* 01/6:15:00 (FRSET)
Same VigieSip WS as Bordeaux. sete.port.fr "Les escales" page has no table in HT…Same VigieSip WS as Bordeaux. sete.port.fr "Les escales" page has no table in HTML. One ETA typo (year 2202) in source.
Heraklion GRHERGRBCall data / recordingpdf_bulletinopenunclear1,6592019-02-17 to 2027-12-31
Cruise only, planned times. 2026 file trimmed to Nov-Dec (past calls removed) -> archiv…Cruise only, planned times. 2026 file trimmed to Nov-Dec (past calls removed) -> archive each year's file before season end. Ferries/cargo: nothing public (MarineTraffic iframe). Stats page on portheraklion.gr (statistika-stoixeia). Tier C fallback: ELSTAT maritime transport statistics (vessel arrivals by port, quarterly) and Eurostat mar_tf_qm (vessels by port, quarterly).
Igoumenitsa GRIGOGRBCall data / recordingport_website_tableopenunclear52026-11-09 to 2026-11-09*-*-* 00/4:55:00 (GRIGO)
International (Italy) ro-pax board only; domestic board JS-only. Recorder every 2-4 h woul…International (Italy) ro-pax board only; domestic board JS-only. Recorder every 2-4 h would pair arr/dep per ferry. Cruise via cruisemapper link only. Stats: https://www.olig.gr/index.php/en/port/statistics
Split HRSPUHRBCall data / recordingopen_data_apiopenunclear752026-11-09 to 2026-11-10*-*-* 07:00:00 (HRSPU)
Passenger port ferries/fast craft only; no cargo (Vranjic/Kaštela) or cruise. Stats https:…Passenger port ferries/fast craft only; no cargo (Vranjic/Kaštela) or cruise. Stats https://portsplit.hr/statistike
Cork IEORKIEBCall data / recordingopen_data_apiopenpublic ArcGIS item, no licence text: unclear15current window (~1-2 days)*-*-* 00/3:45:00 (IEORK)
portofcork.ie/shipping-schedule -> ArcGIS dashboard -> public FeatureServer. 24 move…portofcork.ie/shipping-schedule -> ArcGIS dashboard -> public FeatureServer. 24 movements / 15 visits. Tier C: Eurostat mar_tf_qm (quarterly vessels & GT by main port and vessel type): https://ec.europa.eu/eurostat/databrowser/view/mar_tf_qm/default/table; CSO port traffic statistics.
Dublin IEDUBIEBCall data / recordingport_website_tableopenunclear124snapshot to next 100 arrivals*-*-* 00/6:50:00 (IEDUB)
124 rows (99 expected + 25 in port). No IMO; ferries call several times a day. Dublin Port…124 rows (99 expected + 25 in port). No IMO; ferries call several times a day. Dublin Port trade statistics page (monthly) = tier C validation. Tier C: Eurostat mar_tf_qm (quarterly vessels & GT by main port and vessel type): https://ec.europa.eu/eurostat/databrowser/view/mar_tf_qm/default/table
Bari ITBRIITBNo public dataport_website_tableblockedunclear0
Via Paris: 302 to validate.perfdrive.com (Radware Bot Manager captcha), same as from HK. N…Via Paris: 302 to validate.perfdrive.com (Radware Bot Manager captcha), same as from HK. Not bypassed. Tier B provisional. Assoporti stats: https://www.assoporti.it/it/autoritasistemaportuale/statistiche/
Civitavecchia ITCVVITBNo public datapcs_webblockedunclear0
giada.portidiroma.it TCP connect timeout on http and https via Paris and Amsterdam (and HK…giada.portidiroma.it TCP connect timeout on http and https via Paris and Amsterdam (and HK): host down or allow-listed, not geo. Port Mobility table not retried. Stats PDFs https://www.portidiroma.it/traffici-portuali
Taranto ITTARITBCall data / recordingport_website_tableopenunclear192026-11-09 to 2026-11-09*-*-* *:20:00 (ITTAR)
Best Italian public table found (PMIS-derived, UTC). No history: hourly recorder gives ATA…Best Italian public table found (PMIS-derived, UTC). No history: hourly recorder gives ATA + last-seen as ATD proxy. Stats https://port.taranto.it/statistiche Snapshot 2026-11-09 (oldest ATA in it 2022-12-20, a long-stay vessel).
Valletta (Grand Harbour) MTMLAMTBCall data / recordingport_website_tableopenunclear1,8532021-01-28 to 2026-12-09
Cruise calls only (not cargo/ferry/Grand Harbour shipyard). History from Jan 2021. Transpo…Cruise calls only (not cargo/ferry/Grand Harbour shipyard). History from Jan 2021. Transport Malta port notices blocked (Cloudflare 403).
Rotterdam NLRTMNLBCall data / recordingopen_data_apiopenno terms stated for feed; unclear763~6 weeks (present) / 3 days (departed) to expected (~days ahead)*-*-* 02/6:40:00 (NLRTM)
Unauthenticated JSON behind the public Arrival and departures widget. 763 rows in one snap…Unauthenticated JSON behind the public Arrival and departures widget. 763 rows in one snapshot (358 expected, 191 present, 214 departed). Daily recorder -> tier-A-quality ATA/ATD per ucrn going forward. No history parameter.
Terneuzen NLTNZNLBCall data / recordingport_website_tableopenunclear0*-*-* 05;11;17;23:40:00 Europe/Brussels (BEGNE)
Same Enigma+ feed as BEGNE (alphabetic Zeeland berth codes present); rows stored under por…Same Enigma+ feed as BEGNE (alphabetic Zeeland berth codes present); rows stored under ports/BEGNE until berths are mapped to Terneuzen/Vlissingen.
Vlissingen NLVLINLBCall data / recordingport_website_tableopenunclear0*-*-* 05;11;17;23:40:00 Europe/Brussels (BEGNE)
Same Enigma+ feed as BEGNE (e.g. Sloehaven SLOEB/SLOEP, Scheldepoort SCHP*); rows stored u…Same Enigma+ feed as BEGNE (e.g. Sloehaven SLOEB/SLOEP, Scheldepoort SCHP*); rows stored under ports/BEGNE until berths are mapped.
Gdynia PLGDYPLBCall data / recordingport_website_tableopenunclear63*-*-* 00/6:15:00 (PLGDY)
Maritime Office Gdynia lists (Paris exit needed; HK IP times out). Snapshot 2026-11-09T23:…Maritime Office Gdynia lists (Paris exit needed; HK IP times out). Snapshot 2026-11-09T23:39Z: 51 in port (actual ATA), 12 expected. Same pages carry Gdansk Port Polnocny + Nowy Port blocks (useful for PLGDN). port.gdynia.pl has no own schedule. scripts/fetch_PLGDY.py; departure = Call ID leaving in-port list.
Luleå SELLASEBCall data / recordingport_website_tableopenunclear112026-11-07 to 2026-11-23*-*-* 02/6:45:00 (SELLA)
scripts/fetch_SELLA.py (Ahoy port list; no date filter). Tier C: https://ec.europa.eu/euro…scripts/fetch_SELLA.py (Ahoy port list; no date filter). Tier C: https://ec.europa.eu/eurostat/databrowser/view/mar_tf_qm/default/table (Vessels arriving in main ports by type/size, quarterly); Trafikanalys sjötrafik statistics
Malmö SEMMASEBCall data / recordingport_website_tableopenunclear1022026-11-02 to 2026-11-22*-*-* 04:20:00 (CMP)
scripts/fetch_CMP.py; mostly Finnlines/Nordö-Link Norra hamnen 702/703. Tier C: https://ec…scripts/fetch_CMP.py; mostly Finnlines/Nordö-Link Norra hamnen 702/703. Tier C: https://ec.europa.eu/eurostat/databrowser/view/mar_tf_qm/default/table (Vessels arriving in main ports by type/size, quarterly)
Trelleborg SETRGSEBCall data / recordingport_website_tableopenunclear392026-11-09 to 2026-11-10*-*-* 02/6:50:00 (SETRG)
scripts/fetch_SETRG.py; ferry timetable only, weak identity -> AIS needed. Tier C: http…scripts/fetch_SETRG.py; ferry timetable only, weak identity -> AIS needed. Tier C: https://ec.europa.eu/eurostat/databrowser/view/mar_tf_qm/default/table (Vessels arriving in main ports by type/size, quarterly)
Antwerpen BEANRBECAggregates onlynoneregistrationNxtPort/PoAB API terms (registration, client key)0
No public ship-movement list; APICS is agent-facing. PortStays API (free tier 100 queries/…No public ship-movement list; APICS is agent-facing. PortStays API (free tier 100 queries/day) and PortVoyages API need a subscription key via NxtPort/PoAB support -> not created (no accounts). Would be tier A with a key. Tier C: Eurostat mar_tf_qm (quarterly vessels & GT by main port and vessel type): https://ec.europa.eu/eurostat/databrowser/view/mar_tf_qm/default/table; PoAB annual facts & figures.
Zeebrugge BEZEEBECAggregates onlynoneregistrationNxtPort/PoAB API terms0
Same as BEANR (Port of Antwerp-Bruges PortStays/PortVoyages APIs cover Zeebrugge). Tier C:…Same as BEANR (Port of Antwerp-Bruges PortStays/PortVoyages APIs cover Zeebrugge). Tier C: Eurostat mar_tf_qm (quarterly vessels & GT by main port and vessel type): https://ec.europa.eu/eurostat/databrowser/view/mar_tf_qm/default/table
Lübeck DELBCDECAggregates onlynoneopenEurostat reuse policy (CC BY 4.0)0
lhg.com has no public ship list; ferry operators publish timetables (Finnlines, TT-Line, S…lhg.com has no public ship list; ferry operators publish timetables (Finnlines, TT-Line, Stena) = schedule proxy. Not in dbh SIS file. Tier C: Eurostat mar_tf_qm (quarterly vessels & GT by main port and vessel type): https://ec.europa.eu/eurostat/databrowser/view/mar_tf_qm/default/table; Destatis GENESIS 46331. AIS needed for calls.
A Coruña ESLCGESCAggregates onlypcs_webregistrationunclear0
Reachable via Paris proxy but config has makeLogin=true (app logs in with credentials pass…Reachable via Paris proxy but config has makeLogin=true (app logs in with credentials passed in the URL ?id=usr|pwd); no guest session. Not attempted. Fallback tier C: Puertos del Estado monthly bulletin https://www.puertos.es/es/estadisticas
Bahía de Algeciras ESALGESCAggregates onlypcs_webregistrationunclear0
Reachable via Paris proxy but config has showLogin=true + makeLogin=true: login page only,…Reachable via Paris proxy but config has showLogin=true + makeLogin=true: login page only, no guest session. Not attempted. Teleport PCS also login-only. Fallback tier C: Puertos del Estado monthly bulletin https://www.puertos.es/es/estadisticas
Castellón ESCASESCAggregates onlypdf_bulletinregistrationunclear0
Prodevelop Portlive exists at https://castellon.portlive.posidoniaport.com but init report…Prodevelop Portlive exists at https://castellon.portlive.posidoniaport.com but init reports withAnonymousLogin=false (login only); no account created. Authority website timed out from our network. puertos.es unreachable from our network (DNS), so no sample file was downloaded.
Huelva ESHUVESCAggregates onlypdf_bulletinblockedunclear0
huelva.posidoniaport.com serves the shared GISWeb shell (cookie port=huelva) but 'hue…huelva.posidoniaport.com serves the shared GISWeb shell (cookie port=huelva) but 'huelva' is not in the loader's idpuertos table, so the app never starts (errorGrave); no port id, no endpoint. Not guessed.
Santander ESSDRESCAggregates onlypcs_webblockedunclear0
Page reachable via Paris proxy, but the app calls login.do?metodo=checkRemoteAddress and o…Page reachable via Paris proxy, but the app calls login.do?metodo=checkRemoteAddress and only opens the guest session for a hard-coded IP whitelist (port authority networks); everyone else gets ACCESO DENEGADO. Not bypassed. Fallback tier C: Puertos del Estado monthly bulletin https://www.puertos.es/es/estadisticas; puertosantander.es/es/buques-en-el-puerto not retried
Sevilla ESSVQESCAggregates onlypdf_bulletinregistrationunclear0
Prodevelop Portlive exists at https://sevilla.portlive.posidoniaport.com but init reports …Prodevelop Portlive exists at https://sevilla.portlive.posidoniaport.com but init reports withAnonymousLogin=false (login only); no account created. Authority website timed out from our network. puertos.es unreachable from our network (DNS), so no sample file was downloaded.
Shannon Foynes IEFOVIECAggregates onlynoneopenEurostat CC BY 4.00
sfpc.ie has no shipping schedule page (/shipping-schedule/ 404); marine notices only. CSO …sfpc.ie has no shipping schedule page (/shipping-schedule/ 404); marine notices only. CSO Ireland port traffic statistics + Eurostat for validation. AIS needed.
Ancona ITAOIITCAggregates onlypcs_webopenunclear0
Sinfomar-family PCS (same product as Trieste and Sicilia Orientale): public POST NaviInPor…Sinfomar-family PCS (same product as Trieste and Sicilia Orientale): public POST NaviInPorto.public snapshot only. Recorder of snapshots could give presence intervals. Assoporti annual port movements: https://www.assoporti.it/it/autoritasistemaportuale/statistiche/
Augusta ITAUGITCAggregates onlypcs_webopenunclear0
Same Sinfomar-family snapshot as Ancona/Trieste. Statistics: https://www.adspmaresiciliaor…Same Sinfomar-family snapshot as Ancona/Trieste. Statistics: https://www.adspmaresiciliaorientale.it/numeri/statistiche/ . Assoporti annual port movements: https://www.assoporti.it/it/autoritasistemaportuale/statistiche/
Cagliari (incl. Porto Foxi/Sarroch) ITCAGITCAggregates onlypdf_bulletinopenunclear0
PCS https://pcs.adspmaredisardegna.it is a login SPA. Nothing call-level public for Caglia…PCS https://pcs.adspmaredisardegna.it is a login SPA. Nothing call-level public for Cagliari/Sarroch. Assoporti annual port movements: https://www.assoporti.it/it/autoritasistemaportuale/statistiche/
Genova ITGOAITCAggregates onlypcs_webopenunclear0
E-Port PCS portal https://genova.pcspln.cloud/web/portale-adsp/ has only login/registratio…E-Port PCS portal https://genova.pcspln.cloud/web/portale-adsp/ has only login/registration; no public berth plan found. Assoporti annual port movements: https://www.assoporti.it/it/autoritasistemaportuale/statistiche/
Gioia Tauro ITGITITCAggregates onlynoneopenunclear0
PCS https://pcs-psn.portodigioiatauro.it is accreditation/login only; AdSP site has no shi…PCS https://pcs-psn.portodigioiatauro.it is accreditation/login only; AdSP site has no ship list or statistics page. Effectively AIS-only for calls.
La Spezia ITSPEITCAggregates onlynoneblockedunclear0
www.adspmarligureorientale.it TCP connect timeout via Paris and Amsterdam too (not geo). N…www.adspmarligureorientale.it TCP connect timeout via Paris and Amsterdam too (not geo). No call list checked.
Livorno ITLIVITCAggregates onlynoneblockedunclear0
portialtotirreno.it: Sucuri JS challenge (307 You are being redirected) via Paris and Amst…portialtotirreno.it: Sucuri JS challenge (307 You are being redirected) via Paris and Amsterdam as from HK. Not bypassed.
Napoli ITNAPITCAggregates onlypdf_bulletinopenunclear0
"Accosti" page https://adsptirrenocentrale.it/accosti/ only links to MarineTraff…"Accosti" page https://adsptirrenocentrale.it/accosti/ only links to MarineTraffic port pages for Napoli/Salerno/Castellammare. robots.txt blocks only named AI/SEO bots.
Palermo (incl. Termini Imerese) ITPMOITCAggregates onlypdf_bulletinopenunclear0Planned schedules only, as PDFs. Statistics https://www.adsppalermo.it/statistica
Ravenna ITRANITCAggregates onlypcs_webregistrationunclear0
PCS https://pcsra.port.ravenna.it is an Angular app with ships/viagginave/pmis modules beh…PCS https://pcsra.port.ravenna.it is an Angular app with ships/viagginave/pmis modules behind login; no public ship list on www.port.ravenna.it.
Trieste ITTRSITCAggregates onlypcs_webopenunclear0
Via Paris: NaviInPorto.public 200 (same snapshot, no times, no export). Sinfomar root is a…Via Paris: NaviInPorto.public 200 (same snapshot, no times, no export). Sinfomar root is a login (j_security_check); other public links are GPF truck pre-advice/parking (preavvisipublic, mezzifermifernetti), not ships. No history view. Snapshot recorder every 15-30 min would give presence intervals.
Venezia ITVCEITCAggregates onlypcs_webopenunclear0LogIS PCS is login-only; no public ship list found.
Ventspils LVVNTLVCAggregates onlynoneopenEurostat reuse policy (CC BY 4.0)0
portofventspils.lv has no ship list (only agencies/ferry pages); 1 web search found only A…portofventspils.lv has no ship list (only agencies/ferry pages); 1 web search found only AIS trackers. AIS fallback needed
Amsterdam NLAMSNLCAggregates onlynoneopenEurostat CC BY 4.00
Port of Amsterdam open-data page (JS) lists GIS layers (berths, buoys), no ship calls; MyP…Port of Amsterdam open-data page (JS) lists GIS layers (berths, buoys), no ship calls; MyPort lock schedule (IJmuiden) redirects to Azure B2C login. Portbase PCS is partner-only. CBS StatLine 85598NED is cargo tonnes only (no vessel-call table found). Tier C: Eurostat mar_tf_qm (quarterly vessels & GT by main port and vessel type): https://ec.europa.eu/eurostat/databrowser/view/mar_tf_qm/default/table
Moerdijk NLMOENLCAggregates onlynoneopenEurostat CC BY 4.00
portofmoerdijk.nl has no public ship list; seagoing calls notified via Portbase (partner-o…portofmoerdijk.nl has no public ship list; seagoing calls notified via Portbase (partner-only). Check whether Moerdijk is a separate reporting port in mar_tf_qm. AIS needed.
Gdańsk PLGDNPLCAggregates onlyport_website_tableopenunclear0
vessels-in-port snapshot only (could be polled to derive calls). Maritime Office Gdynia um…vessels-in-port snapshot only (could be polled to derive calls). Maritime Office Gdynia umgdy.gov.pl ruch-statkow unreachable (ECONNREFUSED/timeout). Tier C: https://ec.europa.eu/eurostat/databrowser/view/mar_tf_qm/default/table (Vessels arriving in main ports by type/size, quarterly)
Szczecin PLSZZPLCAggregates onlyport_website_tableopenunclear02024-12-17 to 2024-12-17
Maritime Office Szczecin lists (Świnoujście/Police/Szczecin tables) show 'Aktualizacj…Maritime Office Szczecin lists (Świnoujście/Police/Szczecin tables) show 'Aktualizacja z dnia 2024-12-17' - defunct; port.szczecin.pl has no ship list (PCS closed). Tier C: https://ec.europa.eu/eurostat/databrowser/view/mar_tf_qm/default/table (Vessels arriving in main ports by type/size, quarterly); GUS 'Gospodarka morska w Polsce' yearbook
Świnoujście PLSWIPLCAggregates onlyport_website_tableopenunclear02024-12-17 to 2024-12-17
same UMS system as PLSZZ (frozen). Tier C: https://ec.europa.eu/eurostat/databrowser/view/…same UMS system as PLSZZ (frozen). Tier C: https://ec.europa.eu/eurostat/databrowser/view/mar_tf_qm/default/table (Vessels arriving in main ports by type/size, quarterly)
Sines PTSIEPTCAggregates onlypdf_bulletinopenunclear01978 to 2021
No public call list found on apsinesalgarve.pt (homepage + JUL page + 1 search). Sines lik…No public call list found on apsinesalgarve.pt (homepage + JUL page + 1 search). Sines likely runs on JUL (jul.nsw.pt, login only). Ask APS whether a LIVEDATA-like page exists. Also AMT monthly port market reports (amt-autoridade.pt).
Constanța (incl. Midia) ROCNDROCAggregates onlyopen_data_apiopenunclear0
Names only, no times; sample JSON in ROCND/raw. Daily recorder would give call dates. Mont…Names only, no times; sample JSON in ROCND/raw. Daily recorder would give call dates. Monthly statistics: https://www.portofconstantza.com/pn/page/np_statistici_port . Covers Midia/Mangalia under same authority. AIS needed for call times.
Burgas BGBOJBGDNo public datanonepaidPort Burgas EAD: operational report by registered e-mail subscription (EUR 20/month), users may not pass on or redistribute it0
No public list. BG PCS (bulpcs.vtmis.bg) login-only; bgports.bg has no ship movements page…No public list. BG PCS (bulpcs.vtmis.bg) login-only; bgports.bg has no ship movements page. Not bought. Tier C: Eurostat mar_tf_qm / BG NSI. AIS needed.
Calais FRCQFFRDNo public datanoneopen0
calais.vigiesip.eu exists but both nonauthent endpoints return []. Traffic is ferry-domina…calais.vigiesip.eu exists but both nonauthent endpoints return []. Traffic is ferry-dominated (P&O, DFDS, Irish Ferries): schedules derivable from operator timetables + AIS. Tier C: Port Boulogne Calais annual traffic figures; French SDES port statistics.
Dunkerque FRDKKFRDNo public dataais_onlyopenthird-party AIS widget (VesselFinder terms)0
No expected/at-berth list on site (sitemap checked). Tier C: monthly traffic statistics on…No expected/at-berth list on site (sitemap checked). Tier C: monthly traffic statistics on dunkerque-port.fr (chiffres clés).
Fos-sur-Mer FRFOSFRDNo public datapcs_webblockedunclear0Same GPMM PCS host as FRMRS; times out from both EU exits on 2026-11-10.
Le Havre FRLEHFRDNo public datanoneopenunclear0
haropaport.com now 200 via Paris (Imperva challenge only from HK). Checked homepage, escal…haropaport.com now 200 via Paris (Imperva challenge only from HK). Checked homepage, escales.haropaport.com (tourism site, not ship calls), Le Havre webapp (redirects to escales). No public Le Havre call list; PCS S)ONE login-only. DrakHAR public lists exist for Rouen only. Tier C: statistiques.haropaport.com; https://ec.europa.eu/eurostat/databrowser/view/mar_tf_qm/default/table
Marseille FRMRSFRDNo public datapcs_webblockedunclear0
Page 200 via Paris (now shows MESSAGE AVERTISSEMENT block, no maintenance text) but iframe…Page 200 via Paris (now shows MESSAGE AVERTISSEMENT block, no maintenance text) but iframe host pcs.marseille-port.fr and neptune-port.marseille-port.fr TCP-timeout via Paris and Amsterdam. data.gouv.fr API search (escales / marseille fos / GPMM): 0 datasets. Re-check later; likely A/B if PCS host comes back. Tier C: GPMM monthly traffic stats; https://ec.europa.eu/eurostat/databrowser/view/mar_tf_qm/default/table
Agioi Theodoroi GRAGTGRDNo public dataais_only0
Private Motor Oil Hellas refinery terminal; no public call list on moh.gr. Not surveyed be…Private Motor Oil Hellas refinery terminal; no public call list on moh.gr. Not surveyed beyond that (private terminal). Tier C fallback: ELSTAT maritime transport statistics (vessel arrivals by port, quarterly) and Eurostat mar_tf_qm (vessels by port, quarterly). AIS needed.
Patras GRGPAGRDNo public datanone0
patrasport.gr (OLPA) homepage and cruise page: no schedule, arrivals or statistics found; …patrasport.gr (OLPA) homepage and cruise page: no schedule, arrivals or statistics found; 1 web search. Tier C fallback: ELSTAT maritime transport statistics (vessel arrivals by port, quarterly) and Eurostat mar_tf_qm (vessels by port, quarterly). AIS needed (Italy ro-pax from South Port).
Ploče HRPLEHRDNo public datanoneopenunclear0
PCS described but not public. Aggregates: Croatian Bureau of Statistics (DZS) maritime tra…PCS described but not public. Aggregates: Croatian Bureau of Statistics (DZS) maritime transport (not checked).
Rijeka HRRJKHRDNo public datanoneblockedunclear0portauthority.hr: Cloudflare 520 (origin down) via Paris too. Nothing else tried.
Klaipėda LTKLJLTDNo public datanoneblockedunclear0
403 Cloudflare Just a moment challenge via Paris and Amsterdam (bot block, not geo); not b…403 Cloudflare Just a moment challenge via Paris and Amsterdam (bot block, not geo); not bypassed. Tier C: https://ec.europa.eu/eurostat/databrowser/view/mar_tf_qm/default/table; osp.stat.gov.lt
Marsaxlokk MTMARMTDNo public datanoneopenunclear0
Transport Malta (transport.gov.mt) returns Cloudflare 403. Aggregates: NSO Malta maritime …Transport Malta (transport.gov.mt) returns Cloudflare 403. Aggregates: NSO Malta maritime transport releases (not checked). AIS needed.
Galați ROGALRODNo public datanone0
apdmgalati.ro: no ship movement list (homepage + 1 search). Aggregates in APDM board repor…apdmgalati.ro: no ship movement list (homepage + 1 search). Aggregates in APDM board reports (PDF) and INS/Eurostat. AIS needed (Danube, river+sea vessels).