SYSTEM all green source pkp.pl queue 12,941 routes p99 latency 312ms dataflirt.com · scraper/pkp-pl
RUN : 14 active pipelines : pkp.pl live

Polish railway data,
at infrastructure scale.

We extract train schedules, dynamic pricing, real-time delays, platform assignments, and route transfers from pkp.pl. Delivered as clean JSON, CSV, or Parquet to S3, BigQuery, or Snowflake on your cadence.

Routes extracted
412K /day
Price updates
1.2M /24h
Delay signals
89K /run
Active pipelines
14
Uptime
99.94%
Data Dictionary

Every field we extract from pkp.pl

Structured, schema-consistent data across all major object types — delivered clean, typed, and ready to query.

Complete list of extractable fields for Train Schedules objects from pkp.pl. All fields typed and schema-versioned.

train_idcarriertrain_typeorigin_stationdestination_stationdeparture_timearrival_timeduration_minutesroute_stopstransfer_count
train_schedules
● 200 OK
"train_id": "EIP 1600",
"carrier": "PKP Intercity",
"train_type": "Express InterCity Premium",
"origin_station": "Warszawa Centralna",
"destination_station": "Wrocław Główny",
"departure_time": "2026-05-12T08:15:00Z",
"arrival_time": "2026-05-12T12:05:00Z",
"duration_minutes": 230
# train_idcarriertrain_typeorigin_stationdestination_stationdeparture_time
1
2
3

Complete list of extractable fields for Pricing & Fares objects from pkp.pl. All fields typed and schema-versioned.

train_idclass_typebase_pricepromo_pricecurrencyticket_typeavailable_seatsreservation_requiredscraped_at
pricing_& fares
● 200 OK
"train_id": "EIP 1600",
"class_type": "Class 2",
"base_price": 169.0,
"promo_price": 119.0,
"currency": "PLN",
"ticket_type": "Super Promo",
"reservation_required": true
# train_idclass_typebase_pricepromo_pricecurrencyticket_type
1
2
3

Complete list of extractable fields for Real-Time Status objects from pkp.pl. All fields typed and schema-versioned.

train_idcurrent_stationscheduled_arrivalactual_arrivaldelay_minutesdelay_causeplatformtrackupdated_at
real-time_status
● 200 OK
"train_id": "IC 3514",
"current_station": "Kraków Główny",
"scheduled_arrival": "2026-05-12T14:30:00Z",
"actual_arrival": "2026-05-12T14:45:00Z",
"delay_minutes": 15,
"platform": "3",
"track": "1"
# train_idcurrent_stationscheduled_arrivalactual_arrivaldelay_minutesdelay_cause
1
2
3

Complete list of extractable fields for Station Boards objects from pkp.pl. All fields typed and schema-versioned.

station_idstation_nameboard_typetrain_numberdirectionscheduled_timeplatformcarrierstatus
station_boards
● 200 OK
"station_id": "5100065",
"station_name": "Gdańsk Główny",
"board_type": "DEPARTURE",
"train_number": "TLK 58110",
"direction": "Szczecin Główny",
"scheduled_time": "2026-05-12T09:45:00Z",
"status": "ON_TIME"
# station_idstation_nameboard_typetrain_numberdirectionscheduled_time
1
2
3

Complete list of extractable fields for Route & Transfers objects from pkp.pl. All fields typed and schema-versioned.

search_idorigin_iddestination_idtotal_durationtransfer_stationslayover_durationstotal_distance_kmroute_map_urlvalidity_date
route_& transfers
● 200 OK
"search_id": "req_992831",
"origin_id": "5100065",
"destination_id": "5100028",
"total_duration": 410,
"transfer_stations": "['Poznań Główny']",
"layover_durations": "[25]",
"total_distance_km": 542
# search_idorigin_iddestination_idtotal_durationtransfer_stationslayover_durations
1
2
3

Capabilities

Extract every layer of the Polish railway network

