Otwarty dostęp do historycznej bazy danych opóźnień pociągów PKP Intercity w Polsce. Buduj na danych, które do tej pory nie były łatwo dostępne.
Wszystkie żądania wykonuj do poniższego adresu:
Powiadomienia o opóźnieniach na żywo są przydatne w trakcie podróży, ale brakowało ogólnodostępnej, historycznej bazy danych umożliwiającej analizy, tworzenie statystyk czy aplikacji analitycznych. Oficialne serwisy nie oferują przyjaznego API.
Spoznienia.me rozwiązuje ten problem. Codziennie automatyczny proces pobiera pełne informacje o trasach pociągów i ich realnym czasie przyjazdu/odjazdu (oraz powodach opóźnień), archiwizując je w bazie danych.
null).
W celu ochrony bazy danych przed nadmiernym obciążeniem, API posiada limity zapytań per adres IP. Obecny limit wynosi 20 zapytań na minutę z jednego adresu IP.
/train-runs
Pobiera listę skróconych informacji o kursach pociągów w danym dniu. Jest to przydatne do wyszukiwania danego pociągu przed pobraniem jego szczegółów.
YYYY-MM-DD (domyślnie wczoraj).curl -X 'GET' \
'https://api.spoznienia.me/train-runs?date=2026-02-17&station=zag%C3%B3rz' \
-H 'accept: application/json'
[
{
"id": "2026021733110",
"date": "2026-02-17",
"number": "33110",
"name": "Wetlina",
"category": "IC",
"from_station": "Zagórz",
"to_station": "Kraków Płaszów",
"is_domestic": true,
"occupancy": "Szacowana frekwencja w przedziale 50%-80%",
"scheduled_departure": "04:55:00",
"scheduled_arrival": "09:19:00",
"delay_at_destination": 6
},
{
"id": "2026021730112",
"date": "2026-02-17",
"number": "30112",
"name": "Bieszczady",
"category": "IC",
"from_station": "Kraków Główny",
"to_station": "Zagórz",
"is_domestic": true,
"occupancy": "Szacowana frekwencja w przedziale 50%-80%",
"scheduled_departure": "09:30:00",
"scheduled_arrival": "13:58:00",
"delay_at_destination": 0
}
]
| Pole | Typ | Opis |
|---|---|---|
| id | string | Unikalny identyfikator kursu (data + numer) |
| date | string | Data kursu (YYYY-MM-DD) |
| number | string | Numer pociągu |
| name | string | Nazwa pociągu |
| category | string | Kategoria (np. IC, EIP, TLK) |
| from_station | string | Stacja początkowa całej trasy |
| to_station | string | Stacja końcowa całej trasy |
| is_domestic | boolean | Czy pociąg jest krajowy (true) czy międzynarodowy (false) |
| occupancy | string | Przewidywana frekwencja |
| scheduled_departure | string | Planowy odjazd ze stacji początkowej (HH:MM:SS) |
| scheduled_arrival | string | Planowy przyjazd na stację końcową (HH:MM:SS) |
| delay_at_destination | integer | Opóźnienie na stacji końcowej (w minutach) |
/stations/{name}/schedule
Pobiera harmonogram (tablicę odjazdów i przyjazdów) dla konkretnej stacji w zadanym dniu. Pozwala sprawdzić punktualność pociągów zatrzymujących się na danej stacji, uwzględniając przystanki pośrednie.
YYYY-MM-DD (domyślnie wczoraj).fetch('https://api.spoznienia.me/stations/krosno/schedule?date=2026-01-07')
.then(response => response.json())
.then(data => console.log(data));
[
{
"train_number": "33110",
"train_category": "IC",
"from_station": "Zagórz",
"to_station": "Kraków Płaszów",
"scheduled_arrival": "06:09:00",
"scheduled_departure": "06:14:00",
"delay_arrival_min": 0,
"delay_departure_min": 10,
"is_delayed": true,
"train_id": "2026010733110"
},
{
"train_number": "30161",
"train_category": "TLK",
"from_station": "Kraków Główny",
"to_station": "Krosno",
"scheduled_arrival": "16:05:00",
"scheduled_departure": null,
"delay_arrival_min": 0,
"delay_departure_min": null,
"is_delayed": false,
"train_id": "2026010730161"
}
]
| Pole | Typ | Opis |
|---|---|---|
| train_number | string | Numer pociągu |
| train_category | string | Kategoria pociągu (np. IC, TLK) |
| from_station | string | Stacja początkowa trasy |
| to_station | string | Stacja końcowa trasy |
| scheduled_arrival | string | Planowany czas przyjazdu na badaną stację (HH:MM:SS) |
| scheduled_departure | string | Planowany czas odjazdu z badanej stacji (HH:MM:SS) |
| delay_arrival_min | integer | Rzeczywiste opóźnienie przyjazdu (min) |
| delay_departure_min | integer | Rzeczywiste opóźnienie odjazdu (min) |
| is_delayed | boolean | Flagowa informacja czy pociąg jest opóźniony na tej stacji |
| train_id | string | Unikalny identyfikator pociągu w bazie |
/train-runs/{train_id}
Pobiera pełne dane o wybranym kursie pociągu (uzyskane m.in. z endpointu `/train-runs`), włączając w to bardzo szczegółową listę wszystkich przystanków, opóźnień na każdym z nich oraz zgłoszonych utrudnień (awarie, blokady trasy itp.).
202603165322).curl -X 'GET' \
'https://api.spoznienia.me/train-runs/2026031233112' \
-H 'accept: application/json'
{
"id": "2026031233112",
"date": "2026-03-12",
"number": "33112",
"name": "Bieszczady",
"category": "IC",
"from_station": "Zagórz",
"to_station": "Kraków Główny",
"is_domestic": true,
"occupancy": "Szacowana frekwencja poniżej 50%",
"scheduled_departure": "14:50:00",
"scheduled_arrival": "19:21:00",
"delay_at_destination": 0,
"stops": [
{
"station_name": "Zagórz",
"stop_order": 1,
"arrival_time": null,
"departure_time": "14:50:00",
"delay_minutes_arrival": null,
"delay_minutes_departure": 0,
"distance_from_start_km": 0.0,
"is_domestic": true,
"latitude": 49.5165,
"longitude": 22.2687,
"difficulties": []
},
{
"station_name": "Krosno",
"stop_order": 4,
"arrival_time": "16:06:00",
"departure_time": "16:16:00",
"delay_minutes_arrival": 0,
"delay_minutes_departure": 7,
"distance_from_start_km": 46.1,
"is_domestic": true,
"latitude": 49.6917,
"longitude": 21.7513,
"difficulties": [
{
"description": "Oczekiwanie na skomunikowanie",
"location": null
}
]
},
{
"station_name": "Kraków Główny",
"stop_order": 13,
"arrival_time": "19:21:00",
"departure_time": null,
"delay_minutes_arrival": 0,
"delay_minutes_departure": null,
"distance_from_start_km": 247.1,
"is_domestic": true,
"latitude": 50.0667,
"longitude": 19.9472,
"difficulties": []
}
]
}
| Pole | Opis |
|---|---|
| station_name | Nazwa stacji pośredniej |
| stop_order | Kolejność przystanku na trasie (od 1) |
| arrival_time | Planowy czas przyjazdu (HH:MM:SS) |
| departure_time | Planowy czas odjazdu (HH:MM:SS) |
| delay_minutes_arrival | Opóźnienie przyjazdu (minuty) |
| delay_minutes_departure | Opóźnienie odjazdu (minuty) |
| distance_from_start_km | Dystans od stacji początkowej (km) - dotyczy tylko stacji krajowych |
| is_domestic | Czy stacja znajduje się na terenie Polski (true/false) |
| latitude | Szerokość geograficzna stacji (opcjonalnie) |
| longitude | Długość geograficzna stacji (opcjonalnie) |
| difficulties | Lista obiektów ze szczegółami utrudnienia (pola: description, location) |