Our pkp.pl scraper handles dynamic search forms, session tokens, and real-time polling to deliver accurate schedule and pricing data across all major carriers.

Full Schedule Extraction

Timetables across all PKP carriers including EIP, EIC, IC, and TLK, captured with origin and destination metadata.

Dynamic Fare Tracking

Capture base fares, promotional tiers, and class variations across routes as departure dates approach.

Real-Time Delay Monitoring

Extract live delay minutes, platform changes, and track assignments from Portal Pasażera integrations.

Multi-Leg Journey Mapping

Parse complex transfer logic, layover durations, and connecting train IDs for multi-stop journeys.

Station Board Scraping

Simulate physical departure and arrival boards for any station in the Polish railway network.

Carrier Identification

Distinguish between PKP Intercity, Polregio, and regional operators mapped on the platform.

Seat Availability Signals

Monitor reservation requirements, class capacity indicators, and sold-out flags per route.

Automated Session Handling

Manage the complex token exchanges required to load pricing beyond standard timetables.

Scheduled + Streaming Modes

Run daily timetable syncs or configure high-frequency pipelines for real-time status updates.

// engagement pipeline

From station list to warehouse record

Brief in. Clean data out.

Define Scope
d 0

Provide station pairs, train IDs, or regional boundaries. We design the extraction schema together.

Pipeline Build
d 2–4

We configure Scrapy / Playwright crawlers, proxy rotation, and session management for pkp.pl search forms.

Validation & QA
d 4–6

Schema validation, null-rate checks, and delay-outlier detection before full launch.

Delivery
ongoing

JSON / CSV / Parquet pushed to your S3 bucket, BigQuery dataset, or Snowflake stage on agreed cadence.

Under the hood

How our PKP pipeline handles the hard parts

State owned transport networks use complex session management and rate limiting. Here is how we ensure reliable data delivery.

pipeline-monitor · pkp.pl · live ● active
// fingerprinting
Identity rotation
TLS fingerprintrandomised
User-agentrotated
IP poolresidential
Challenges blocked0
// pagination
Page coverage
48,291 pages queued running
// observability
Pipeline health
99.9%
uptime
142ms
p99 lat
0.3%
null rate
2
alerts
Anti-bot layer
Residential proxies + TLS fingerprinting

Bypass basic rate limits on PKP schedule searches using ISP-grade Polish IPs, ensuring high concurrency without triggering firewall blocks.

Dynamic form submission
Playwright for stateful searches

PKP requires complex POST requests with session tokens to retrieve pricing. We automate this flow using headless browsers to capture accurate fare data.

Real-time data sync
Polling delay endpoints

Extracting live delays requires high-frequency polling of undocumented internal API endpoints. We manage the request load to capture accurate arrival estimates.

Schema stability
Fallback chains for timetable DOM

The timetable structure varies by carrier. We use multiple XPath and regex fallbacks to ensure clean data extraction regardless of UI updates.

Change detection
Only re-scrape altered schedules

Maintain a hash index of timetables to only emit diffs when a carrier updates their schedule, reducing compute cost and downstream storage.

Applications

Who uses PKP data and how

Teams across industries use pkp.pl data to build competitive products and smarter operations.

01
Travel Aggregation

OTAs and meta-search engines integrate PKP schedules and pricing into their multi-modal routing engines.

02
Delay Prediction Models

ML teams use historical delay data, weather correlations, and route congestion to train predictive ETA models.

03
Dynamic Pricing Analysis

Competitors and analysts track EIP and IC fare fluctuations against booking windows.

04
Supply Chain & Logistics

Freight operators monitor passenger network congestion to optimise cargo routing on shared infrastructure.

05
Corporate Travel Management

TMCs sync live schedules and fares to internal booking portals for enterprise clients.

06
Infrastructure Planning

Consultancies analyse route frequency and capacity metrics for regional transport studies.

Why DataFlirt

"Polish railway data is highly fragmented across carriers and dynamic search forms. Capturing it reliably requires stateful session management at scale."

Most teams underestimate the complexity of scraping state owned transport networks. Reliable pkp.pl extraction requires managing session tokens for pricing, handling undocumented delay APIs, and parsing complex multi leg journeys. DataFlirt absorbs that complexity so your engineers can focus on routing algorithms, not the infrastructure.

Technical Spec

PKP scraper technical capabilities

Everything supported by our pkp.pl scraper — rendered SPA elements, auth walls, rate-limit evasion and beyond.

Timetable extraction
Full schedule across all carriers and dates
Supported
Dynamic pricing
Class 1/2 fares and promotional tiers
Supported
Real-time delays
Live minute delays and platform changes
Supported
Transfer mapping
Layover times and connecting train IDs
Supported
Polish residential proxies
Local IPs for rate limit avoidance
Supported
Seat map extraction
Availability indicators per class
Supported
User purchase history
Gated behind user authentication
Partial
Payment instrument details
Strictly confidential billing data
Partial
Infrastructure

Infrastructure powering the PKP pipeline

Open-source tooling on proven cloud infra — no vendor lock-in, full observability.

ScrapyPlaywrightPython 3.12RedisPostgreSQLApache AirflowAWS LambdaS3CloudWatch2CaptchaCapSolverResidential ProxiesDockerKubernetesGrafanaPrometheus
Scrapy + Playwright Stack

Scrapy handles crawl orchestration and deduplication. Playwright handles dynamic form submissions and session tokens required for pricing.

Residential Proxy Infrastructure

Polish ISP proxies avoid geographic blocking and rate limits, ensuring high success rates for schedule searches.

Cloud-Native Orchestration

ECS and Lambda provide burst scaling during peak travel hours, orchestrated by Airflow for strict SLA adherence.

Output & Delivery

Your data, your destination

Data delivered to where your team already works — no new tooling required.

JSON
Newline-delimited or nested objects
CSV
Flat file with typed columns
XLS
Excel compatible tabular data
Parquet
Columnar format for data warehouses
AWS S3
Direct bucket delivery
Webhook
HTTP POST per record for real-time updates
API
REST endpoint for on-demand querying
BigQuery
Streamed directly into your dataset
Snowflake
Stage and COPY INTO workflow
PostgreSQL
Upsert into your existing schema
S3
Direct bucket delivery — compatible with any data lake
// faq

Common questions.

About pkp.pl scraping, legality, and pipeline operations.

Ask us directly →
Is scraping pkp.pl legal?

Extracting public timetables and pricing is generally permissible for non-commercial or fair commercial use, provided it does not disrupt their infrastructure. We do not extract personal user data. Clients should review local regulations regarding transport data usage.

How do you handle the dynamic search forms?

We use Playwright to simulate the exact form submission flow, managing session tokens and cookies required to load the final pricing page accurately.

Can you track real-time train delays?

Yes. We poll the live status endpoints to extract current delays, platform changes, and estimated arrival times across the network.

Do you capture data for all carriers on PKP?

Yes. The platform aggregates PKP Intercity, Polregio, and regional carriers. We extract the carrier metadata for every route.

How fresh is the pricing data?

Pricing pipelines can run at high frequency, capturing fare changes and promotional tier availability as departure times approach.

What is the minimum viable engagement?

We typically start with a defined set of station pairs or a specific region with daily delivery. Contact us for a custom quote based on your volume requirements.

$ dataflirt scope --new-project --source=pkp.pl ready

Tell us what
to extract.
We do the rest.

20-minute scoping call. Pilot dataset within the week. Production within two. Whether you need a daily timetable dump or a real-time delay monitoring feed, we scope, build, and operate the pipeline. Tell us what you need.

hello@dataflirt.com · Bengaluru · IST · typical reply < 4h
Related Scrapers

More in travel flights hotels buses

Services

Data Extraction for Every Industry

View All Services →